在Wireshark中過濾數(shù)據(jù)包
介紹
數(shù)據(jù)***濾可讓你專注于你感興趣的確定數(shù)據(jù)集。如你所見,Wireshark 默認(rèn)會抓取所有數(shù)據(jù)包。這可能會妨礙你尋找具體的數(shù)據(jù)。 Wireshark 提供了兩個功能強大的過濾工具,讓你簡單而無痛地獲得精確的數(shù)據(jù)。
Wireshark 可以通過兩種方式過濾數(shù)據(jù)包。它可以通過只收集某些數(shù)據(jù)包來過濾,或者在抓取數(shù)據(jù)包后進(jìn)行過濾。當(dāng)然,這些可以彼此結(jié)合使用,并且它們各自的用處取決于收集的數(shù)據(jù)和信息的多少。
布爾表達(dá)式和比較運算符
Wireshark 有很多很棒的內(nèi)置過濾器。當(dāng)開始輸入任何一個過濾器字段時,你將看到它們會自動補完。這些過濾器大多數(shù)對應(yīng)于用戶對數(shù)據(jù)包的常見分組方式,比如僅過濾 HTTP 請求就是一個很好的例子。
對于其他的,Wireshark 使用布爾表達(dá)式和/或比較運算符。如果你曾經(jīng)做過任何編程,你應(yīng)該熟悉布爾表達(dá)式。他們是使用 and、or、not 來驗證聲明或表達(dá)式的真假。比較運算符要簡單得多,它們只是確定兩件或更多件事情是否彼此相等、大于或小于。
過濾抓包
在深入自定義抓***濾器之前,請先查看 Wireshark 已經(jīng)內(nèi)置的內(nèi)容。單擊頂部菜單上的 “Capture” 選項卡,然后點擊 “Options”??捎媒涌谙旅媸强梢跃帉懽?**濾器的行。直接移到左邊一個標(biāo)有 “Capture Filter” 的按鈕上。點擊它,你將看到一個新的對話框,其中包含內(nèi)置的抓***濾器列表。看看里面有些什么。
Wireshark dialog for creating a capture filter
在對話框的底部,有一個用于創(chuàng)建并保存抓***濾器的表單。按左邊的 “New” 按鈕。它將創(chuàng)建一個填充有默認(rèn)數(shù)據(jù)的新的抓***濾器。要保存新的過濾器,只需將實際需要的名稱和表達(dá)式替換原來的默認(rèn)值,然后單擊“Ok”。過濾器將被保存并應(yīng)用。使用此工具,你可以編寫并保存多個不同的過濾器,以便它們將來可以再次使用。
抓包有自己的過濾語法。對于比較,它不使用等于號,并使用 > 和 < 來用于大于或小于。對于布爾值來說,它使用 and、or 和 not。
例如,如果你只想監(jiān)聽 80 端口的流量,你可以使用這樣的表達(dá)式:port 80。如果你只想從特定的 IP 監(jiān)聽端口 80,你可以使用 port 80 and host 192.168.1.20。如你所見,抓***濾器有特定的關(guān)鍵字。這些關(guān)鍵字用于告訴 Wireshark 如何監(jiān)控數(shù)據(jù)包以及哪一個數(shù)據(jù)是要找的。例如,host 用于查看來自 IP 的所有流量。src 用于查看源自該 IP 的流量。與之相反,dst 只監(jiān)聽目標(biāo)到這個 IP 的流量。要查看一組 IP 或網(wǎng)絡(luò)上的流量,請使用 net。
過濾結(jié)果
界面的底部菜單欄是專門用于過濾結(jié)果的菜單欄。此過濾器不會更改 Wireshark 收集的數(shù)據(jù),它只允許你更輕松地對其進(jìn)行排序。有一個文本字段用于輸入新的過濾器表達(dá)式,并帶有一個下拉箭頭以查看以前輸入的過濾器。旁邊是一個標(biāo)為 “Expression” 的按鈕,另外還有一些用于清除和保存當(dāng)前表達(dá)式的按鈕。
點擊 “Expression” 按鈕。你將看到一個小窗口,其中包含多個選項。左邊一欄有大量的條目,每個都有附加的折疊子列表。你可以用這些來過濾所有不同的協(xié)議、字段和信息。你不可能看完所有,所以***是大概看下。你應(yīng)該注意到了一些熟悉的選項,如 HTTP、SSL 和 TCP。
Wireshark dailog for creating a results filter
子列表包含可以過濾的不同部分和請求方法。你可以看到通過 GET 和 POST 請求過濾 HTTP 請求。
你還可以在中間看到運算符列表。通過從每列中選擇條目,你可以使用此窗口創(chuàng)建過濾器,而不用記住 Wireshark 可以過濾的每個條目。對于過濾結(jié)果,比較運算符使用一組特定的符號。 == 用于確定是否相等。> 用于確定一件東西是否大于另一個東西,< 找出是否小一些。 >= 和 <= 分別用于大于等于和小于等于。它們可用于確定數(shù)據(jù)包是否包含正確的值或按大小過濾。使用 == 僅過濾 HTTP GET 請求的示例如下:http.request.method == "GET"。
布爾運算符基于多個條件將小的表達(dá)式串到一起。不像是抓包所使用的單詞,它使用三個基本的符號來做到這一點。&& 代表 “與”。當(dāng)使用時,&& 兩邊的兩個語句都必須為真值才行,以便 Wireshark 來過濾這些包。|| 表示 “或”。只要兩個表達(dá)式任何一個為真值,它就會被過濾。如果你正在查找所有的 GET 和 POST 請求,你可以這樣使用 ||:(http.request.method == "GET") || (http.request.method == "POST")。! 是 “非” 運算符。它會尋找除了指定的東西之外的所有東西。例如,!http 將展示除了 HTTP 請求之外的所有東西。
總結(jié)思考
過濾 Wireshark 可以讓你有效監(jiān)控網(wǎng)絡(luò)流量。熟悉可以使用的選項并習(xí)慣你可以創(chuàng)建過濾器的強大表達(dá)式需要一些時間。然而一旦你學(xué)會了,你將能夠快速收集和查找你要的網(wǎng)絡(luò)數(shù)據(jù),而無需梳理長長的數(shù)據(jù)包或進(jìn)行大量的工作。