转自:http://t00ls.net/thread-13721-1-1.html,原作者:xlk111。
昨天偶然发现 Winrar 压缩软件的加密算法碰撞口令后(详情见这里:https://lcx.cc/post/1026/),又到处搜集看了些资料,又看了看 Winrar 的程序。
Winrar 压缩软件用的核心加密算法是AES,加密时用的CBC模式,密钥长度16字节(128比特),密钥和初始化向量由用户口令经符合 PKCs #5 的复杂变化生成,其生成时的核心是SHA1。
既用户输入的口令为 PW1,密钥和初始化向量的生成过程如下:
1、RE1=Unicode(PW1),如:Unicode('A')=0x0041;注意intel系列的处理器是littleendian,低位在前。
2、PW2=Union(RE1||Salt),简单的串接。
3、M=Ex(PW2,int);其中int为固定值,对PW2做固定int次循环扩展。
4、Key=Get(SHA1(M),128),IV=LASTBYTE(SHA1(M));
加密:
AES-CBC:
C(0)=IV;
C(i)=AES(KEY,C(i-1)^P(i));
解密:
P(i)=C(i-1)^AES(C(i))
需要注意的是Salt生成算法:(这个是看雪的天易love写的)
1、由 SystemTime 得到 FileTime;
2、分别对 FileTime 的两个 DWORD 进行 hash_process;
3、hash_final 后得到的 digest 的最前面的两个 DWORD 就是 salt。
文章来源于lcx.cc:【文章】Winrar 压缩软件的加密算法 - AES
相关推荐: python爬取所有厂商url&python爬取Google搜索结果产生的猥琐想法
一直有这么一个想法。当得到某0day,我怎样才能最快知道在某大厂商的任意子域名、任意端口下是否存在此漏洞。 于是猥琐的想法就产生了,首先得到乌云所有厂商的url,然后再逐个得到所有厂商的子域名,然后就是端口信息,cms静态文件以及各种包含某特征的url,如ac…
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论