【转自看雪】迅雷协议分析 by theOcrat
:angry:有性趣的看看吧~
[table=98%][tr][td][color=#333333]标 题:[/color][color=#000000] 【原创】迅雷协议分析[/color][color=#666666]
[color=#333333]作 者:[/color] [color=#000000]theOcrat[/color]
[color=#333333]时 间:[/color] 2007-08-16,11:56
[color=#333333]链 接:[/color] [url=http://bbs.pediy.com/showthread.php?t=49767]http://bbs.pediy.com/showthread.php?t=49767[/url]
[/color]
【文章标题】: [b][color=#ff0000]迅雷[/color][/b]协议分析
【文章作者】: the0crat
【邮件地址】: the0crat.cn_at_gmail.com
【作者主页】: [url=http://the0crat.spaces.live.com/]http://the0crat.spaces.live.com[/url]
【生产日期】: 20070526
【软件名称】: Thunder 5.5.6.274
【使用工具】: OD+Ethereal
【作者声明】: 本文仅供研究学习,本人对因这篇文章而导致的一切后果,不承担任何法律责任。本文中的不足之处请各位多多指教
--------------------------------------------------------------------------------
代码太长 原帖看吧
======================================================================注销
<--TCP!来源验证.Data(53 Bytes)
00 00 00 35 00 00 00 2b 00 00 .........5...+..
0040 00 2b 00 00 00 24 31 32 63 39 32 61 34 62 2d 34 .+...$12c92a4b-4
0050 64 36 66 2d 34 61 62 64 2d 61 66 65 62 2d 37 31 d6f-4abd-afeb-71
0060 37 63 39 39 33 62 32 62 35 34 00 7c993b2b54.
[结构]
00 00 00 35 此数据包长度
00 00 00 2b 将要发送的'下载加积分.Data'数据包的长度
00 00 00 2b 将要发送的'下载加积分.Data'数据包的长度
00 00 00 24 标识串长度
31 32 63 ... 35 34 00 标识串
<--TCP!发送注销信息.Data(43 Bytes)
00 00 00 0e 00 00 00 05 00 00 ................
0040 00 1f 00 00 00 0b 51 55 45 52 59 4c 4f 47 4f 55 ......QUERYLOGOU
0050 54 00 00 00 08 32 32 39 30 30 31 35 37 00 00 00 T....22900157...
0060 00 .
[结构]
00 00 00 0e 未知,固定不变(猜测与版本有关,未经验证)
00 00 00 05 程序启动时初始化为0,第一次用户注销后+5,其余每次有用户注销则+4
00 00 00 1f 以下数据的长度
00 00 00 0b 标识"QUERYLOGOUT"的长度
51 55 45 52 59 4c 4f 47 4f 55 54 标识"QUERYLOGOUT"
00 00 00 08 用户id的长度
32 32 39 30 30 31 35 37 用户id
00 00 00 00 空
======================================================================注销END
其中上面列出来的第一个包中密码hash看似是md5,直接把我的密码的md5算出来对比了一下,不一样,那就跟一下吧,打开od,立马定位到这里
返回到最早跟入的那里继续
215C4E17 . 8D8D 3CF7FFFF lea ecx, dword ptr [ebp-8C4]
215C4E1D . E8 7EF40000 call <sub_215D42A0>
215C4E22 . 6A 20 push 20 ; /maxlen = 20 (32.)
215C4E24 . 8D8D 7CFFFFFF lea ecx, dword ptr [ebp-84] ; |
215C4E2A . 50 push eax ; |src 这里是刚才md5后的字符串
215C4E2B . 51 push ecx ; |dest
215C4E2C . FF15 D4015F21 call dword ptr [<&MSVCRT.strncpy>] ; \strncpy 保存一遍
215C4E32 . 83C4 0C add esp, 0C
215C4E35 . 8D8D F4F9FFFF lea ecx, dword ptr [ebp-60C]
215C4E3B . E8 00E80000 call <sub_215D3640>
215C4E40 . 8D95 7CFFFFFF lea edx, dword ptr [ebp-84]
215C4E46 . 8D8D F4F9FFFF lea ecx, dword ptr [ebp-60C]
215C4E4C . 52 push edx
215C4E4D . C645 FC 03 mov byte ptr [ebp-4], 3
215C4E51 . E8 9AE80000 call <sub_215D36F0> ; 对第一次md5的结果再次md5
215C4E56 . B9 08000000 mov ecx, 8
215C4E5B . 33C0 xor eax, eax
215C4E5D . 8DBD 7CFFFFFF lea edi, dword ptr [ebp-84]
215C4E63 . F3:AB rep stos dword ptr es:[edi]
215C4E65 . 66:AB stos word ptr es:[edi]
215C4E67 . 8D8D F4F9FFFF lea ecx, dword ptr [ebp-60C]
215C4E6D . AA stos byte ptr es:[edi]
215C4E6E . E8 2DF40000 call <sub_215D42A0>
215C4E73 . 6A 20 push 20 ; /maxlen = 20 (32.)
215C4E75 . 50 push eax ; |src
215C4E76 . 8D85 7CFFFFFF lea eax, dword ptr [ebp-84] ; |
215C4E7C . 50 push eax ; |dest
215C4E7D . FF15 D4015F21 call dword ptr [<&MSVCRT.strncpy>] ; \strncpy 到这里为止密码的hash就出来了
[/td][/tr][/table]
[i]此帖于 2007-08-21 [color=#800800]19:15[/color] 被 theOcrat 编辑. 原因: 详细环境 [/i]
[[i] 本帖最后由 needed 于 2008-7-20 15:40 编辑 [/i]] 通过hash比对,难道这就是‘一个文件不存在了,用迅雷还是可以下载到的’原理:) .....................楼主看得懂?
页:
[1]