这个封包解密如何解密?

2010年1月 专题开发/技术/项目大版内专家分月排行榜第二2009年12月 专题开发/技术/项目大版内专家分月排行榜第二2009年11月 专题开发/技术/项目大版内专家分月排行榜第二2009年10月 专题开发/技术/项目大版内专家分月排行榜第二2009年9月 专题开发/技术/项目大版内专家分月排行榜第二2009年8月 专题开发/技术/项目大版内专家分月排行榜第二2009年7月 专题开发/技术/项目大版内专家分月排行榜第二
2010年3月 专题开发/技术/项目大版内专家分月排行榜第三2010年2月 专题开发/技术/项目大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。封包加密解密-02
前面我们介绍了最常会被用在封包加密解密算法中的指令.本节开始教大家些入门的知识,如何去分析封包数据.
分析封包数据主要分两方面
一,用肉眼看,再动手写代码测试,对于简单算法的封包还是容易搞定的.
二,动态调试,对于复杂算法的封包就只能这样才能跟踪分析出他的算法.
本章教材会全部都讲解到,当然先介绍第一方式,用肉眼来看.这可是件幸苦的事哟,大家准备好防辐射的眼镜与眼药水吧.可千万别用眼过度,要记得多做做眼保健操哦.
要想用肉眼分析封包,就得要有被加密前的明文内容,与被加密后的封包数据.只有这样才能用眼来看,来分析.如果你只有一段密文而没有对应的明文,就只能扯蛋了.
对于获取加密后的封包很简单,大家完全可以自已用模块里的截包功能来编写个工具出来,也可以找一些现成的封包拦截工具来用,例如老牌的WPE这个软件.
明文包又如何得到呢?比如说我们在游戏里要发言一段文本内容,同时拦截下这段发出的封包,就可以肯定这条包里有包含着某些文本内容了..只需要多截几条不同文本的聊天封包,进行对应就能简单的分析出来相应的明文文本对应被加密后的封包中哪些数据.
下面先来介绍些入门知识.
开一个IE浏览器,打开百度网站
在搜索框输入
后运行WPE软件,选择IE的进程,点击顺三角按钮开始拦截封包.在百度里点搜索.会被WPE拦载下数据包..点击黑方框的停止按钮,就可以查看被拦截下来的那些数据包了.
用WPE拦截封包.
找到与IE地址栏里显示的那条封包数据 GET
/s?wd= 这条 . 在WPE的菜单-&文件-&另存为-&文本文件 保存封包数据文本.下面就是这条封包数据.
16 192.168.1.10 220.181.6.19 429 Send
54 20 2F 73 3F 77 64 3D 34 32 37 32 34 39 GET
/s?wd=427249
20 48 54 54 50 2F 31 2E 31 00D0 2D 41 67 65 6E 74 3A 20 4D 6F 7A 69 6C 6C 61 2F -Agent:
00E0 34 2E 30 20 28 63 6F 6D 70 61 74 69 62 6C 65 3B 4.0
00F0 20 4D 53 49 45 20 37 2E 30 3B 20 57 69 6E 64 6F MSIE 7.0;
20 4E 54 20 35 2E 31 3B 20 54 72 69 64 65 ws NT 5.1;
2F 34 2E 30 29 0D
0A 41 63 63 65 70 74 2D nt/4.0)..Accept-
E 63 6F 64 69 6E 67 3A 20 67 7A 69 70 2C 20 Encoding:
66 6C 61 74 65 0D 0A 48 6F 73 74 3A 20 77 deflate..Host:
2E 62 61 69 64 75 2E 63 6F 6D 0D 0A 43 6F
E 65 63 74 69 6F 6E 3A 20 4B 65 65 70 2D 41 nnection:
76 65 0D 0A 43 6F 6F 6B 69 65 3A 20 42 41 live..Cookie:
55 49 44 3D 42 42 35 46 34 46 39 43 34 35
IDUID=BB5F4F9C45
38 30 43 35 33 31 31 44 35 38 44 45 43 45
32 36 45 46 3A 46 47 3D 31 3B 20 42 44 5F 3026EF:FG=1;
01A0 55 54 4B 5F 44 56 54 3D 31 这个点号来表示.这对于我们要进行解密封包是没有作用的.例如图上的 红色十六进制数据 48 54 54 50 2F 31 2E 31 0D
0A 41 63 63"," ")
输出调试文本(到文本(字节集封包))
上面说的是明文包,明文包自然是无需解密.下面再用WPE拦截在百度 里搜 外挂作坊 看看会截到什么样的包?
13 192.168.1.10 220.181.6.19 445 Send
54 20 2F 73 3F 77 64 3D 37 25 ����%0020 下面我们把这一切都转为十进制字节集来再分析.
输出调试文本
(字节集到十进制 (到字节集 (“218.60.134.170”), “,”))输出调试文本
(字节集到十进制 (十六进制到字节集 (“3A 39
30 26 3E 38 26 39 3B 3C 26 39 3F 38”, “ ”)))
50,49,56,46,54,48,46,49,51,52,46,49,55,48
* 58,57,48,38,62,56,38,57,59,60,38,57,63,56
明文与密文的对照结果,确实都相差着8...那么在这都相差8的背后有没有其它什么玄机呢?如果不是采用加减乘除的方式,那就该是位运算或密码表了.对于密码表以后再介绍.
如果想知道是不是通过位运算,那就得转换成二进制才能更直观的分析..
把字节集转换为二进制文本输出
明文=00110010 00110001 00111000 00101110 00110110 00110000 00101110 00110001 00110011 00110100 00101110 00110001 00110111 00110000 密文=00111010 00111001 00110000 00100110 00111110 00111000 00100110 00111001 00111011 00111100 00100110 00111001 00111111 00111000
8=00111010
因为明文跟密文之间总是相差8,所以我们要重点看看这两段的二进制里与8倒底有什么关系.
在前一节教材里说位运算里最多会被用到的一般都是
XOR 位异或.看看上面的明文与密文间的第四位的结果,只要明文第四位=8 加密后该位就变成0了,,若明文第四位=0 则加密后就成1了.看起来只是把第四位进行简单的反过来而已.而 XOR
则正好符合这种反位的结果.当然
NOT 位取反
也是用来反位的,但 NOT 是把所有的位都反过来,而不能把指定的位反过来.
所以这段数据,只需要把明文数据位异或8就是加密了,把密文数据再次位异或8又能恢复成明文.这就是位异或的最大好处,可以即方便又简单的来进行加密与恢复,这才是导致位异或在可逆算法中被应用最多的原因.
上面的明文与密文用位与 位或 移位
等都无法把全部明文都算成与密文完全相同的结果.
位异或 能把指定的位翻过来
位与&& 都是1时才为1
位或&& 都是0时才为0
记住上面的规则..
算法的代码
只要明白了如何算后,写算法的代码就好办了.在 CALL技术-07
的那节里的客户端发送的封包就是用了这种 XOR
的运算方式写的...
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

参考资料

 

随机推荐