C#如何实现QQ自动登录

发布时间:2016-11-07 00:00:00 编辑:嘉辉 手机版

  现在拥有QQ的人已经很多了,而且不少人同时拥有几个账号,遗憾的是QQ只能设置一个号码自动登录,如果想同时登录几个账号那么必须一个一个手动输入,因此,网上也出现了不少QQ自动登录器,这究竟是怎么实现的呢?其实原理非常简单。

  QQ是支持命令行登录的,也就是说QQ的exe程序支持参数,下面举一个参数登录的例子:

  e:\qq\qq.exe /START QQUIN:00000000 PWDHASH:4QrcORm6Wau+VuBX9g+IPg== /STAT:41

  比如有上面这个参数,前面的e:\qq\qq.exe是QQ的程序路径,/START QQUIN:是保留字段,后面紧跟的就是需要登录的QQ号码,PWDHASH:是保留字段,后面紧跟的是该QQ号码的密码,不过这个密码是加密的,我们等下再说,/STAT:41是表示登录状态,其中41表示正常登录,而40表示隐身,目前一直到QQ2009好像只支持这两个状态,不支持其他诸如忙碌,静音,离开等状态,有了这个参数,我们实现自动登录就方便多了!

  这个参数里面其他都好说,唯独这个加密的密码我们不好处理,因为我们必须把密码转换为加密方式,其实,QQ密码的加密方式也是非常简单的,先用MD5的HASH进行一次加密,然后把结果再用一次Base64加密即可得到这个加密字符串,有了这个信息,我们剩下的就好办多了!

  很幸运的是用C#处理这个加密非常简单,有个Convert.ToBase64String(byte[])可以直接进行base64加密,而System.Security.Cryptography这个系统类里有md5.ComputeHash这个方法直接可以进行Hash加密,所以,密码的加密也就变得很简单了,下面对这部分代码进行一个详细的说明:

  首先引用系统类 using System.Security.Cryptography;然后在任意一个按钮事件中写下如下代码:

  1.MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

  2.byte[] pass=Encoding.Default.GetBytes("要加密的QQ密码");

  3.string command = " /START QQUIN:" + "00000000"+ " PWDHASH:" + Convert.ToBase64String(md5.ComputeHash(pass)) + " /STAT:" + "41";

  这样短短的3行代码就构造得到了QQ的登录参数command变量,剩下的只要用System.Diagnostics.Process.Start这个方法去运行这个带参数的QQ.exe就可以了!

  我自己写了这个QQ自动登录的程序,比较简单,当然程序中我没用Convert.ToBase64String这个方法去用Base64加密,而是自己写了Base64的加密方法,主要是为了熟悉一下C#类的使用,另外,程序中还用到了一些基本控件,比如timer,openfiledialog,listview等,适合初学者掌握一些基本控件的用法!

  这里我把源码一并给出,这也是我第一个C#上手程序,虽然只用了短短几个小时,但是我已经可以体会到C#强大的功能,今后还会继续深入研究!

  ps:程序基本完成了自动登录的全过程,但是没有完善保存列表的功能,这个也是比较简单的,下次完善吧,就算留给你们一个课后作业,高手不要见笑,毕竟你们看来程序还是非常简单的,至少我自己写完也是有这个感觉!如果你们谁完善了别忘了发给小焱一份哦!

  程序使用VisualStudio2005 编译完成,如果想单独运行请确保已经安装.net framework 2.0 框架!

本文已影响876
+1
0