生活随笔
收集整理的這篇文章主要介紹了
wep破解——模拟chopchop攻击
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在本文中,主要講解了chopchop攻擊的思想,用一道題目來感受chopchop攻擊,該題目不是在于破解實際場景中的wep,而是感受chop的思想,畢竟現在攻擊wep的網上腳本比比皆是,比較著名的就是Aircrack-ng無線破解工具套件。
WEP(Wired EquiValent PriVacy),有線等效加密。其破解為利用加密體制缺陷,通過收集足夠的數據包,使用分析密算法還原出密碼。
協議要求首先為明文計算一段checksum,方式是循環冗余校驗CRC32
然后呢,將這個校驗值以little-endian的方式接在明文之后得到新的明文,將這段新明文用一個key通過RC4加密就得到密文數據包了
M(密文) = RC4( (data+CRC32) ,key) (實際場景中的WEP機制會復雜些,這里只做簡單闡述)
接收方用KEY解密密文,對明文再做一次RC4,算出CRC32’,與接受的CRC32比較,不同則拒絕,相同接受
破解歷程:
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
): crc
= 0for i
in range(len(s
)):crc
= crc_tbl
[(crc
^ ord(s
[i
])) & 0xFF] ^ (crc
>> 8)return crc
def xor(text
,key
): 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
我們發現,每次計算,我們都可以暴力設X的值(0-255),構造新的數據包,發給接入點(AP),看返回是否成功,成功則用這個新的數據做下一次運算,每次運算都可以跑出一字節的KEY,跑完所有KEY之后可以和加密的數據異或回去得到明文。
復雜度:O(字節*256)
總結
以上是生活随笔為你收集整理的wep破解——模拟chopchop攻击的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。