7月17日实习总结
今天和老师交流了一下目前的进度。在破解windows系统口令的那个实验上面,PwDump7是没有问题的,但是LC5在我的电脑上运行起来会破解不出口令。最终老师决定让我先进行下面的实验。
第二个实验是Word文档破解测试。老师说目的不是破解出密码,而是体会不同方法在速度上的差异。需要设置一个时间表,比如5天破解不出,就放弃这个方法。(而且我一定不能手贱关机!!!)
第一个小实验是利用Advance Office Password Recovery破解简单口令。
在使用Advance Office Password Recovery恢复简单口令的时候,会显示文件加密40 bit RC4。这是什么意思呢?
我查了一下RC4加密算法。
- RC4是一种对称加密算法,也就是说使用的密钥为单钥(或称为私钥)。
- RC4算法的特点是算法简单,运行速度快,而且密钥长度是可变的,可变范围为1-256字节(8-2048比特),在如今技术支持的前提下,当密钥长度为128比特时,用暴力法搜索密钥已经不太可行,所以可以预见RC4的密钥范围任然可以在今后相当长的时间里抵御暴力搜索密钥的攻击。实际上,如今也没有找到对于128bit密钥长度的RC4加密算法的有效攻击方法。
首先我们要先了解一下RC4算法中几个关键变量:
- 密钥流:RC4算法的关键是根据明文和密钥生成相应的密钥流,密钥流的长度和明文的长度是对应的,也就是说明文的长度是500字节,那么密钥流也是500字节。当然,加密生成的密文也是500字节,因为密文第i字节=明文第i字节^密钥流第i字节;
- 状态向量S:长度为256,S[0],S[1].....S[255]。每个单元都是一个字节,算法运行的任何时候,S都包括0-255的8比特数的排列组合,只不过值的位置发生了变换;
- 临时向量T:长度也为256,每个单元也是一个字节。如果密钥的长度是256字节,就直接把密钥的值赋给T,否则,轮转地将密钥的每个字节赋给T;
- 密钥K:长度为1-256字节,注意密钥的长度 keylen 与明文长度、密钥流的长度没有必然关系,通常密钥的长度取为16字节(128比特)。
RC4的原理分为3步:
1.初始化S和T
for i=0 to 255 do
S[i] =i;
T[i]=K[ i mod keylen ];
2.初始排列S
for i=0 to 255 do
j= ( j+S[i]+T[i]) mod 256;
swap(S[i],S[j]);
3.产生密钥流
for r=0 to len do //r为明文长度,r字节
i=(i+1) mod 256;
j=(j+S[i]) mod 256;
swap(S[i],S[j]);
t=(S[i]+S[j]) mod 256;
k[r]=S[t];
下午我一边进行简单口令的破解,一边继续尝试安装hashcat,昨天的安装失败了。