無(wú)線網(wǎng)絡(luò)密碼WPAWPA2基礎(chǔ)知識(shí)講解
首先大家要明白一種數(shù)學(xué)運(yùn)算,它叫做哈希算法(hash),這是一種不可逆運(yùn)算,你不能通過(guò)運(yùn)算結(jié)果來(lái)求解出原來(lái)的未知數(shù)是多少,有時(shí)我們還需要不同的未知數(shù)通過(guò)該算法計(jì)算后得到的結(jié)果不能相同,即你不太可能找到兩個(gè)不同的值通過(guò)哈希得到同一個(gè)結(jié)果。哈希是一類算法的統(tǒng)稱,通常哈希算法都是公開(kāi)的,比如MD5,SHA-1等等。;
我們平時(shí)說(shuō)的WPA密碼其實(shí)叫PSK(pre-shared key),長(zhǎng)度一般是8-63字節(jié),它加上ssid通過(guò)一定的算法可以得到PMK(pairwise master key)。PMK=SHA-1(ssid,psk) ,PMK的長(zhǎng)度是定長(zhǎng)的,都是64字節(jié)。由于計(jì)算PMK的過(guò)程開(kāi)銷比較大,是我們解除花費(fèi)時(shí)間長(zhǎng)的關(guān)鍵,所以采用以空間換時(shí)間的原則把PMK事先生成好,這個(gè)事先生成好的表就是常說(shuō)的HASH表(生成PMK的算法是一種哈希),這個(gè)工作就是用airlib-ng這個(gè)工具來(lái)完成的,我們的快速解除就是這么來(lái)的。
認(rèn)證的時(shí)候會(huì)生成一個(gè)PTK(pairwise temporary),這是一組密鑰,具體細(xì)節(jié)不詳細(xì)說(shuō)了,它的生成方法也是采用的哈希,參數(shù)是連接的客戶端MAC地址、AP的BSSID、A-NONCE、S-NONCE、PMK,其中A-NONCE和S-NONCE是兩個(gè)隨機(jī)數(shù),確保每次連接都會(huì)生成不同的PTK。PTK的計(jì)算消耗很小。PTK加上報(bào)文數(shù)據(jù)采用一定的算法(AES或TKIP),得到密文,同時(shí)會(huì)得到一個(gè)簽名,叫做MIC(message integrality check),tkip之所以被解除和這個(gè)mic有很大關(guān)系。
四次握手包中含有以上的哪些東西呢?客戶端的MAC地址,AP的BSSID,A-NONCE,S-NONE,MIC,最關(guān)鍵的PMK和PTK是不包含在握手包里的!
8 A2 m6 T& }) U2 J認(rèn)證的原理是在獲得以上的所有參數(shù)后,客戶端算出一個(gè)MIC,把原文連同MIC一起發(fā)給AP,AP采用相同的參數(shù)與算法計(jì)算出MIC,并與客戶端發(fā)過(guò)來(lái)的比較,如果一致,則認(rèn)證通過(guò),否則失敗。
目前的解除方法是我們獲得握手包后,用我們字典中的PSK+ssid先生成PMK(如果有HASH表則略過(guò)),然后結(jié)合握手包中的(客戶端MAC,AP的BSSID,A-NONCE,S-NONCE)計(jì)算PTK,再加上原始的報(bào)文數(shù)據(jù)算出MIC并與AP發(fā)送的MIC比較,如果一致,那么該P(yáng)SK就是密鑰。
目前最耗時(shí)的就是算PMK,可謂解除的瓶頸。即使搞定了運(yùn)算量的問(wèn)題,海量的密鑰存儲(chǔ)也是個(gè)問(wèn)題(PMK都是64字節(jié)長(zhǎng)度)!
最近出來(lái)的tkiptun-ng只是可以解開(kāi)使用tkip加密了的數(shù)據(jù)包,并不是說(shuō)能夠快速算出PMK或PSK。如果感興趣,可以到書(shū)店看看講哈希的書(shū),說(shuō)不定你把這些HASH算法都解除出來(lái)了。
wpa_supplicant套件中有個(gè)小工具,叫做wpa_passphrase,它和airolib-ng的作用差不多,都是用來(lái)生成PMK,在backtrack中應(yīng)該自帶這個(gè)工具。比如有個(gè)ssid為T(mén)P-LINK,PSK是12345678,那么生成PMK的方法就是wpa_passphrase TP-LINK 12345678,結(jié)果應(yīng)該是這樣:
network={ ssid="TP-LINK"
#psk="12345678"
psk=1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da
psk=1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da其實(shí)就是PMK了,一般在電腦上運(yùn)行查看無(wú)線密碼的軟件就是得到這個(gè),把1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da直接輸入到無(wú)線客戶端中就可以連上該ssid,相當(dāng)于輸入了12345678,生成PMK的過(guò)程是不可逆的,即無(wú)法通過(guò)1eecc652f354863e9f985a96d48545c4994e0d21b04955432b60c2600c0743da來(lái)逆推得到12345678??梢钥吹酵瑯邮莗sk是12345678,如果ssid名字改變,那么pmk就會(huì)發(fā)生改變,這就是為什么用airolib-ng建表是只能按ssid生成