年底了,先预祝各位朋友新年快乐。最近这段时间工作比较忙,晚上就一直在写一个关于QQ空间助手的工具,遇到了不少问题。但最大的问题是,QQ空间助手我不知道应该做哪些功能进去。谁有好的点子麻烦提供一点吧。QQ空间助手工具个人觉得最麻烦一点就是登陆部分。下面是登陆的加密算法,貌似在WebQQ上也能用,只是登陆时有几个参数不同。
class PasswordHelper
{
/// <summary>
/// 根据QQ号码和验证码加密密码
/// </summary>
/// <param name="qqNum">QQ号码
/// <param name="password">QQ密码
/// <param name="verifycode">验证码
/// <returns>密码密文</returns>
public static string GetPassword(string qqNum, string password, string verifycode)
{
//uin为QQ号码转换为16位的16进制
int qq;
int.TryParse(qqNum, out qq);
qqNum = qq.ToString("x");
qqNum = qqNum.PadLeft(16, '0');
String P = hexchar2bin(md5(password));
String U = md5(P + hexchar2bin(qqNum)).ToUpper();
String V = md5(U + verifycode.ToUpper()).ToUpper();
return V;
}
public static string md5(string input)
{
byte[] buffer = MD5.Create().ComputeHash(Encoding.GetEncoding("ISO-8859-1").GetBytes(input));
return binl2hex(buffer);
}
public static string binl2hex(byte[] buffer)
{
StringBuilder builder = new StringBuilder();
for (int i = 0; i &amp;lt; buffer.Length; i++)
{
builder.Append(buffer[i].ToString("x2"));
}
return builder.ToString();
}
public static string hexchar2bin(string passWord)
{
StringBuilder builder = new StringBuilder();
for (int i = 0; i &amp;lt; passWord.Length; i = i + 2)
{
builder.Append(Convert.ToChar(Convert.ToInt32(passWord.Substring(i, 2), 16)));
}
return builder.ToString();
}
}
登陆成功返回的内容
本博客所有文章如无特别注明均为原创
如果觉得对你有帮助,可以通过下方打赏对作者表示鼓励
本文采用知识共享署名-非商业性使用-相同方式共享
如若转载,请注明出处:《C#最新版QQ空间密码加密算法》https://www.fangsi.net/710.html
评论列表(9条)
WebBrowser占内存和带宽啊。
现在QQ空间访客采集有好多不太稳定了,有什么好办法吗?
@闯荡:我不明白你说的好多不太稳定是什么意思哦。
我的方法是直接把他的加密算法的js代码,做成资源文件,要用的时候用.net执行js加密方法。这样再也不怕Tx换算法了。
@faith:你这样可以,而且省事。
真心不错,逆向JS代码搞出来的?
@Soar、毅:跟据JS加密的原理,然后做相同的处理就行了。
正好赶上新博文,哈哈。
上周我也做了个QQ空间的小程序,采集访客的,我是偷懒用的webbrowser,非POST。
难点在于skey的获取(可通过cookie获取)、验证码的判断。
空间助手功能的话,不建议做太多娱乐功能,可以有说说批量发表、批量赞说说赞日志、日志发表、签到、最新访客收集(用于营销,比如收集指定某QQ的访客进行EDM精准推送)等等,其他没想到。
@天空:WebBrowser取cookie好像还比较方便吧,验证码的判断应该不需要程序处理吧。空间助手我现在打算做批量点赞,定时说说,日志发表就不做了。处理那些html编辑器的内容比较麻烦。访客收集可以做进去。还要加一个批量对好友留言。