加密算法

我们截获了敌方传输的密文的十六进制表示如下

93 5c 96 ab e8 f0 14 cf
32 48 0f 3a 59 f4 ad 7f
b3 ce 8a 4f b8 7e 77 20

并通过谍报手段得到了对方的加密程序以及密钥为:12345678
我们现在希望知道对方的明文是什么

这是单纯的DES加密算法,DES是对称加密,且不管有没有变形,对称性不会改变。
此WP就是要兵不血刃,利用DES的对称性及加密与解密区别仅在于取扩展密钥的顺序不同,让程序自己输出flag。至于DES加密算法就不打算分析了。
关闭动态基址:修改程序偏移0x166处的”40”为”00”,保存。
OD载入程序。
4026d9下断,F9运行,随便输入24个字符,断下后,当前栈上存放的是输入字符存放地址,修改输入的字符为题目提供的密文。
修改00402610处的 mov esi,DES.0042EF20 为 mov esi,DES.0042f1f0
修改00402627处的 add esi,0x30 为 sub esi,0x30
修改0040262E 处的 cmp esi,DES.0042F220 为 cmp esi,DES.0042EF20
修改00402634处的 jl short DES.00402617 为jge short DES.00402617
F9运行,输入密钥12345678
程序输出:

43 54 46 7b 54 68 31 73
5f 31 73 5f 46 49 40 67
7d 20 20 20 20 20 20 20

都是16进制值,转ASCII字符串即可

转自实验吧,原文作者实验吧ID poyoten