首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

大伙平时周末都忙啥?昨天没事研究了上QQ自动登录的,java实现的代码,有人要么

2012-11-05 
大伙平时周末都忙啥?昨天没事研究了下QQ自动登录的,java实现的代码,有人要么?周末闲着没事,看朋友在玩腾迅

大伙平时周末都忙啥?昨天没事研究了下QQ自动登录的,java实现的代码,有人要么?

周末闲着没事,看朋友在玩腾迅的那些个SNS游戏,打趣问我以前不是写过kaixin001的外挂程序,为啥不干脆再写个腾讯的,毕竟腾讯的用户多很多。于是也想尝试下。可是一开始就卡在QQ自动登录这里了~~

先是验证码的问题。自动识别验证码-。-没研究过,弄不出来。。只好采取折中的办法:自动把验证码图片下载下来放到本地目录,同时将cookie verifysession码给保存起来,作为登录时的cookie提交。

开玩开心网写外挂的思路,把form表单和隐藏域的值提交到QQ登录的表单,发现老是密码错误。。。觉得不对劲,于是截了个包看了下。果然,是加过密的密码提交的。。。

可以肯定的是在客户端JS加密,于是在一堆JS文件中翻出一个comm.js,找到了加密的那段JS。心想偷个懒先,JAVA6里不是可以用ScriptEngine来调用JS函数嘛,于是写了段JAVA调用JS的代码,将原始密码加密、发送。。。。还是登录失败!!

于是慢慢调试,发现貌似ScriptEngine调用的JS函数和用JS直接调用该函数,得到的结果竟然不一致!!(由于函数里有大量位运算操作,可能是Java的ScriptEngine和页面JS解释器的位数不一致吧?哪位仁兄有去仔细研究过的,来共享下知识嘛~~)。。。

没办法,只好自己去研究下那个加密函数,看了一下午才弄明白。。
QQ密码加密时,是先将初始密码先经过md5加密得到一个32位的密文,再将密文+4位验证码得到36位密文,再将36位密文进行三次MD5加密,就得到最后的发送密码了。
看来如果想通过截取QQ数据包来破解qq密码的可能性是几乎不存在了。。至少以俺的水平是不可能做到了。。。 T_T

接下来的“抢车位”自动停车、贴条的啥功能,“开心农场”种地偷菜的功能,技术上应该没多大问题了,可问题是…周末过完了。。。哎~~~ 有源码共享吗?package util.mygametools.qq;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5Security {private final static char[] hexDigits = { '0', '1', '2', '3', '4', '5','6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };private static String bytesToHex(byte[] bytes) {StringBuffer sb = new StringBuffer();int t;for (int i = 0; i < 16; i++) {t = bytes[i];if (t < 0)t += 256;sb.append(hexDigits[(t >>> 4)]);sb.append(hexDigits[(t % 16)]);}return sb.toString();}public static String md5(String input) throws Exception {return code(input, 32);}public static String code(String input, int bit) throws Exception {try {MessageDigest md = MessageDigest.getInstance(System.getProperty("MD5.algorithm", "MD5"));if (bit == 16)return bytesToHex(md.digest(input.getBytes("utf-8"))).substring(8, 24);return bytesToHex(md.digest(input.getBytes("utf-8")));} catch (NoSuchAlgorithmException e) {e.printStackTrace();throw new Exception("Could not found MD5 algorithm.", e);}}public static String md5_3(String b) throws Exception{MessageDigest md = MessageDigest.getInstance(System.getProperty("MD5.algorithm", "MD5"));byte[] a = md.digest(b.getBytes());a = md.digest(a);a = md.digest(a);return bytesToHex(a);}} 5 楼 donnki 2009-07-20   懒得写注释了。。要是啥地方不明白就问我吧 6 楼 wiwiluo 2010-04-10   学习了,最近在搞RSA加密,也是在前台自动生成一个随机数,用脚本对随机数加密,然后用加密的随机数加密密码,再将两个加密数据提交到后台,进行解密。 7 楼 john2007 2010-07-02   好文,要顶下的。 8 楼 nighthawk 2010-07-04   不错,有点想法

热点排行