目錄
Wireshark的使用
1.下載
2.安裝
資料包的捕獲和基本用法
過濾器
捕獲過濾器
捕獲過濾器的 BPF 語法
顯示過濾器
比較運算子和邏輯運算子
預定義過濾器
前言:前面三次握手和四次揮手用的抓包工具就是Wireshark,本節主要介紹其簡單的使用,不用死記硬背,知道大概的使用方法就行,至于命令搞個專門記錄命令的檔案記錄,用的時候直接用就好了,
提問:為什么要抓包?
解答:
1、定位網路問題;
2、分析介面資料;
3、學習網路協議,使用抓包工具分析網路資料更直觀,
大部分場合都可以通程序式除錯來定位問題,但有些場景使用抓包來定位介面問題更準
確、更方便,如以下場景:
1、你發送資料給后臺,但后臺沒有收到,可以對介面進行抓包分析,看是后臺處理有
問題,還是沒有將資料發出去,或是發送資料格式有誤;
2、你和后臺介面聯調測通,但業務資料對不上,你認為是后臺問題,后臺認為是你發
的問題,可以抓包確認問題所在;
3、線上出現 bug 需要定位,但你沒在公司,沒有代碼可除錯,可直接抓包分析;
4、系統性能不佳,抓包看下介面回應時長,是不是后臺出現性能問題,
常用的抓包工具有:F12(瀏覽器自帶的抓包工具)、Fiddler、Charles,Wireshark,而
Wireshark 在支持的協議,用戶友好度、價格(開源)、程式支持、支持的作業系統上都很
好,所以 Wireshark 也是我們最常用的抓包工具和報文分析工具,
Wireshark的使用
1.下載
官網下載:https://www.wireshark.org/download.html

