在本文中,主要讲解了chopchop攻击的思想,用一道题目来感受chopchop攻击,该题目不是在于激活成功教程实际场景中的wep,而是感受chop的思想,毕竟现在攻击wep的网上脚本比比皆是,比较著名的就是Aircrack-ng无线激活成功教程工具套件。
激活成功教程历程:
95 9 月RC4 潜在的威胁性(wanger)
00 10 月通过分析wpe包获取密码(walker)
01 5 月针对于明文攻击的一个推论(Arbaugh)
01 7 月针对于CRC32的攻击
01 8 月针对于RC4的攻击
01 8 月airosnort发布
02 2 月改进的攻击算法(h1kari)
04 8 月chopchop攻击出现
04 7/8 月aircrack出现(Devine,Sanchez )
题目:
给你一个加密后的数据包和可接受数据的接入点 要求还原出明文,为了简便,这里的加密用简单的异或实现
def CRC32(s): # 计算 crc32 crc = 0 for i in range(len(s)): crc = crc_tbl[(crc ^ ord(s[i])) & 0xFF] ^ (crc >> 8) return crc def xor(text,key): # RC4加密/解密 s = "" for i in range(len(text)): s += chr(ord(key[i%len(key)])^ord(text[i])) return s
思路:参考
大致上是针对接受到的密文,分成加密后的明文(DATA)+加密后的CRC32(ICV)两部分,对明文那个部分删去最后一个字节,推导出一系列性质,让我们来看看例子
Frame 1: 删去明文的最后一个字节之后 _____ DATA ___ ____ICV ___ D0 D1 D2 D3 D4 I3 I2 I1 I0 ^ ^ ^ ^ ^ ^ ^ ^ ^ K0 K1 K2 K3 K4 K5 K6 K7 K8 = = = = = = = = = R0 R1 R2 R3 R4 R5 R6 R7 R8 2e c0 b6 69 b9 2f 65 f0 4b Where D is data, I is ICV, K is keystream and R is what you get. If we add a data byte we get Frame 2: 删去之前 _____ DATA ______ ____ICV ___ D0 D1 D2 D3 D4 D5 J3 J2 J1 J0 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ K0 K1 K2 K3 K4 K5 K6 K7 K8 K9 = = = = = = = = = = S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 2e c0 b6 69 b9 54 d1 58 9c 3c 根据对应关系可以得出 令 X = I3^D5 R5 = I3 ^ K5 = I3 ^ (D5^D5) ^ K5 = (I3^D5) ^ (D5^K5) = X ^ S5 R6 = I2 ^ K6 = I2 ^ (J3^J3) ^ K6 = (I2^J3) ^ S6 = SOME[6:8] ^ S6 最后一步推导放在后面 R7 = I1 ^ K7 = I1 ^ (J2^J2) ^ K7 = (I1^J2) ^ S7 = SOME[4:6] ^ S74 R8 = I0 ^ K8 = I0 ^ (J1^J1) ^ K8 = (I0^J1) ^ S8 = SOME[2:4] ^ S8 we also should know in this problem I3I2I1I0 crc_tbl[(I0I1I2I3 ^ ord(s[i])) & 0xFF] ^ (I0I1I2I3 >> 8) = J0J1J2J3 I0I1I2I3 = J1J2J300 ^ CONST J0=SOME[0:2] I0=J1^SOME[2:4] I1=J2^SOME[4:6] I2=J3^SOME[6:8] SOME = crc_tbl[((I0I1I2I3 ^ ord(D5) )& 0xFF] = crc_tbl[X] 最后 K9=S9^J0
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/227242.html原文链接:https://javaforall.net
