📄 md5 破解实例(快速邮件地址搜索器).txt
字号:
标 题:MD5初次尝试 (2千字)
发信人:upfeed1
时 间:2002-8-19 1:12:33
详细信息:
XXXX快速邮件地址搜索器 by upfeed[FCG]
真的是其貌不扬,内部算法居然是MD5的,正好最近有看过,正好练习一下:
============================================================
VC的程序,用DASM反汇编以后,发现信息报存在\harrow.cur的指针数据的后面,于是用OllyDbg载入:
========================
00410AB8 |. 68 64DE4600 PUSH fastsear.0046DE64 ; ASCII "\harrowzs.cur"查找文件
........
00410AF2 |. E8 B6410200 CALL fastsear.00434CAD ; 获得文件大小
00410AF7 |. 8BF0 MOV ESI,EAX
00410B06 |. 81FE FE020000 CMP ESI,2FE ; 判断文件后面是否有信息
........
00410B5C |. 50 PUSH EAX ; 读出的注册数据
00410B5D |. E8 52290200 CALL fastsear.004334B4
注册名和注册码用0a0d来分离
........
00410C47 |. 8B5424 14 MOV EDX,DWORD PTR SS:[ESP+14] ; 注册名
00410C4B |. 8B42 F8 MOV EAX,DWORD PTR DS:[EDX-8]
00410C4E |. 83F8 08 CMP EAX,8
00410C51 |. 0F8C F8000000 JL fastsear.00410D4F ; 长度大于等于8
........
00410C86 |. 50 PUSH EAX ; 注册名
00410C87 |. E8 A4020000 CALL fastsear.00410F30 ; 算注册码
跟踪进去看一看:
0041101B |. 50 PUSH EAX
0041101C |. E8 4D290200 CALL fastsear.0043396E ; 几个字符串的连接,如下所示
---------------------------------------------
| 'zsday-' + 机器码 + '-scy33dds-' + 用户名 |
---------------------------------------------
往下面走就是MD5的计算地方了:
00411070 |. 51 PUSH ECX ; 注册名
00411071 |. 52 PUSH EDX ; 连接串
00411072 |. E8 F9F2FFFF CALL fastsear.00410370 ; MD5
----------------------------------------------------------------------
| 这里的MD5算了两次,直接用0补齐64位注册名,一次xor $36,一次xor $5C |
| 每一次都会将连接串也算一次,见下面的说明 |
----------------------------------------------------------------------
关于摘要的计算有一点说明:
MD5(MD5(default, name xor $36), MCode) ...... (1) ; 相当于分组求出的结果
MD5(MD5(default, name xor $5C), (1)) ...... (2) ; 这里利用了上一次的结果
得到的摘要转换成字符串就是下面的样子了:
8f554cbca228294b4c2134538f2360cd
下面的工作就是拼凑注册码:
0041108D |. 6A 01 PUSH 1
0041108F |. 8D4C24 2C LEA ECX,DWORD PTR SS:[ESP+2C]
00411093 |. 6A 1A PUSH 1A
00411095 |. 51 PUSH ECX
00411096 |. 8D4C24 1C LEA ECX,DWORD PTR SS:[ESP+1C]
0041109A |. C68424 E0000000 0>MOV BYTE PTR SS:[ESP+E0],8
004110A2 |. E8 A7F40100 CALL fastsear.0043054E ; 从1A位开始的1位
所以形式如下了:
(1A,1)(14,4)(0E,1)-(0B,1)(08,4)(1E,1)-(0F,1)(10,4)(15,1)-(1C,1)(00,4)(0F,1)-
(04,1)(1C,4)(12,1)-(0F,1)(04,4)(07,1)-(03,1)(0C,4)(00,1)-(13,1)(18,4)(09,1)
其实我正好把它反过来了!
结果在下面了:
28f231-8294b5-c4cbcb-260cd4-b8f556-44c21b-ca2288-434532
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -