2012-10-29 86 views
0

我要分析網絡流量,但沒有將其連接上無線網絡只是 開關和嗅探處於混雜模式捕獲IEEE 802.11數據包,而無需連接到網絡

我的包(IEEE 802.11幀) 試圖libpcap的,但它可以在內部改變datalinktype因爲我給WiFi接口在

descr=pcap_open_live("en1", MAXBYTES2CAPTURE, 1, 512, errbuf); 

(如我們所知的Mac OS X的EN1爲WiFi接口)

現在,當我做到這一點

printf("%s", pcap_datalink_val_to_name(pcap_datalink(descr))); 

它給我造成"ethernet"
我曾試圖捕捉使用Wireshark的,無需連接到我的WiFi網絡數據包,它的工作! 我能夠捕獲Beacon , Acknowledgement and Authentication frames而無需連接到我的wifi網絡。

現在:

  1. 我必須做一個網卡驅動程序爲或libpcap的可以做,如果是如何?
  2. 是Wireshark使得一些類型的驅動程序針對的?如果是,請幫助我找到它的源代碼。
    • 我已經試過蘋果的CFNetwork的,但它也不能沒有連接到網絡捕獲。
    • 這將是非常有益的,如果我得到一些用戶空間代碼的內核級編碼的一些建議是有點凝灰岩:(

我在MacOS 10.7在Xcode 4.5.1編碼

更新:
我已經這樣做了:

descr=pcap_create("e1", errbuf); 
pcap_set_rfmon(descr, 0); 
pcap_set_promisc(descr, 0); 
pcap_activate(descr);  
descr=pcap_open_live("en1", 2048, 1, 512, errbuf);     

而且是個ERE是在wifi的一個小監視器圖標,我可以嗅出 數據包,但只有當我連接到網絡上,我希望做同樣的 當我在未連接WiFi像捕捉燈塔和 確認幀指數據包通過我們的網絡卡檢測可用的wifi網絡

+0

得到我的答案 http://stackoverflow.com/questions/4516436/pcap-set-rfmon-does-not-work –

回答

2

如果你在雪豹或更高版本(你是,你正在運行獅)運行時,你應該使用新的pcap_create()/pcap_activate()的API,然後打開監視器通過調用pcap_create()pcap_activate()電話之間pcap_set_rfmon()模式。

這就是Wireshark 1.6.0和更高版本在檢查監視器模式複選框時所做的事情,以及在Wireshark 1.6.0和更高版本中tcpdump 1.0.0和更高版本以及TShark和dumpcap如果指定-I命令 - 線標誌。

默認情況下,許多操作系統,包括Wi-Fi接口,包括但不限於OS X,供應以太網頭部,而不是802。11個頭部,這就是爲什麼pcap_datalink_val_to_name(pcap_datalink(descr))報告以太網頭部。在Linux和OS X上,您必須進入監視模式以獲取802.11標頭;在* BSD上,您可以在不進入監控模式的情況下獲得802.11報頭。

您不需要自己的驅動程序即可進入OS X的監視模式; Wireshark不提供它自己的驅動程序。

+0

是的,我已經在監測模式,並能夠嗅探數據包,但如何做到這一點沒有連接到無線網絡,就像當你點擊無線網絡圖標時,你可以獲得無線網絡列表,當時接收到的數據包是我想要捕獲的 –

+0

監視模式應該工作,不管你是否連接到(「關聯與「)802.11網絡或不。但是,進入監控模式並不一定會自動將您與802.11網絡斷開連接 - 在運行OS X的大多數Mac電腦上都不會這樣做。 – 2014-01-17 20:14:11