飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3569|回复: 3

[原创] 菜鸟也学密码学--MD5

[复制链接]

该用户从未签到

发表于 2006-11-24 19:39:24 | 显示全部楼层 |阅读模式
:L 在DZ论坛里偶怎么排不好版??
看不清楚的朋友去看雪先参考下:
http://bbs.pediy.com/showthread.php?s=&threadid=35455



【文章标题】: 菜鸟也学密码学--MD5
【文章作者】: 网游难民
【作者主页】: www.chinapyg.com
【下载地址】: 本地
【作者声明】: 菜鸟初次接触MD5,失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  看到论坛里好多朋友都在玩密码学加密的软件,偶菜鸟也不甘落后,也来学习下MD5,下面是偶的学习笔记,希望能学习密码学的朋友们提供些帮助。
  下面我们用黑夜彩虹老大分析过的一个CM来学习下:)
  偶用自己机器上的数据来给大家解释下MD5是怎么实现的,下面是偶用来学习的数据。
  
  机器码:F2918A44BFEBFBFF
  用户名:goqq2008
  注册码:9876543210
  
  0045184D  |.  8D55 E0       lea     edx, dword ptr [ebp-20]
  00451850  |.  8B83 08030000 mov     eax, dword ptr [ebx+308]
  00451856  |.  E8 81E3FDFF   call    0042FBDC
  0045185B  |.  8B55 E0       mov     edx, dword ptr [ebp-20]             ;  用户名(goqq2008)
  0045185E  |.  58            pop     eax
  0045185F  |.  E8 7428FBFF   call    004040D8
  00451864  |.  8B45 E4       mov     eax, dword ptr [ebp-1C]             ;  机器码+用户名(F2918A44BFEBFBFFgoqq2008)
  00451867  |.  8D55 E8       lea     edx, dword ptr [ebp-18]
  0045186A  |.  E8 6DFBFFFF   call    004513DC                            ;  MD5加密,关键CALL1,F7跟进~
  0045186F  |.  8D45 E8       lea     eax, dword ptr [ebp-18]
  00451872  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
  00451875  |.  E8 D6FBFFFF   call    00451450
  0045187A  |.  8B55 F8       mov     edx, dword ptr [ebp-8]              ;  MD5加密后的结果放在EDX中~
  0045187D  |.  58            pop     eax
  0045187E  |.  E8 9929FBFF   call    0040421C
  00451883  |.  75 1A         jnz     short 0045189F                      ;  关键跳转
  00451885  |.  6A 40         push    40
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  跟进关键CALL1:
  00451422  |.  8BD3          mov     edx, ebx
  00451424  |.  8D45 A4       lea     eax, dword ptr [ebp-5C]
  00451427  |.  E8 3CFFFFFF   call    00451368                            ;  关键CALL2,跟进~
  0045142C  |.  33C0          xor     eax, eax
  0045142E  |.  5A            pop     edx
  +++++++++++++++++++++++++++++++++++++++++++++++++++++
  跟进关键CALL2:
  004513B1  |.  8BC3          mov     eax, ebx
  004513B3  |.  B9 08000000   mov     ecx, 8
  004513B8  |.  E8 2BFFFFFF   call    004512E8                            ;  关键CALL3,跟进
  004513BD  |.  8BD6          mov     edx, esi
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  跟进关键CALL3:
  0045132B  |.  8BD6          mov     edx, esi
  0045132D  |.  8D46 18       lea     eax, dword ptr [esi+18]
  00451330  |.  E8 4FF8FFFF   call    00450B84                            ;  关键CALL4,跟进
  00451335  |.  EB 0E         jmp     short 00451345
  00451337  |>  8BD6          /mov     edx, esi
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  00450B84  /$  53            push    ebx                                 ;  终于到达MD5加密的地方了~~:)
  00450B85  |.  56            push    esi
  00450B86  |.  57            push    edi
  00450B87  |.  55            push    ebp
  00450B88  |.  83C4 A8       add     esp, -58
  00450B8B  |.  895424 04     mov     dword ptr [esp+4], edx
  00450B8F  |.  890424        mov     dword ptr [esp], eax
  00450B92  |.  8D5C24 08     lea     ebx, dword ptr [esp+8]
  00450B96  |.  8D7424 0C     lea     esi, dword ptr [esp+C]
  00450B9A  |.  8D7C24 10     lea     edi, dword ptr [esp+10]
  00450B9E  |.  8D6C24 14     lea     ebp, dword ptr [esp+14]
  00450BA2  |.  8D5424 18     lea     edx, dword ptr [esp+18]
  00450BA6  |.  B9 40000000   mov     ecx, 40
  00450BAB  |.  8B0424        mov     eax, dword ptr [esp]
  00450BAE  |.  E8 5DFFFFFF   call    00450B10                            ;  增加填充,补足长度
  ——————————————————————————————————
  第一步:增加填充
  增加padding使得数据长度(bit为单位)模512为448。如果数据长度正好是模512为448,增加512个填充bit,也就是说填充的个数为1-512。第一个bit为1,其余全部为0。
  第二步:补足长度
  将数据长度转换为64bit的数值,如果长度超过64bit所能表示的数据长度的范围,值保留最后64bit,增加到前面填充的数据后面,使得最后的数据为512bit的整数倍。也就是32bit的16倍的整数倍。在RFC1321中,32bit称为一个word。
  
  第一步:增加填充
  因为我这里要用MD5加密的数据是 F2918A44BFEBFBFFgoqq2008   。一共有192位,如果填充到模512为448,一共要填充256位,既第一个为1(二进制),255个0。
  第二步:补足长度
  F2918A44BFEBFBFFgoqq2008 转换为二进制共192位,二进制表示为11000000,共8位,要补足64位后面要再加56个0。
  
  所以补足长度后的数值如下(16进制表示):
  0012F514  46 32 39 31 38 41 34 34 42 46 45 42 46 42 46 46  F2918A44BFEBFBFF
  0012F524  67 6F 71 71 32 30 30 38 80 00 00 00 00 00 00 00  goqq2008

project1.rar

167.01 KB, 下载次数: 1542, 下载积分: 飘云币 -2 枚

PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-5-3 19:45
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2006-11-24 23:25:44 | 显示全部楼层
    哇靠~!
    虽然看的迷糊死人~!
    不过忒强了~~~~~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-4 10:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-11-25 18:11:21 | 显示全部楼层
    谢谢朋友分享啊.偶也来看一看.
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2007-1-2 04:04:41 | 显示全部楼层
    嘿嘿 汇编学的不咋滴 先去温习下
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表