?? md5 破解實例(快速郵件地址搜索器).txt
字號:
標 題:MD5初次嘗試 (2千字)
發(fā)信人:upfeed1
時 間:2002-8-19 1:12:33
詳細信息:
XXXX快速郵件地址搜索器 by upfeed[FCG]
真的是其貌不揚,內(nèi)部算法居然是MD5的,正好最近有看過,正好練習一下:
============================================================
VC的程序,用DASM反匯編以后,發(fā)現(xiàn)信息報存在\harrow.cur的指針數(shù)據(jù)的后面,于是用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 ; 讀出的注冊數(shù)據(jù)
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 |
| 每一次都會將連接串也算一次,見下面的說明 |
----------------------------------------------------------------------
關(guān)于摘要的計算有一點說明:
MD5(MD5(default, name xor $36), MCode) ...... (1) ; 相當于分組求出的結(jié)果
MD5(MD5(default, name xor $5C), (1)) ...... (2) ; 這里利用了上一次的結(jié)果
得到的摘要轉(zhuǎn)換成字符串就是下面的樣子了:
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)
其實我正好把它反過來了!
結(jié)果在下面了:
28f231-8294b5-c4cbcb-260cd4-b8f556-44c21b-ca2288-434532
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -