
在這篇文章中,我将介紹一些操作 pcap 檔案的工具,以及如何使用它們 。
<a target="_blank"></a>
wireshark,是最受歡迎的 gui 嗅探工具,實際上它帶了一套非常有用的指令行工具集。其中包括 editcap 與 mergecap。editcap 是一個萬能的 pcap 編輯器,它可以過濾并且能以多種方式來分割 pcap 檔案。mergecap 可以将多個 pcap 檔案合并為一個。 這篇文章就是基于這些 wireshark 指令行工具的。
如果你已經安裝過 wireshark 了,那麼這些工具已經在你的系統中了。如果還沒裝的話,那麼我們接下來就安裝 wireshark 指令行工具。 需要注意的是,在基于 debian 的發行版上我們可以不用安裝 wireshark gui 而僅安裝指令行工具,但是在 red hat 及 基于它的發行版中則需要安裝整個 wireshark 包。
debian, ubuntu 或 linux mint
$ sudo apt-get install wireshark-common
fedora, centos 或 rhel
$ sudo yum install wireshark
當安裝好工具後, 就可以開始使用 editca 與 mergecap 了。
通過 editcap, 我們能以很多不同的規則來過濾 pcap 檔案中的内容,并且将過濾結果儲存到新檔案中。
首先,以“起止時間”來過濾 pcap 檔案。 " - a < start-time > 和 " - b < end-time > 選項可以過濾出在這個時間段到達的資料包(如,從 2:30 ~ 2:35)。時間的格式為 “ yyyy-mm-dd hh:mm:ss"。
$ editcap -a '2014-12-10 10:11:01' -b '2014-12-10 10:21:01' input.pcap output.pcap
也可以從某個檔案中提取指定的 n 個包。下面的指令行從 input.pcap 檔案中提取100個包(從 401 到 500)并将它們儲存到 output.pcap 中:
$ editcap input.pcap output.pcap 401-500
使用 "-d < dup-window >" (dup-window可以看成是對比的視窗大小,僅與此範圍内的包進行對比)選項可以提取出重複包。每個包都依次與它之前的 < dup-window > -1 個包對比長度與md5值,如果有比對的則丢棄。
$ editcap -d 10 input.pcap output.pcap
周遊了 37568 個包, 在 10 視窗内重複的包僅有一個,并丢棄。
也可以将 < dup-window > 定義成時間間隔。使用"-w < dup-time-window >"選項,對比< dup-time-window > 時間内到達的包。
$ editcap -w 0.5 input.pcap output.pcap
檢索了 50000 個包, 以0.5s作為重複視窗,未找到重複包。
當需要将一個大的 pcap 檔案分割成多個小檔案時,editcap 也能起很大的作用。
将一個 pcap 檔案分割成資料包數目相同的多個檔案
$ editcap -c <packets-per-file> <input-pcap-file> <output-prefix>
輸出的每個檔案有相同的包數量,以 < output-prefix >-nnnn的形式命名。
以時間間隔分割 pcap 檔案
$ editcap -i <seconds-per-file> <input-pcap-file> <output-prefix>
如果想要将多個檔案合并成一個,用 mergecap 就很友善。
當合并多個檔案時,mergecap 預設将内部的資料包以時間先後來排序。
$ mergecap -w output.pcap input.pcap input2.pcap [input3.pcap . . .]
如果要忽略時間戳,僅僅想以指令行中的順序來合并檔案,那麼使用 -a 選項即可。
例如,下列指令會将 input.pcap 檔案的内容寫入到 output.pcap, 并且将 input2.pcap 的内容追加在後面。
$ mergecap -a -w output.pcap input.pcap input2.pcap
你是否使用過 pcap 工具? 如果用過的話,你用它來做過什麼呢?
原文釋出時間:2015-01-27
本文來自雲栖合作夥伴“linux中國”