無線產品如藍牙、zigbee開發過程中,由於沒有直接連接,通常開發中都要用到一個dongle用於抓取空中數據包,然後分析定位網絡、通訊問題。Wi-Fi開發中同樣需要空中抓包,但是Wi-Fi用於抓包的設備不叫dongle,通常叫sniffer。
我們知道,無論有線以太網還是無線Wi-Fi,在正常工作模式下,mac層只處理廣播包或者發給自己的數據包,目標地址與自己mac地址不符的數據包都將會被丟棄。sniffer其實是將Wi-Fi芯片設置爲混雜模式,該模式下Wi-Fi芯片將會把收到的所有數據都傳到上層,這樣上層應用軟件就可以實現數據抓包、分析了。
要實現Wi-Fi空中抓包,需要滿足以下幾個條件:
1:一臺電腦
2:一個支持進入混雜模式的網卡
3:一個數據分析軟件
1、Omnipeek概述
如果你用的是純Linux系統或蘋果mac電腦,那麼通常可以直接使用wireshark,通過電腦自帶的網卡來抓取無線數據包,Linux和mac一般都支持網卡進入混雜模式。但你如果用的是和我一樣的windows系統,那麼就得慢慢看完下面的文章了。Windows下的網卡好像沒進混雜模式這麼一說吧?那麼我們就需要用到一個叫omnipeek的軟件和支持sniffer的外置USB網卡及對應的sniffer網卡驅動。
Omnipeek是一款功能強大的網絡報文掃描軟件,它不僅可以掃描有線網絡下的報文信息,還可以針對無線網卡進行監控和掃描。通過該軟件我們可以更清晰更快捷的定位無線網絡故障,根據掃描結果調整自己的無線設備的參數信息。和其他sniffer工具一樣Omnipeek可以針對自己網卡接收和發送的每個報文進行分析和保存,還可以針對一些報文進行分析,結果各種過濾規則可以讓我們更清楚的瞭解 當前網絡中存在的問題。同時Omnipeek可以針對無線網卡進行監控,通過對無線報文的分析,瞭解無線網絡的運行狀態,讓用戶可以清楚的知道無線網絡使用的頻段、信號強弱、SSID等信息。
目前使用較多的版本爲Omnipeek_enterprise_11,可支持Windows 64bit操作系統。
2、抓包網卡
Omnipeek並不支持所有無線網卡,支持的無線網卡可在https://mypeek.wildpackets.com/driver_downloads.php查詢,同時需要安裝特殊的驅動纔可以抓包。
我使用的是很多Wi-Fi芯片廠家工程師都在使用的“ Cisco WUSB600N V2雙頻無線網卡”,淘寶上可以買到,價格略高。
賣家會提供抓包專用windows驅動,普通驅動程序無法實現抓包,安裝完成可在設備管理器中查到該網卡。
3:抓包設置
下載和安裝好Omnipeek之後啓動Omnipeek,在windows10下,必須“以管理員身份運行”。
啓動Omnipeek之後,首先我們需要建立一個新的捕捉。在啓動頁面中“New Capture"啓動新普通,在該頁面下可以進行進行“捕捉”、“存儲”等相關設置。
Omnipeek支持有線網卡和無線網卡,在Adapter窗口中選擇適配器。我當前使用的是“WLAN4”,其中只有Omnipeek API顯示爲“Yes”表明該網卡Omnipeek支持捕捉。
Omnipeek抓包需要指定對應信道,在“802.11”項中設置,有2種模式可以選擇,“Number”中選擇固定1個信道。或“Scan”中選擇多個信道。
點擊“確定”後,點擊右上角“Start Capture”即可開始抓包。
4:過濾
要通過Omnipeek來達到我們預設的目標,最重要的用好“過濾”功能。Omnipeek提供了強大了過濾器功能,可通過多個入口編輯“Filters”。
- 在“Veiw”->“Filters”添加過濾器
- “New Capture”->"Filters"中添加過濾
- 在Capture頁面左邊欄“Capture”->"Filters"配置添加過濾器
在過濾器中,選擇軟件自帶的過濾條件,或點擊“Insert”,可添加自定義過濾條件。
選中“address filter”並在地址欄中輸入地址,並在地址類型中選擇相關的類型。
配置完過濾器後,可點擊“New Capture”立即開始捕捉。此時抓包的數據已經進行了過濾,與過濾項無關的數據已經被過濾。
同時我們也可以先抓包再過濾,點擊“Capture”頁面左上角“篩選”選擇過濾條件。
過濾欄會顯示當前選中的過濾項。
還可以通過插入多個操作,進行多個過濾項同時過濾。
點擊右邊欄開始綠色箭頭,軟件會彈出結果選擇頁面,可進行不同操作,如“Copy selected packets to new widow”複製到新的窗口分析。
新窗口數據顯示的都是當前過濾器選中的數據包。