圖文講解WEP四次握手(4-way-handshake)過程
不管是用WEP加密,還是用WPA,一般如果我們要和AP建立一個串連,要經過兩個階段認證(Authentic)和關聯(Association)的過程,下面我只說說WEP加密的情況下,是如何和AP建立串連的(WPA的基本原理是差不多的,但密碼編譯演算法比WEP的複雜)。
如果採用WEP加密,我們會有兩種選擇(開放式和共用式),如果選擇開放式,那AP和用戶端的認證過程是在關聯過程之後的,也就是說,不需要正確的密碼,就能串連上AP,但你無法傳輸資料(會顯示串連受限,具體看我以前的文章),所以這個我們也不討論。
如果我們採用WEP加密,而且,又選擇了共用式,那要想和AP建立串連,就會有四次握手(4-way-handshake)的過程:
本帖隱藏的內容需要回複才可以瀏覽
第一次握手:用戶端發送認證請求給AP,如
我們圖中的內容,前面的內容是幀(frame)控制頭,裡面記錄了源地址,目的地址等資訊,IEEE 802.11 wireless LAN management frame說明這是802.11的管理幀,下面有6個位元組的參數,Authentication Algorithm是用來確定是開放式或者是共用式(1共用式,0開放式),我們這裡是共用式,Authentication SEQ說明四次握手的步驟,現在是第一次握手,說以是1,最後的status code是狀態代碼,現在是成功。
第二次握手:AP收到請求後,發送一個認證響應幀,裡麵包含一個128位元組的隨機數列,如
我們再看AP的請求響應幀,裡面的Authentication SEQ已經變成2了,狀態也是成功,但幀的最後,我們發現了128位元組的隨機數列。
第三向交握:用戶端收到AP的響應幀後,用自己的密鑰加3個位元組的IV,用RC4演算法,產生加密流,用異或操作加密128位元組的隨機數列,然後發給AP,如
我們看到,這個幀比較特殊,我們看不到序號,而是多了一個Initialization Vector(初始向量)這個就是我們經常說的IV(注意是明文的,沒有加密),最後data中的內容就是加密後的隨機數列
第四次握手:AP用自己的密鑰加用戶端發過來的IV,用RC4演算法,產生加密流,用異或操作加密那段隨機數列(challenge text),如果用戶端的密鑰和AP的密鑰相同,那麼,兩端加密後的資料應該是相同的。如:
最後一次握手的序號是4,狀態是成功,到此,四次握手的過程就全部完成了。
看完上面的內容,我想大家發現了一個問題,在WEP加密方式下,AP和用戶端認證的過程中,challenge text和加密後的資料都是可以得到的,而且3個位元組的IV也是明文的,而WEP採用的,只是簡單的異或運算:明文(異或)加密流=密文,而異或運算是可逆的,也就是說,密文(異或)明文=加密流。
然後回到最初的問題,我們只要寫個抓包的程式(我以前的文章有發過原始碼),然後提取每個包中,challenge text等資訊,就可以了。