本文主要介紹windows中抓包命令,以及保存為多個文件的方法
說一說保存為多個文件存儲數據包這個問題的由來,一般如果長時間抓包,有可能需要等上幾個小時,因為這個時候抓包的內容都是存放在內存中的,幾個小時的數據包,特別是如果涉及到音視頻的數據包是很大的,幾個小時可能會達到幾個G的大小,這種情況下會導致內存溢出,程序直接異常。這個時候就需要考慮使用自動分文件存儲來抓包了。
(一)使用wireshark圖形界面進行抓包
可以在wireshark的界面上進行一些設置之后再開啟抓包過程,這個時候wireshark會自動根據我們指定的文件名並加上序號和時間來保存每個文件段了,具體過程如下:
選擇Capture—Interfaces… 打開網絡接口對話框
選擇要對其進行抓包的網絡設備,點擊該條目后面的Options按鈕
在該對話框中就可以設置使用多個文件存儲抓到的數據,wireshark會根據我們指定的文件名自動指定每一段的文件名,其名字為 “指定的文件名_序號_日期時間.擴展名”,並且該對話框中可以設置各種文件分段的條件,以及停止抓包的條件,非常靈活。
通過這種方式設置進行多文件保存數據非常方便,但是有一個問題如下:
經過長時間抓包之后發現會出現多個 “Closing file!”的對話框,在任務欄上面每一個對話框都會多出一個wireshark的圖標,抓包時間越長,文件分段越多該對話框越多,最終會占滿整個任務欄。並且只能通過鼠標在任務欄wireshark的圖標上右鍵關閉。通過google搜索發現這是wireshark的一個bug,沒有好的解決辦法。所以推薦使用命令行的方式進行長時間抓包。
(二)通過命令抓包
在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。
通過命令行的方式抓包長時間運行沒有任何問題,推薦使用這種方式。
(三)
通過dumpcap.exe命令行的方式進行抓包,可以解決文章開頭提出的問題,但是dumpcap.exe該工具只有在安裝wireshark之后才會有,該程序的運行也依賴wireshark安裝目錄下的其他的dll,如果不希望安裝wireshark這么繁瑣,可以選擇使用tcpdump的windows版本,只有一個exe程序沒有其他依賴,tcpdump.exe不是wireshark的一部分,需要單獨下載。
通過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一個文件。