上次提到IV占3个字节,是用来和密钥组合成密钥种子,作为RC4 算法的输入,来产生加密字节流对数据进行加密的。每个数据帧都会有个IV(这个有待确认,我只抓到数据帧有IV)由于IV占24位,所有再2的24次方后,IV就不可避免的产生了重复。
  IV和WEP_第1张图片

大家可以看到Initialization Vector(初始向量就是IV)为 0x1d9cea,就是16进制的 1d,9c,ea,占三个字节。这个是我自己AP做的实验,我的密钥是ascii码格式的 0987654321234,换成16进制就是 0x30,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x32,0x33,0x34,这13个字节和3个字节的IV组成16字节(128位)的密钥,我用自己写的RC4算法程序产生的第一个字节为16进制的 38
 
自己写的算法程序

 

上次提到,数据包的第一个加密字节为RC4算法产生的第一个字节和LLC头的第一个字节( 0xaa)加密(做异或操作)的结果,16进制的38换成2进制就是 00111000,16进制的aa换成2进制就是 10101010,两个做异或操作,结果为 10010010,换成16进制就是 92,现在我们再来看抓到的数据帧
IV和WEP_第2张图片 

看到没, 92,这个我们的计算结果是完全一致的,我们就可以利用这个,再根据RC4的算法缺点,P解出WEP密钥。