WiFI探針的實現與研究

2021-08-13 23:49:31 字數 3488 閱讀 2103

management frame(管理幀:type=00)

control frame(控制幀:type=01)

data frame(資料幀:type=10)

網絡卡的監聽模式,很多網絡卡裝置並不支援。因此我們需要一張支援監聽模式的網絡卡裝置。

linux下使用iw list命令檢視自己網絡卡是否支援監聽模式,如果不支援自行準備一張支援monitor模式的網絡卡

如果支援,使用ifconfig檢視當前裝置數,找到支援monitor模式的網絡卡使用命令:

1.關閉網絡卡 ifconfig wlan1 down

2.設定監聽模式 iwconfig wlan1 mode monitor

3.開啟網絡卡 ifconfig wlan1 up

至此網絡卡監聽模式開啟

關於實現probe幀的監聽,需要用到一下模組。

1.scapy模組

2.manuf模組 (通過wireshark』s oui database來進行mac位址匹配)

3.pcapy模組

4.multiprocessing模組

其餘模組可有可無。

關於安裝模組就不細說了。有一點需要講一下,關於manuf模組的安裝。通過pip install manuf安裝成功後,其實是無法呼叫成功的。

並在資料夾下的manuf.py的86行修改為io.open(path.join(path.dirname(_file_),manuf_name),』r』,encode(『utf-8』))即可成功呼叫manuf.macparser()

安裝完成後即可開始監聽。

根據前邊對幀的了解,我們知道probe request幀是手機,電腦,平板等裝置發出的請求幀,這個幀屬於管理幀的分組。

通過分析請求幀我們可知道,請求幀的subtype == 0x04,其中包括mac位址資訊。裝置搜尋熱點時傳送的探求訊號,在一些新裝置中,為了隱藏自己的真實mac位址,採用的是傳送偽mac位址的探求訊號,所以在探求幀中是無法獲取真實的mac位址。一些老裝置中沒有此類功能,所以可以採集到真實的mac位址。

響應幀subtype==0x05,同樣包含mac位址資訊。同樣如此,基站向偽mac位址回應裝置,所以統一無法獲得真實的mac位址資訊。

在裝置接入基站的過程中,需要進行關聯請求也可稱為認證,在此過程中,裝置所發射的幀中所包含的mac頭位址中真實的mac位址,因此我們可以在此過程中獲取真實的mac資訊。

通過分析請求幀我們可知道,請求幀的subtype == 0x00,其中包括mac位址資訊。同樣還存在乙個關聯響應幀,subtype==0x01.

到此為止我們可以獲取到的資訊有限mac為主

缺失rssi

rssi:received signal strength indication接收的訊號強度指示,無線傳送層的可選部分,用來判定鏈結質量,以及是否增大廣播傳送強度。rssi經研究不屬於802.11g協議幀的內容。但是802.11給出了rssi的描述。

rssi是進過物理層是加入幀中的。

802.11將phy進一步劃分為兩個組成元件:

1.物理層收斂程式(physical layer convergenceprocedure,簡稱plcp)負責將mac幀對映到傳輸介質;

2.實際搭配介質physical medium dependent,簡稱pmd),負責傳送這些幀。

msdu(mac層業務資料單元。這是最原始的待發資料資訊)經過封裝變成mpdu(mac層協議資料單元),mpdu傳到plcp子層變成psdu(plcp子層業務資料單元),psud經過封裝變成ppdu(plcp子層協議資料單元)。

可看出radiotap幀中的成員資訊

參考資料

究竟什麼是rssi

貼上部分原始碼

from scapy.all import *

import manuf.manuf as manuf

defpackethandler

(pkt):

addr,addrt,addrd,target=none,none,none,none

if pkt.haslayer(dot11assoreq): #dot11assoreq為關聯請求幀

addrt=pkt.getlayer(dot11).addr1

addrd=pkt.getlayer(dot11).addr2

target=pkt.getlayer(dot11assoreq).info or

b'unkonwn'

addr=[addrt,addrd]

manuf = parser.get_all(addr[1]) or

'unkonwn'

# 獲取mac位址的資訊

pass

elif pkt.haslayer(dot11probereq): #dot11probereq為探求幀

addrt=pkt.getlayer(dot11).addr1

addrd=pkt.getlayer(dot11).addr2

target=pkt.getlayer(dot11probereq).info or

b'unkonwn'

addr = [addrt, addrd]

if addr:

if addr not

in ap_list:

manuf = parser.get_all(addr[1]) or

'unkonwn'

# 獲取mac位址的資訊

pass

parser=manuf.macparser()

sniff(iface="wlan0", prn=packethandler)

wifi探針與伺服器通訊介面協議

wifi探針與伺服器通訊介面協議 版本號修改內容 修改人修改時間 v1.0 建立許軍 2015 8 6 v1.1 補充許軍 2015 8 24 v1.2 更改通訊協議 許軍2015 12 10 名詞解釋 wifi探針 802.11 中probe request frames 專案簡介 wifi探針,...

WiFi探針的工作原理及採集的資料?

要深入了解wifi探針技術,首先先認識wifi使用的網路協議,wifi採用的是ieee802.11協議集,此協議集包含許多子協議。其中按照時間順序發展,主要有 1 802.11a,2 802.11b,3 802.11g 4 802.11n。在網路通訊中,資料被封裝成了幀,幀就是指通訊中的乙個資料塊。...

WiFi探針訊號受到哪些環境及因素的影響?

在使用wifi探針的過程中會發現獲取到的訊號強度值 rssi值 會出現較大的波動,本文將初步的 wifi探針的獲取到的訊號強度,受到哪些環境和因素的影響。便於大家在開發過程做為參考值。訊號強度波動的原因 在實際的使用過程中,會發現無線訊號會出現比較大的波動性。802.11g標準描述的速率為54 mb...