1. 程式人生 > >wireshark長時間抓包分多個文件

wireshark長時間抓包分多個文件

頂部 ons filesize ice size 文件的 res 溢出 png

閱讀目錄

  • 前言
  • 通過wireshark界面進行設置
  • 通過命令行工具dumpcap.exe進行抓包
  • 通過tcpdump的windows版本進行抓包
回到頂部

前言

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


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

回到頂部

通過wireshark界面進行設置

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

技術分享圖片

選擇Capture—Interfaces… 打開網絡接口對話框

技術分享圖片

選擇要對其進行抓包的網絡設備,點擊該條目後面的Options按鈕

技術分享圖片

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


通過這種方式設置進行多文件保存數據非常方便,但是有一個問題如下:
技術分享圖片

經過長時間抓包之後發現會出現多個 “Closing file!”的對話框,在任務欄上面每一個對話框都會多出一個wireshark的圖標,抓包時間越長,文件分段越多該對話框越多,最終會占滿整個任務欄。並且只能通過鼠標在任務欄wireshark的圖標上右鍵關閉。通過google搜索發現這是wireshark的一個bug,沒有好的解決辦法。所以推薦使用命令行的方式進行長時間抓包。

回到頂部

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

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

技術分享圖片

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

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

-i 表示指定捕獲的網卡設備,這裏指定的是網卡設備的標識,是一個字符串,可以在wireshark界面程序中查看,如下:
技術分享圖片

-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版本下載地址

技術分享圖片

通過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一個文件。

wireshark長時間抓包分多個文件