wireshark長時間抓包分多個檔案

薰衣草的旋律發表於2015-12-23

前言

說一說這個問題的由來,一般使用wireshark不需要長時間抓包的,但是有時候遇到網路通訊中非常棘手的問題,例如一個小時出現一次或者幾個小時出現一次問題的情況,這種情況下就必須長時間抓包了。但是如果在wireshark中開始抓包之後等上幾個小時肯定會出問題,因為這個時候抓包的內容都是存放在記憶體中的,幾個小時的資料包,特別是如果涉及到音視訊的資料包是很大的,幾個小時可能會達到幾個G的大小,這種情況下wireshark會記憶體溢位,程式直接異常。

這個時候就需要使用wireshark提供的自動分檔案儲存的功能了。

通過wireshark介面進行設定

可以在wireshark的介面上進行一些設定之後再開啟抓包過程,這個時候wireshark會自動根據我們指定的檔名並加上序號和時間來儲存每個檔案段了,具體過程如下:

1

選擇Capture—Interfaces… 開啟網路介面對話方塊

1

選擇要對其進行抓包的網路裝置,點選該條目後面的Options按鈕

1

在該對話方塊中就可以設定使用多個檔案儲存抓到的資料,wireshark會根據我們指定的檔名自動指定每一段的檔名,其名字為 “指定的檔名_序號_日期時間.副檔名”,並且該對話方塊中可以設定各種檔案分段的條件,以及停止抓包的條件,非常靈活。

通過這種方式設定進行多檔案儲存資料非常方便,但是有一個問題如下:
1

經過長時間抓包之後發現會出現多個 “Closing file!”的對話方塊,在工作列上面每一個對話方塊都會多出一個wireshark的圖示,抓包時間越長,檔案分段越多該對話方塊越多,最終會佔滿整個工作列。並且只能通過滑鼠在工作列wireshark的圖示上右鍵關閉。通過google搜尋發現這是wireshark的一個bug,沒有好的解決辦法。所以推薦使用命令列的方式進行長時間抓包。

通過命令列工具dumpcap.exe進行抓包

在wireshark安裝之後,在其安裝目錄下會有一個dumpcap.exe的命令列工具,實際上wireshark的介面程式也是使用這個命令列工具工作的,我們可以不需要使用介面,而直接使用該命令列工具進行抓包工作,其命令如下:

1

命令的含義解釋如下:
dumpcap.exe -i \Device\NPF_{845F9D1E-8F0B-4991-9F9A-C55D107A046B} -w d:\000\ddd.pcap -b filesize:50000

dumpcap.exe在wrieshark的安裝根目錄就可以看到,其中:

-i 表示指定捕獲的網路卡裝置,這裡指定的是網路卡裝置的標識,是一個字串,可以在wireshark介面程式中檢視,如下:
1

-w 表示儲存的路徑以及檔名,如果是分檔案儲存,則會自動命名為ddd_00001_20151221213115.pcap 的形式,也就是“filename_序號_時間.副檔名”。

-b filesize:N  表示指定每個檔案的大小是NKB,如上50000表示 50000 KB,也就是50M。

通過命令列的方式抓包長時間執行沒有任何問題,推薦使用這種方式。

通過tcpdump的windows版本進行抓包

通過dumpcap.exe命令列的方式進行抓包,可以解決文章開頭提出的問題,但是dumpcap.exe該工具只有在安裝wireshark之後才會有,該程式的執行也依賴wireshark安裝目錄下的其他的dll,如果不希望安裝wireshark這麼繁瑣,可以選擇使用tcpdump的windows版本,只有一個exe程式沒有其他依賴,tcpdump.exe不是wireshark的一部分,需要單獨下載,tcpdump windows版本下載地址

1

通過tcpdump –D 命令可以列出所有網路裝置列表,注意該列表中的網路裝置標識與我們在wireshark的裝置屬性中拷貝的裝置標識有一點區別,在wireshark中拷貝的裝置標識都有NPF_的字首,因為wireshark安裝的是NPF驅動,這是不一樣的,所以wireshark的命令列工具dumpcap.exe使用的網路裝置標識以wireshark中檢視的為準,而這裡的tcpdump.exe使用的網路裝置標識以 tcpdump -D命令列出的為準。

我們可以通過tcpdump –D 得出的網路裝置列表每一項後面的描述資訊,與我們當前使用的網路連線的描述資訊比較,可以得出我們需要捕獲的網路連線對應的裝置標識。

命令說明:
tcpdump.exe -i \Device\{89515393-AC8F-4D23-9A03-AF35F9950E72} -w E:\000\test.pcap -C 2
    
-i 指定要捕獲的網路裝置的標識。
-w 指定儲存的檔案,如果分段則會自動儲存為  test.pcap、test.pcap1、test.pcap2 等,這些檔案都可以直接拖到wireshark中開啟。
-C 注意這裡是大寫,表示每一個分段檔案的大小,單位是M,這裡 -C 2 表示2M一個檔案。

相關文章