WireShark是一個網路封包分析軟體,網路封包分析軟體的功能是擷取網路封包,并盡可能顯示出最為詳細的網路封包資料,Wireshark使用WinPCAP作為介面,直接與網卡進行資料報文交換,在網路封包和流量分析領域有著十分強大功能的工具,深受各類網路工程師和網路分析師的喜愛,
本文主要內容包括:
- 1、Wireshark主界面介紹,
- 2、WireShark簡單抓包示例,通過該例子學會怎么抓包以及如何簡單查看分析資料包內容,
- 3、Wireshark過濾器使用,通過過濾器可以篩選出想要分析的內容,包括按照協議過濾、埠和主機名過濾、資料包內容過濾,
我們首先來介紹一下Wireshark這款軟體,

首先我們先認識一下這個軟體的主界面是長這樣的

在這個界面中為Wireshark的主界面
選擇選單欄上Capture -> Option,勾選WLAN網卡(這里需要根據各自電腦網卡使用情況選擇,簡單的辦法可以看使用的IP對應的網卡),點擊Start,啟動抓包,

wireshark啟動后,wireshark處于抓包狀態中,

1、執行需要抓包的操作,如ping www.baidu.com,
2、操作完成后相關資料包就抓取到了,為避免其他無用的資料包影響分析,可以通過在過濾欄設定過濾條件進行資料包串列過濾,獲取結果如下,說明:ip.addr == 119.75.217.26 and icmp 表示只顯示ICPM協議且源主機IP或者目的主機IP為119.75.217.26的資料包,

3、wireshark抓包完成,就這么簡單,關于wireshark過濾條件和如何查看資料包中的詳細內容在后面介紹,
Wireshakr抓包界面

說明:資料包串列區中不同的協議使用了不同的顏色區分,協議顏色標識定位在選單欄View --> Coloring Rules,如下所示

WireShark 主要分為這幾個界面
Display Filter(顯示過濾器), 用于設定過濾條件進行資料包串列過濾,選單路徑:Analyze --> Display Filters,

Packet List Pane(資料包串列), 顯示捕獲到的資料包,每個資料包包含編號,時間戳,源地址,目標地址,協議,長度,以及資料包資訊,不同協議的資料包使用了不同的顏色區分顯示,

Packet Details Pane(資料包詳細資訊), 在資料包串列中選擇指定資料包,在資料包詳細資訊中會顯示資料包的所有詳細資訊內容,資料包詳細資訊面板是最重要的,用來查看協議中的每一個欄位,各行資訊分別為
(1)Frame: 物理層的資料幀概況
(2)Ethernet II: 資料鏈路層以太網幀頭部資訊
(3)Internet Protocol Version 4: 互聯網層IP包頭部資訊
(4)Transmission Control Protocol: 傳輸層T的資料段頭部資訊,此處是TCP
(5)Hypertext Transfer Protocol: 應用層的資訊,此處是HTTP協議

TCP包的具體內容
從下圖可以看到wireshark捕獲到的TCP包中的每個欄位,

Dissector Pane(資料包位元組區),
Wireshark過濾器設定
初學者使用wireshark時,將會得到大量的冗余資料包串列,以至于很難找到自己自己抓取的資料包部分,wireshar工具中自帶了兩種型別的過濾器,學會使用這兩種過濾器會幫助我們在大量的資料中迅速找到我們需要的資訊,
(1)抓包過濾器
捕獲過濾器的選單欄路徑為Capture --> Capture Filters,用于在抓取資料包前設定,

如何使用?可以在抓取資料包前設定如下,

ip host 60.207.246.216 and icmp表示只捕獲主機IP為60.207.246.216的ICMP資料包,獲取結果如下:

(2)顯示過濾器
顯示過濾器是用于在抓取資料包后設定過濾條件進行過濾資料包,通常是在抓取資料包時設定條件相對寬泛,抓取的資料包內容較多時使用顯示過濾器設定條件顧慮以方便分析,同樣上述場景,在捕獲時未設定捕獲規則直接通過網卡進行抓取所有資料包,如下

執行ping www.huawei.com獲取的資料包串列如下

觀察上述獲取的資料包串列,含有大量的無效資料,這時可以通過設定顯示幕過濾條件進行提取分析資訊,ip.addr == 211.162.2.183 and icmp,并進行過濾,

上述介紹了抓包過濾器和顯示過濾器的基本使用方法,在組網不復雜或者流量不大情況下,使用顯示幕過濾器進行抓包后處理就可以滿足我們使用,下面介紹一下兩者間的語法以及它們的區別,
wireshark過濾器運算式的規則
1、抓包過濾器語法和實體
抓包過濾器型別Type(host、net、port)、方向Dir(src、dst)、協議Proto(ether、ip、tcp、udp、http、icmp、ftp等)、邏輯運算子(&& 與、|| 或、!非)
(1)協議過濾
比較簡單,直接在抓包過濾框中直接輸入協議名即可,
TCP,只顯示TCP協議的資料包串列
HTTP,只查看HTTP協議的資料包串列
ICMP,只顯示ICMP協議的資料包串列

