要深入了解wifi探針技術,首先先認識wifi使用的網路協議,wifi採用的是ieee802.11協議集,此協議集包含許多子協議。其中按照時間順序發展,主要有:(1)802.11a,(2)802.11b, (3)802.11g(4)802.11n。在網路通訊中,資料被封裝成了幀,幀就是指通訊中的乙個資料塊。但是幀在資料鏈路層傳輸的時候是有固定格式的,不是隨便的封裝和打包就可以傳輸,大小有限制,最小46位元組,最大1500位元組所以我們必須按照這個規則來封裝。下面802.11的幀結構:
從上面的結構可以知道,前倆個位元組為:幀控制字段。
控制欄位的前2bit節為:協議型別,目前此值為:0。
1)控制幀:(control frame,例如rts幀、cts幀、ack幀)用於競爭期間的握手通訊和正向確認、結束非競爭期等;
2)管理幀:(management frame,例如beacon幀、probe request幀)主要用於sta與ap之間協商、關係的控制,如關聯、認證、同步等;
3)資料幀:(data frame,承載資料的載體)用於在競爭期和非競爭期傳輸資料。
1、管理幀
beaconframe:信標幀,是相當重要的維護機制,主要來宣告某個ap網路的存在。定期傳送的信標,可讓移動wifi裝置得知該網路的存在,從而調整加入該網路所必要的引數。在基礎網路裡,ap必須負責傳送beacon幀,beacon幀所及範圍即為基本服務區域。 在基礎型網路裡,所有溝通都必須通過接入點,因此wifi裝置不能距離太遠,否則無法接收到信標。下圖是幀格式:
2、管理幀probe request:探測請求幀,wifi裝置將會利用probe request幀,掃瞄所在區域內目前有哪些802.11網路。下圖是幀格式:
3、資料幀:
data
資料幀,當接入點要送出乙個幀給wifi裝置但是不必確認之前所傳送的資訊時,就會使用標準的資料幀。標準的資料幀並不會徵詢對方是否有資料待傳,因此不允許接收端傳送任何資料。無競爭週期所使用的純資料(data-only)幀和無競爭週期所使用的資料幀完全相同。看了以上的網路知識,我們現在說說wifi探針是怎麼工作的,還是先看張圖:
就像圖中描述的一樣,我們的wifi探針其實就是乙個ap,它定時的向自己的四周廣播傳送beacon幀,用來通知附近的wifi裝置,ap是存在的,(好比它一直在向周圍喊著,我在這裡,大家快來連線我啊)。 我們的wifi裝置,手機,平板電腦等,也不停的傳送著probe幀,去尋找附近可用的ap。在probe幀的介紹中就我們可以看到probe幀包含了裝置的mac位址,當我們的ap接收到probe幀之後就獲取了這個裝置的mac位址,而這個ap就是我們的wifi探針。因此只要在wifi探針覆蓋區域內的裝置開啟著wifi,探針就能收集到他的mac位址。
可採集資料:
裝置mac位址;
wifi訊號強度;
wifi訊號頻道;
訊號幀型別。
記錄格式:
探針mac|
抓取的裝置
mac|
裝置傳送的
wifi
包的型別
|子型別
|訊號強度
|時間戳
資料釋義
答案是不會!
探針所收集的資料內容我們來看看wifi探針裝置究竟會收集什麼資訊?前面我們已經看到了,在不連線wifi的情況下,移動裝置只會傳送probe幀,此時我們並不能通過探針訪問網路進行資料傳輸,探針僅僅只能接收到wifi裝置傳送的probe幀,收集probe幀攜帶的mac位址,所以此時我們收集到資訊是絕對無關使用者個人資訊和裝置上其他資訊的。
探針的資料處理由於探針本身設計僅僅是探測周邊有些什麼裝置,因此並不產生大量資料,設計的時候就不會將收集到的資料儲存在本身,而是通過有線連線直接傳送到中心伺服器上,這樣即使有惡意的人將探針取走,也不能獲得探針收集到的資訊。同時有線連線也保證資料傳輸過程不容易通過電磁波的形式被監聽和竊取。中心伺服器一般都是在idc機房裡,而要進入idc機房是需要經過idc層層許可的。因而不論是資料的傳輸還是儲存,探針的資料都是安全的。
WiFI探針的實現與研究
management frame 管理幀 type 00 control frame 控制幀 type 01 data frame 資料幀 type 10 網絡卡的監聽模式,很多網絡卡裝置並不支援。因此我們需要一張支援監聽模式的網絡卡裝置。linux下使用iw list命令檢視自己網絡卡是否支援監聽...
WiFi探針訊號受到哪些環境及因素的影響?
在使用wifi探針的過程中會發現獲取到的訊號強度值 rssi值 會出現較大的波動,本文將初步的 wifi探針的獲取到的訊號強度,受到哪些環境和因素的影響。便於大家在開發過程做為參考值。訊號強度波動的原因 在實際的使用過程中,會發現無線訊號會出現比較大的波動性。802.11g標準描述的速率為54 mb...
Ruby探針的基本實現原理
李哲 may 13,2015 ruby語言支援語法級別的系統,框架,甚至語言本身的方法複寫,一般叫做元程式設計 meta programming 此基礎之上還有一些術語為mixin,方法的動態定義,執行時類改寫等等,這些技術和機制可以讓語言本身就能實 現其他語言需要位元組碼才能實現的功能,例如探針需...