根據自己筆記本的配置,選擇對應的配置下載就好
2.安裝
基本上都是默認選項,也可以根據自己需求選擇,
需要注意的是在當彈出是否需要安裝 Npcap/WinPcap 的對話框時, 務必確保 Install,
WinPcap 驅動是 Windows對于 pcap 資料包捕獲的通用程式介面(APT)的實作,簡單來說就是這個驅動能夠通過作業系統捕捉原始資料包、應用過濾器,并能夠讓網卡切入或切出混雜模式,[ 混雜模式就是接收所有經過網卡的資料包,包括不是發給本機的包,即不驗證 MAC 地址,普通模式下網卡只接收發給本機的包(包括廣播包)傳遞給上層程式,其它的包一律丟棄,一般來說,混雜模式不會影響網卡的正常作業,多在網路監聽工具上使用,
USBPcap 就沒必要安裝了,
資料包的捕獲和基本用法

進入程式后,我們發現有活躍的網路(紅框處),雙擊這一行,Wireshark 開始捕獲資料,并在視窗中顯示,可以看見隨著時間前進,視窗中不斷重繪,等上幾秒鐘,結束捕獲,單機工具列中的
按鈕,或者“捕獲”下拉選單中選擇“停止”選項即可,
筆者點擊Adapter for loopback traffic capture ,這個時候可以看見,Wireshark 視窗中顯示了大量的資料,資料內容分布如下:

資料包串列:最上面的面板用表格顯示了當前捕獲檔案中的所有資料包,其中包括了資料包序號、資料包被捕獲的相對時間、資料包的源地址和目標地址、資料包的協議以及在資料包中找到的概況資訊等列,
包詳情:中間的面板分層次地顯示了一個資料包中的內容,并且可以通過展開或是收縮來顯示這個資料包中所捕獲到的全部內容,
包資料的位元組形式顯示:最下面的面板顯示了一個資料包未經處理的原始樣子,也就是其在鏈路上傳播時的樣子,這些原始資料當然不容易理解,
在資料包串列中,可以很明顯看見每行的五顏六色,這些顏色其實是 Wireshark 用來區分不同的協議的,可以通過 Coloring Rules (著色規則)視窗可以很容易地查看或修改每個協議所對應的顏色,如果想要打開這個視窗,可以在“視圖”下拉選單中選擇的“著色規則”選項即可,

同時捕獲的資料包可以匯出為檔案,也可以將資料包檔案匯入 Wireshark 進行分析,
過濾器
過濾器可以讓你找出你所希望進行分析的資料包,簡單來說,一個過濾器就是定義了一定條件,用來包含或者排除資料包的運算式,如果你不希望看到一些資料包,你可以寫一個過濾器來屏蔽它們,如果你希望只看到某些資料包,你可以寫一個只顯示這些資料包的過濾器,
例如:我們只想抓mysql埠的資料包就可以 設定捕獲規則 port 3306 這樣就能抓到我們想要的包了,
Wireshark 主要提供兩種主要的過濾器,
- ·捕獲過濾器:
當進行資料包捕獲時,只有那些滿足給定的包含/排除運算式的資料包會被捕獲,
- 顯示過濾器:
該過濾器根據指定的運算式用于在一個已捕獲的資料包集合中,隱藏不想顯示的資料包,或者只顯示那些需要的資料包,
捕獲過濾器
捕獲過濾器用于進行資料包捕獲的實際場合,使用它的一個主要原因就是性能,如果你
知道你并不需要分析某個型別的流量,你可以簡單地使用捕獲過濾器過濾掉它,從而節省那
些會被用來捕獲這些資料包的資源,
比如,我們現在要捕獲我們機器上所有 TCP型別的資料包,怎么做?在“捕獲”下拉
選單中選擇“選項”,彈出視窗中:

點擊開始:

我們發現捕獲到所有的TCP協議
捕獲過濾器的 BPF 語法
捕獲過濾器應用于 WinPcap/NPcap,并使用 Berkeley Packet Filter(BPF)語法,
這個語法被廣泛用于多種資料包嗅探軟體,主要因為大部分資料包嗅探軟體都依賴于使
用 BPF 的 libpcap/WinPcap 庫,掌握 BPF 語法對你在資料包層級更深入地探索網路來說,
非常關鍵,
使用 BPF 語法創建的過濾器被稱為運算式,并且每個運算式包含一個或多個原語,每
個原語包含一個或多個限定詞,然后跟著一個 ID 名字或者數字
Type 指出名字或數字所代表的意,例如: host、port
Dir 指明傳輸方向是前往還是來自 例如:src、dst
Proto 限定所要匹配的協議 例如:ether、ip、tcp、udp、http、ftp
例如:
dst host 192.168.0.10 && tcp port 80
這是一個捕獲過濾器樣例,其中“dst host 192.168.0.10”就構成了一個原語,我們的樣
例里有兩個原語,兩個原語用邏輯運算子“&&”組合了起來,邏輯運算子共有三個:
連接運算子: 與 (&&)
選擇運算子: 或 (||)
否定運算子: 非 (!)
對我們的樣例來說,表示捕獲的資料包應該滿足條件為:目的主機是 192.168.0.10,通
信協議是 tcp,源埠或者目的埠是 80,
主機名和地址過濾器
我們所創建的大多數過濾器都會關注于一個或一些特定的網路設備,根據這個情況,可
以根據設備的 MAC 地址、IPv4 地址、IPv6 地址或者 DNS 主機名配置過濾規則,比如:
捕獲所有和主機 IPv4 地址相關的流量:
host 192.168.0.10
捕獲所有和主機 Ipv6 地址相關的流量:
host fe80::1945:cbf1:1393:8f17
使用基于一臺設備的主機名 host 限定詞進行過濾:
host remoteserver
考慮到一臺主機的 IP 地址可能會變化,你可以通過加入 ether 協議限定詞,對它的 MAC
地址進行過濾:
Ether host 24-41-8C-26-04-9F
當然還可在 host 之前加 src 或者 dst 進行傳輸方向的限定,
埠和協議過濾器
只對 8080 埠進行流量捕獲:
port 8080
想要捕獲除 8080 埠外的所有流量
!port 8080
埠過濾器一樣和傳輸方向限定符一起使用,比如:
dst port 80
協議過濾器可以讓我們基于特定協議進行資料包過濾,BPF 語法甚至提供給我們的一項
強大功能,就是我們可以通過檢查協議頭中的每一位元組來創建基于那些資料的特殊過濾器,
比如:
tcp[13]&4=4
表示捕獲的資料是 tcp 協議的資料包,且 tcp 資料包中第 13 個位元組的第 4 位被設定了,
顯示過濾器
顯示過濾器應用于捕獲檔案,用來告訴 Wireshark 只顯示那些符合過濾條件的資料包,
你可以在包串列面板上方的 Filter 文本框中,輸入一個顯示過濾器,

顯示過濾器的語法不同于捕獲過濾器,比如我們通過捕獲功能,捕獲了本機所有的資料包

我們不需要TCP
輸入 !TCP 確認

我們發現TCP協議的資料包已經沒了
現在我們多加一個限定,只顯示 ip 地址為 192.168.18.1的資料包

我們看見,顯示的資料包就變為:不是 TCP 資料包,同時源地址或者目的地址是192.168.18.1,
比較運算子和邏輯運算子
在我們上面的過濾條件“!udp and ip.addr==40.90.189.152”中,牽涉到了過濾條件的比
較運算子和邏輯運算子:比較運算子可以讓你進行值的比較,
舉例來說,當你在檢查一個 TCP/P 網路中的問題
時,你可能經常需要檢查和某一個 IP 地址相關的資料包,等于運算子可以讓你創建一個只
顯示 192.168.0.1 這個 IP 地址相關資料包的過濾器,
ip.addr==192.168.0.1
比較運算子還有:
等于 ==
不等于 !=
大于 >
小于 <
大于或等于 >=
小于或等于 <=
邏輯運算子有:
and 兩個條件需同時滿足
or 其中一個條件被滿足
xor 有且僅有一個條件被滿足
not 沒有條件被滿足
盡管在理論上撰寫過濾器運算式很簡單,但針對不同問題創建過濾器時,依然需要許多
特定的關鍵詞與運算子,可以到 Wireshark 的官網查看:
https://www.wireshark.org/docs/dfref

比如 tcp 相關的,可以通過單擊具體條目查看更多:


預定義過濾器
過濾器可以事先設定好,不需要每次使用時都重新輸入,捕獲過濾器在選單“捕獲”-“捕獲過濾器”中設定,顯示過濾器在選單“分析”-“Display Filters” 中設定,
捕獲過濾器
顯示過濾器
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291444.html
標籤:其他
