首页
社区
课程
招聘
[求助]有明显漏洞的加密算法,但没完全搞定求帮忙
发表于: 2012-12-25 15:10 3282

[求助]有明显漏洞的加密算法,但没完全搞定求帮忙

2012-12-25 15:10
3282
算法漏洞:猜中密码长度和密码最后一位,如果密码前面没有重复的字符
则只要都猜中由哪些字符组成,不用考虑字符的位置就能生成相同的hashtable(只有前面几字节的密码不同)
和完全相同的hash1
比如密码为123456和215436都能解密加密文档的大部分内容(不能解全部因为hashtable中前面几字节不同).

加密过程:
1.得到明文密码,比如明文为12345
取最后一位5(35h),和明文密码长度5

35h/5=0ah余3 取商    0ah
35h*5=109h   取低8位 09h

0ah+09h=13h

把13h补到第6字节,以次类推,直到填满256字节.(256字节的后半部分可能有很多00h)
这256字节的表计为 hashtable

2.让hashtable中每个字节都不相同,也就是说让hashtable由00-ff组成.算法
从hashtable的第二个字节开始与前面的字节单个相比较如果相同
设ebx=1
mov eax,ebx
shr al,2
shl bl,6
add bl,al
add bl,相同的字节
把bl换到相同的字节的后面的那个.然后又再次和前面的字节比较,如果有相同的这时ebx+1.
这个字节处理完后,又让下一个字节和它前面的比较一直比到第256字节.

3.得到16字节 hash1,每字节的算法为取hashtable每行16字节,相互xor的结果

加密明文过程:通过上面3步得到hash1和hashtable
1.设明文为abcd,注:明文每16字节为一轮加密
在hashtable中找偏移为a(61h)里的值x1
在hashtable中找偏移为b(62h)里的值x2
在hashtable中找偏移为c(63h)里的值x3
在hashtable中找偏移为d(64h)里的值x4

2.
x1 xor hash1中第一个字节=x1'
x2 xor hash1中第二个字节=x2'
x3 xor hash1中第三个字节=x3'
x4 xor hash1中第四个字节=x4'

3.x4' xor x1' =x1"
  x1" xor x2' =x2"
  x2" xor x3' =x3"
  x3" xor x4' =x4"

4.
x1" xor hash1中第一个字节=y1
x2" xor hash1中第二个字节=y2
x3" xor hash1中第三个字节=y3
x4" xor hash1中第四个字节=y4

5.
在hashtable中找偏移为y1里的值y1'
在hashtable中找偏移为y2里的值y2'
在hashtable中找偏移为y3里的值y3'
在hashtable中找偏移为y4里的值y4'
最后
y1' y2' y3' y4'为加密后的密文

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//