C#网页辅助制作 第三节 构造出登陆密码密文
在上一节里我们知道了QQ密码的加密方法了,是用三次MD5加密再结合验证码进行一次MD5加密而得的。我开始做时使用的是标准的MD5加密函数,这样子加密出来的密文和QQ网页上加密出来的不同,我想应该QQ里可能用的不是标准的MD5加密吧。于是乎问题出来了,怎么办呢?仿造他的加密函数自己写一个出来??这个方法我试了一个上午搞得我头都大了,所以放弃了。上网查了一下,原来C#里也可以调用到外部的js代码的哦。呵呵, 这下好了。只要把他的comm.js 调用进来不是就简单得多了嘛。下面看我怎么调用的吧。
首先要拖一个webBrowser出来,我们要通过这个东西调用js里的函数,设置webBrowser的属性为隐藏就好了。这样不会挡着我们。
命名空间引用:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Security.Permissions;
using System.Text.RegularExpressions;
初始化方法:
System.IO.FileInfo file = new System.IO.FileInfo(@"E:\vg\vg\vg\js.htm");//注意文件的位置位置不同自己改啊,js.htm网页文件里调用了comm.js脚本文件
// WebBrowser控件显示的网页路径
webBrowser1.Url = new Uri(file.FullName);
// 将当前类设置为可由脚本访问
webBrowser1.ObjectForScripting = this;
调用方法:
/// <summary>
/// //得到加密后的密码密文
/// </summary>
/// <param name="pass">密码</param>
/// <param name="aVerifyCode">验证码</param>
/// <returns></returns>
private string Preprocess(string pass, string aVerifyCode)
{
string strReturn = "";
object[] objects = new object;
object[] o = new object[] { pass };
object dd = webBrowser1.Document.InvokeScript("md5_3", o);//调用comm.js里的md5_3这个函数,o是传入参数
object[] b = new object[] { dd.ToString() + aVerifyCode.ToUpper() };
strReturn = (webBrowser1.Document.InvokeScript("md5", b)).ToString(););//调用comm.js里的md5这个函数,b是传入的参数
return strReturn;
}
///////////////////////////js.html文件的内容///////////////////////////////////
<html>
<head>
<SCRIPT language=javascript src="comm.js"> <!--注意你的js文件的位置哦-->
</head>
<body>d
</body>
</html>
////////////////////////////////////////////////////////////////////////////////////
另外要提醒你的是:一定要在定义类之前加上这么一句: 否则可能调用会失败。
下面是我的全部代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Security.Permissions;
using System.Text.RegularExpressions;
namespace WebSiteTest
{
public partial class Form1 : Form
{
/// <summary>
/// 存储操作中的Cookie
/// </summary>
private CookieContainer cc = new CookieContainer();
public Form1()
{
InitializeComponent();
System.IO.FileInfo file = new System.IO.FileInfo(@"E:\vg\vg\vg\js.htm");//注意文件的位置啊
// WebBrowser控件显示的网页路径
webBrowser1.Url = new Uri(file.FullName);
// 将当前类设置为可由脚本访问
webBrowser1.ObjectForScripting = this;
// 将当前类设置为可由脚本访问
webBrowser1.ObjectForScripting = this;
}
/// <summary>
/// //得到加密后的密码和验证码
/// </summary>
/// <param name="pass"></param>
/// <param name="aVerifyCode"></param>
/// <returns></returns>
private string Preprocess(string pass, string aVerifyCode)
{
string strReturn = "";
object[] objects = new object;
object[] o = new object[] { pass };
object dd = webBrowser1.Document.InvokeScript("md5_3", o);
object[] b = new object[] { dd.ToString() + aVerifyCode.ToUpper() };
strReturn = (webBrowser1.Document.InvokeScript("md5", b)).ToString();
return strReturn;
}
}
}
QQ密码是MD5跟base64双重加密吧 gooooooooooood 学习一下。。 gooooooooood 谢谢LZ:lol 还有几节呢,怎么不出呀 谢谢LZ ····
:D 头两篇都看了,再看看这篇 回复看看.太短了还不行. 学习了啊,呵呵 學習一下怎麼做外掛 看看。学习楼主,后面的文章什么时候出? 来学习啦,还有后面的教程吗? 继续顶起。。。。
页:
[1]
2