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...