802.11 MAC层帧解析
? ? 注2:本文屬于個人理解,存在錯誤望見諒和指正。
1.MAC幀格式
對應(yīng)的數(shù)據(jù)結(jié)構(gòu)如下:
1.1 地址格式 ?
? ? addr1:接收地址(所有包都包含它)
? ? addr2:傳輸?shù)刂?#xff08;除ACK和CTS包外的其他包都包含它)
? ? addr3:只用于管理包和數(shù)據(jù)包。
? ? addr4:無線分布系統(tǒng)模式下,FROM DS和TO DS都被置位時使用。
? ? 下圖中,占兩個字節(jié)的Frame control ,其To DS和From Ds決定了這四個地址的使用。
? ? Frame control對應(yīng)的地址如下: (Little?ENDIAN)
? ? 地址對應(yīng)表如下:
????DS是分布式系統(tǒng)的簡稱,我們用它以區(qū)分不同類型幀中關(guān)于地址的解析方式。
??? ? ? To DS=0,From DS=0:表示Station之間的AD Hoc類似的通信,或者控制偵、管理偵。
????????To DS=0,From DS=1:Station接收的偵。
????????To DS=1,From DS = 0:Station發(fā)送的偵。
????????To DS=1,From DS = 1:無線橋接器上的數(shù)據(jù)偵。
? ? ?各地址的解釋:
????????SRC:源地址(SA),和以太網(wǎng)中的一樣,就是發(fā)幀的最初地址,在以太網(wǎng)和wifi中幀格式轉(zhuǎn)換的時候,互相可以直接復制。
????????DST:目的地址(DA),和以太網(wǎng)中的一樣,就是最終接受數(shù)據(jù)幀的地址,在以太網(wǎng)和wifi中幀格式轉(zhuǎn)換的時候,互相可以直接復制。
????????TX:也就是Transmiter(TA),表示無線網(wǎng)絡(luò)中目前實際發(fā)送幀者的地址(可能是最初發(fā)幀的人,也可能是轉(zhuǎn)發(fā)時候的路由)。
????????RX:也就是Receiver(RA),表示無線網(wǎng)絡(luò)中,目前實際接收幀者的地址(可能是最終的接收者,也可能是接收幀以便轉(zhuǎn)發(fā)給接收者的ap)。
? ? 注:無線網(wǎng)絡(luò)中的Station想要通信,必須經(jīng)過AP來進行“轉(zhuǎn)發(fā)”。其實,Tx和Rx是無線網(wǎng)絡(luò)中的發(fā)和收,也就是Radio;而Src和Dst是真正的發(fā)送源和接收者
2 幀類型
? ? 幀類型由frame control的type兩位決定,目前有三種類型的幀:
? ??00,管理幀。IEEE80211_TYPE_MGMT 用于執(zhí)行管理操作,如關(guān)聯(lián)、身份驗證,掃描等。
? ??01,控制幀。IEEE80211_TYPE_CTL 通常與數(shù)據(jù)包相關(guān)。如:PS-poll包用于從AP緩沖區(qū)取回數(shù)據(jù)包;另一個例子,STA若想數(shù)據(jù)傳輸,首先會發(fā)送RTS的控制數(shù)據(jù)包,如果介質(zhì)空閑,目標客戶端將發(fā)回一個名為允許發(fā)送(CTS)的控制數(shù)據(jù)包。
? ??10,數(shù)據(jù)幀。IEEE80211_TYPE_DATA 原始數(shù)據(jù)包。注:空數(shù)據(jù)包是特殊的數(shù)據(jù)幀,其用于電源管理。
? ??11,保留。
2.1 SubType
2.1.1 管理幀 type 00
? ? 下表為管理幀的subType對應(yīng)的類型(即type為00時,subType的取值)
????
| Type | SubType | FrameType |
| 00 | 0000 | Association request (連接請求) |
| 00 | 0001 | Association response (連接響應(yīng)) |
| 00 | 0010 | Reassociation request(重連接請求) |
| 00 | 0011 | Reassociation response(重連接聯(lián)響應(yīng)) |
| 00 | 0100 | Probe request(探測請求) |
| 00 | 0101 | Probe response(探測響應(yīng)) |
| 00 | 1000 | Beacon(信標,被動掃描時AP 發(fā)出,notify) |
| 00 | 1001 | ATIM(通知傳輸指示消息) |
| 00 | 1010 | Disassociation(解除連接,notify) |
| 00 | 1011 | Authentication(身份驗證) |
| 00 | 1100 | Deauthentication(解除認證,notify) |
| 00 | 1101~1111 | Reserved(保留,未使用) |
2.1.1.1(Beacon(信標)幀) ?subtype 1000
?
? ? 抓包顯示的結(jié)果:
?
?
? ? 由于Beacon是廣播包,因此DA為FF:FF:FF:FF:FF:FF。
? ? 作用:向STA廣播AP的存在。也就是我們平時能夠搜到AP的原因,其包含了AP的相關(guān)信息。
?
2.1.1.2?(Probe Request(探測請求)幀)?subtype 0100
????抓包顯示的結(jié)果:
? ? 作用:STA廣播發(fā)出,與AP建立關(guān)聯(lián)的必然步驟,后面會具體說明。
2.1.1.3 (Probe Response(探測響應(yīng))幀)?subtype?0101
? ? 作用:STA請求探測幀后,AP的相對應(yīng)的回應(yīng)幀。
?
2.1.1.4 (ATIM幀) ?subtype ?1001
2.1.1.5 (Disassociation(解除關(guān)聯(lián))與Deauthentication(解除認證)幀) subtype 1010
2.1.1.6 (Association Request(關(guān)聯(lián)請求)幀)?subtype 0000
2.1.1.7 (Reassociation Request(重新關(guān)聯(lián)請求)幀) subtype 0010
????????????????????????????????????????????? ??
2.1.1.8 (Authentication(身份認證)幀) subtype 1011
?
2.1.2 數(shù)據(jù)幀 type 10
| Type | Subtype | Frametype |
| 10 | 0000 | Data(數(shù)據(jù)) |
| 10 | 0001 | Data+CF-ACK |
| 10 | 0010 | Data+CF-Poll |
| 10 | 0011 | Data+CF-ACK+CF-Poll |
| 10 | 0100 | Null data(無數(shù)據(jù):未傳送數(shù)據(jù)) |
| 10 | 0101 | CF-ACK(未傳送數(shù)據(jù)) |
| 10 | 0110 | CF-Poll(未傳送數(shù)據(jù)) |
| 10 | 0111 | Data+CF-ACK+CF-Poll |
| 10 | 1000 | Qos Data |
| 10 | 1001 | Qos Data + CF-ACK |
| 10 | 1010 | Qos Data + CF-Poll |
| 10 | 1011 | Qos Data + CF-ACK+ CF-Poll |
| 10 | 1100 | QoS Null(未傳送數(shù)據(jù)) |
| 10 | 1101 | QoS CF-ACK(未傳送數(shù)據(jù)) |
| 10 | 1110 | QoS CF-Poll(未傳送數(shù)據(jù)) |
| 10 | 1111 | QoS CF-ACK+ CF-Poll(未傳送數(shù)據(jù)) |
| ? | ? | ? |
?
?
?
?
?
?
?
2.1.2.1 IBSS subtype ?(0000 Data,0100NULL)
?
?
?
2.1.2.2 ?From AP ?subtype如圖所示
?
2.1.2.3?To AP?幀
2.1.2.4?WDS幀 subtype null
?
2.1.3 控制幀 type 01
? ? 主要用于數(shù)據(jù)傳輸前的控制,相關(guān)過程請看4.0 RTS/CTS。
?
| Type | Subtype | Frametype |
| 01 | 1010 | Power Save(PS)- Poll(省電-輪詢) |
| 01 | 1011 | RTS(請求發(fā)送,即:?Request To Send ,預約信道,幀長20字節(jié)) |
| 01 | 1100 | CTS(清除發(fā)送,即:Clear To Send ,同意預約,幀長14字節(jié)) |
| 01 | 1101 | ACK(確認) |
| 01 | 1110 | CF-End(無競爭周期結(jié)束) |
| 01 | 1111 | CF-End(無競爭周期結(jié)束)+CF-ACK(無競爭周期確認) |
2.1.3.1 RTS幀 subtype 1011
?
2.1.3.2?CTS幀 ?subtype 1100
?
?
2.1.3.3 ACK幀 subtype 1101
2.1.3.4?PS-Poll幀 ?subtype ?1010
? ? 作用:當sta從省電模式中蘇醒,便發(fā)送一個PS-poll給基站。
?
?
3. Radiotap Header(monitor信息)
? ? 在monitor模式時,內(nèi)核在MAC幀前面提供額外的信息。稱為Radiotap Header,其包含的信息有MAC時間戳,SSI信號強度,頻道頻率等。
????對應(yīng)的數(shù)據(jù)結(jié)構(gòu)如下:
? ? 這里的it_len表明了radiotap_header的長度,按上面抓到的包,這里的值為26。
? ? 因此,在monitor模式得到的RAW包,我們首先要偏移it_len個字節(jié),以此得到MAC頭。
4.?RTS/CTS 幀 (數(shù)據(jù)發(fā)送原子性)
? ? 這兩個幀出現(xiàn)的原因是 無線收發(fā)器(STA)通常無法同時收發(fā)數(shù)據(jù)。使用這兩個幀可以讓STA處于收或發(fā)狀態(tài)。
? ? 這樣比較好理解,正是因為如此,當STA開始發(fā)送RTS,說明STA發(fā)數(shù)據(jù);AP開始發(fā)送RTS,說明RTS接收數(shù)據(jù)。
????當其他STA收到RTS時,將延后數(shù)據(jù)包的發(fā)送。而具體延遲多久,由正在傳輸?shù)腗AC頭中的持續(xù)時間決定(Duration ID)。如:
????RTS(Request-to-Send):請求發(fā)送數(shù)據(jù)。
????CTS(Clear-to-Send):清空傳送區(qū)域。
? ? 兩個幀的過程如圖:
? ? ①為 STA ?②為AP?
????抓的兩個包來看下,下面是STA作為請求方
? ? 下面是STA作為接收方:
? ?上圖的223.252.199.6(00:36:76:54:b4:a2)是ap,172.21.11.2(a4:d1:d2:60:bb:0d)是STA,其Qos數(shù)據(jù)數(shù)據(jù)如下:
? ? RTS和CTS幀會延長幀傳輸過程,RTS,CTS,數(shù)據(jù)幀,以及ACK視為同一原子操作的一部分。
????用戶可以通過調(diào)整RTS閾值,來控制RTS/CTS交換過程。只要大于此閾值,RTS/CTS交換過程就會進行,小于該閾值就會直接傳送幀。
????對應(yīng)的SOCK字段如下:
????
5. WIFI建立關(guān)聯(lián)過程
? ? 建立連接認證的過程主要由管理幀負責。
| 1 | 1000 | Beacon,STA接受AP信標幀,感知到AP,獲取SSID及AP參數(shù) |
| 2 | 0100 | STA主動發(fā)送Probe探測請求 |
| 3 | 0101 | AP應(yīng)答STA Prob Response |
| 4 | 1011 | STA發(fā)送Authentication請求認證 |
| 5 | AP應(yīng)答Authentication請求,指示STA認證成功或失敗 | |
| 6 | 0000 | STA發(fā)送Association請求 |
| 7 | 0001 | AP應(yīng)答Association Response |
????以上是連接過程,當需要斷開連接時,STA發(fā)送Disassociation
5.1 wifi攻擊原理
? ? 從連接的過程我們可以發(fā)現(xiàn),我們可以采取強制斷開連接,使得STA重新進行連接。以此獲得認證數(shù)據(jù)包。
? ? 因此,可以利用Disassociation包或Deanthentication包實現(xiàn)。
6. 加密算法
? ? 安全認證主要由802.11i規(guī)范。以下是幾種加密算法。具體的連接過程將在下篇中說明。
? ? 1)WEP,Wire Equivalent Private ??https://en.wikipedia.org/wiki/Wired_Equivalent_Privacy?
? ? 2)CCMP, CTR with CBC-MAC protocol 基于AES加密?https://en.wikipedia.org/wiki/CCMP
? ? 3)WPA , Wi-Fi Protected Access?https://en.wikipedia.org/wiki/WPA?
? ? 4)TKIP,Temporal Key Integrity Protocal?https://en.wikipedia.org/wiki/Temporal_Key_Integrity_Protocol?
? ? 5)WPA2 ,Wi-Fi Protected Access 2 ?https://en.wikipedia.org/wiki/Wi-Fi_Protected_Access
?
?
?
?
?
?
本文參考《802.11無線網(wǎng)絡(luò) 權(quán)威指南》
http://www.cnblogs.com/rainbowzc/p/5410876.html?
http://blog.csdn.net/robertsong2004/article/details/42805803?
http://blog.chinaunix.net/uid-9525959-id-3326047.html
總結(jié)
以上是生活随笔為你收集整理的802.11 MAC层帧解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 802.11 区分广播 多播 单播帧
- 下一篇: python 安装serial模块