(2)IP過濾
host 192.168.1.104
src host 192.168.1.104
dst host 192.168.1.104
(3)埠過濾
port 80
src port 80
dst port 80
(4)邏輯運算子&& 與、|| 或、!非
src host 192.168.1.104 && dst port 80 抓取主機地址為192.168.1.80、目的埠為80的資料包
host 192.168.1.104 || host 192.168.1.102 抓取主機為192.168.1.104或者192.168.1.102的資料包
!broadcast 不抓取廣播資料包
2、顯示過濾器語法和實體
(1)比較運算子
比較運算子有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于,
(2)協議過濾
比較簡單,直接在Filter框中直接輸入協議名即可,注意:協議名稱需要輸入小寫,
tcp,只顯示TCP協議的資料包串列
http,只查看HTTP協議的資料包串列
icmp,只顯示ICMP協議的資料包串列
(3) ip過濾
ip.src =https://www.cnblogs.com/88223100/p/=192.168.1.104 顯示源地址為192.168.1.104的資料包串列
ip.dst==192.168.1.104, 顯示目標地址為192.168.1.104的資料包串列
ip.addr == 192.168.1.104 顯示源IP地址或目標IP地址為192.168.1.104的資料包串列

(4)埠過濾
tcp.port ==80, 顯示源主機或者目的主機埠為80的資料包串列,
tcp.srcport == 80, 只顯示TCP協議的源主機埠為80的資料包串列,
tcp.dstport == 80,只顯示TCP協議的目的主機埠為80的資料包串列,

(5) Http模式過濾
http.request.method=="GET", 只顯示HTTP GET方法的,
(6)邏輯運算子為 and/or/not
過濾多個條件組合時,使用and/or,比如獲取IP地址為192.168.1.104的ICMP資料包運算式為ip.addr == 192.168.1.104 and icmp

(7)按照資料包內容過濾,假設我要以IMCP層中的內容進行過濾,可以單擊選中界面中的碼流,在下方進行選中資料,如下

右鍵單擊選中后出現如下界面

選中Select后在過濾器中顯示如下

后面條件運算式就需要自己填寫,如下我想過濾出data資料包中包含"abcd"內容的資料流,包含的關鍵詞是contains 后面跟上內容,

看到這, 基本上對wireshak有了初步了解,
Wireshark抓包分析TCP三次握手
(1)TCP三次握手連接建立程序
Step1:客戶端發送一個SYN=1,ACK=0標志的資料包給服務端,請求進行連接,這是第一次握手;
Step2:服務端收到請求并且允許連接的話,就會發送一個SYN=1,ACK=1標志的數據包給發送端,告訴它,可以通訊了,并且讓客戶端發送一個確認資料包,這是第二次握手;
Step3:服務端發送一個SYN=0,ACK=1的資料包給客戶端端,告訴它連接已被確認,這就是第三次握手,TCP連接建立,開始通訊,

(2)wireshark抓包獲取訪問指定服務端資料包
Step1:啟動wireshark抓包,打開瀏覽器輸入www.huawei.com,
Step2:使用ping www.huawei.com獲取IP,

Step3:輸入過濾條件獲取待分析資料包串列 ip.addr == 211.162.2.183

圖中可以看到wireshark截獲到了三次握手的三個資料包,第四個包才是HTTP的, 這說明HTTP的確是使用TCP建立連接的,
第一次握手資料包
客戶端發送一個TCP,標志位為SYN,序列號為0, 代表客戶端請求建立連接,如下圖,

資料包的關鍵屬性如下:
SYN :標志位,表示請求建立連接
Seq = 0 :初始建立連接值為0,資料包的相對序列號從0開始,表示當前還沒有發送資料
Ack =0:初始建立連接值為0,已經收到包的數量,表示當前沒有接收到資料
第二次握手的資料包
服務器發回確認包, 標志位為 SYN,ACK. 將確認序號(Acknowledgement Number)設定為客戶的I S N加1以.即0+1=1, 如下圖

資料包的關鍵屬性如下:
[SYN + ACK]: 標志位,同意建立連接,并回送SYN+ACK
Seq = 0 :初始建立值為0,表示當前還沒有發送資料
Ack = 1:表示當前端成功接收的資料位數,雖然客戶端沒有發送任何有效資料,確認號還是被加1,因為包含SYN或FIN標志位,(并不會對有效資料的計數產生影響,因為含有SYN或FIN標志位的包并不攜帶有效資料)
第三次握手的資料包
客戶端再次發送確認包(ACK) SYN標志位為0,ACK標志位為1.并且把服務器發來ACK的序號欄位+1,放在確定欄位中發送給對方.并且在資料段放寫ISN的+1, 如下圖:

資料包的關鍵屬性如下:
ACK :標志位,表示已經收到記錄
Seq = 1 :表示當前已經發送1個資料
Ack = 1 : 表示當前端成功接收的資料位數,雖然服務端沒有發送任何有效資料,確認號還是被加1,因為包含SYN或FIN標志位(并不會對有效資料的計數產生影響,因為含有SYN或FIN標志位的包并不攜帶有效資料),
就這樣通過了TCP三次握手,建立了連接,開始進行資料互動

下面針對資料互動程序的資料包進行一些說明:

資料包的關鍵屬性說明
Seq: 1
Ack: 1: 說明現在共收到1位元組資料

Seq: 1
Ack: 951: 說明現在服務端共收到951位元組資料
在TCP層,有個FLAGS欄位,這個欄位有以下幾個標識:SYN, FIN, ACK, PSH, RST, URG,如下

其中,對于我們日常的分析有用的就是前面的五個欄位,它們的含義是:SYN表示建立連接,FIN表示關閉連接,ACK表示回應,PSH表示有DATA資料傳輸,RST表示連接重置,
Wireshark分析常用操作
調整資料包串列中時間戳顯示格式,調整方法為View -->Time Display Format --> Date and Time of Day,調整后格式如下:

這些就是WireShark的常用操作了,
本文來自FreeBuf.COM
本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/Wireshark_Useage.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/373763.html
標籤:其他
