什么時候使用Wireshark的搜索功能
在使用Wireshark的時候,通常都是先用“捕獲過濾器”、“顯示過濾器”來進行數(shù)據(jù)包的篩選。對于經(jīng)過篩選后的數(shù)據(jù)包,再根據(jù)自己的需要進行單獨分析。
但是有時候,我們只知道一些關(guān)鍵詞,并不清楚這些關(guān)鍵字怎么在“捕獲過濾器”或者“顯示過濾器”中怎么輸入。在這種情況下,搜索功能就體現(xiàn)出它的價值來。
第一步為什么是過濾呢?
因為通常在現(xiàn)場的環(huán)境中,我們抓到的包都非常多,但是我們關(guān)注的往往只是其中的一小部分數(shù)據(jù)包,所以往往第一步都是進行過濾。過濾的方法有兩種,通過“捕獲過濾器”過濾和“顯示過濾”進行過濾。
怎么使用Wireshark搜索功能
本來搜索功能是一個簡單的功能,并不需要寫筆記的。但是Wireshark默認的設(shè)置并不怎么合理,導(dǎo)致相比于其他軟件,有點不那么人性化。
Wireshark中的搜索包功能叫做“Find Packet”,可以在【Edit】->【Find Packet】中打開。
為了更方便的描述搜索功能該怎么用,我把操作步驟寫在了下面的這張圖中:

下面用文字的形式進行描述:
- 如同大部分軟件一樣, 按下【Ctrl】+【F】便是搜索,Wireshark遵循了這一規(guī)律。當(dāng)然,Mac系統(tǒng)中需要按下【command】+【F】。
- 彈出的搜索欄(圖中②處)默認選擇的是“顯示過濾器(Display filter)”,但是我們一般都不會用這個默認選項。如果要用這個,我們完全可以在Wireshark主界面的“顯示過濾器”框中進行搜索,不知道為什么Wireshark這么設(shè)計。在這一步上,我一般都會選擇“字符串(String)”。如果你知道需要查找的“十六進制值(Hex value)”或者想采用“正則表達式(Regular Expression)”,那么可以根據(jù)自己的需求進行更改。
- 上圖中③處選擇你需要從哪兒進行搜索,默認是從“分組列表(Packet List)”中進行搜索,可以根據(jù)調(diào)整為“分組詳情(Packet details)”和“分組字節(jié)流(Packet bytes)”。這三者沒有固定的習(xí)慣,主要是根據(jù)自己搜索的目標(biāo)所在地來確定。關(guān)于“分組列表(Packet List)”、“分組詳情(Packet details)”和“分組字節(jié)流(Packet bytes)”分別是哪個,需要自己去看說明書了。
- 上圖中④處,是我常用的一種搜索方式。點擊完查找,Wireshark會自動把定位到第一個匹配處。
- 搜索數(shù)據(jù)包后,跳轉(zhuǎn)到下一個匹配的數(shù)據(jù)包,快捷鍵是【Ctrl】+【N】,mac下用command鍵代替Ctrl鍵。
- 搜索數(shù)據(jù)包后,跳轉(zhuǎn)到上一個匹配的數(shù)據(jù)包,快捷見是【Ctrl】+【B】,mac下用command鍵代替Ctrl鍵。
其他補充說明
關(guān)于Wireshark中的正則表達式
由于正則表達式是一個較大的概念,不同軟件中遵守的標(biāo)準并不完全一致。根據(jù)Wireshark官方文檔《Wireshark User’s Guide-Version 3.1.0》中的描述,Wireshark遵循的是PCRE(Perl-compatible regular expressions).
PCRE的語法比POSIX正則表達式和其他許多正則表達式庫更加強大和靈活。
關(guān)于加密數(shù)據(jù)
對于采用了加密協(xié)議(例如HTTPS)的數(shù)據(jù),如果采用搜索字節(jié)流的時候,很可能搜索不到內(nèi)容。
但是對于采用非加密協(xié)議(例如HTTP)的數(shù)據(jù),我們可以采用搜索字節(jié)流的方式,來搜索包里面的細節(jié)。

同時可以參考其他文檔
簡書--使用WireShark搜索想要的包(簡約版)
Linux中國--關(guān)于BPF的介紹
永久讀取/dev/bpf*這個路徑
順便說一句,“捕獲過濾器”應(yīng)該適量的少用,尤其是在你對你分析的協(xié)議不是很清楚的情況下。比如有的協(xié)議在進行數(shù)據(jù)交換之前先需要發(fā)送一個ARP數(shù)據(jù)包(以廣播的形式),如果你通過“捕獲過濾器”限制了目的地址,那么這個ARP包就肯定抓不到了。