-
-
[求助]有明显漏洞的加密算法,但没完全搞定求帮忙
-
发表于: 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'为加密后的密文
则只要都猜中由哪些字符组成,不用考虑字符的位置就能生成相同的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期)
赞赏
他的文章
- [原创]IE6/7 EXP通用不死技巧 5190
- [原创]再读堆风水MS06-067调试笔记 8024
- VEH函数入口的快速定位 8883
- [原创]永信至诚e春秋平台CTF比赛放大镜后门分析 5613
- [讨论]2014中国黑客榜(beta版) 24990
看原图
赞赏
雪币:
留言: