怎么用wireshark看抓包文件


打開抓包文件,在filter輸入過濾條件,找到符合條件的   右擊 追蹤流  查看流消息。

 

 

 

 

 

 

 

過濾表達式的規則

表達式規則

 1. 協議過濾

比如TCP,只顯示TCP協議。

2. IP 過濾

比如 ip.src ==192.168.1.102 顯示源地址為192.168.1.102,

ip.dst==192.168.1.102, 目標地址為192.168.1.10

3. 端口過濾

tcp.port ==80,  端口為80的

tcp.srcport == 80,  只顯示TCP協議的願端口為80的。

4. Http模式過濾

http.request.method=="GET",   只顯示HTTP GET方法的。

5. 邏輯運算符為 AND/ OR

常用的過濾表達式

過濾表達式 用途
http 只查看HTTP協議的記錄
ip.src ==192.168.1.102 or ip.dst==192.168.1.102  源地址或者目標地址是192.168.1.102
   
   

 

 

 

 

 

封包列表(Packet List Pane)

封包列表的面板中顯示,編號,時間戳,源地址,目標地址,協議,長度,以及封包信息。 你可以看到不同的協議用了不同的顏色顯示。

你也可以修改這些顯示顏色的規則,  View ->Coloring Rules.

----------------------------------------------------------------------------------------------------------------------------------------------------------

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 ==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 主要分為這幾個界面

1. Display Filter(顯示過濾器),  用於設置過濾條件進行數據包列表過濾。菜單路徑:Analyze --> Display Filters。

  2. Packet List Pane(數據包列表), 顯示捕獲到的數據包,每個數據包包含編號,時間戳,源地址,目標地址,協議,長度,以及數據包信息。 不同協議的數據包使用了不同的顏色區分顯示。

  3. 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協議

  wireshark與對應的OSI七層模型

TCP包的具體內容

 從下圖可以看到wireshark捕獲到的TCP包中的每個字段。

  4. Dissector Pane(數據包字節區)。

 

 

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,在菜單欄選擇捕獲,選擇選項 勾選要追蹤的網絡,同時 可以在抓包前設置過濾條件  在分析->顯示過濾器 下設置過濾條件。

 

捕獲過濾器的菜單欄路徑為Capture --> Capture Filters。用於在抓取數據包前設置。

 

 如何使用?可以在抓取數據包前設置如下。

 

 

ip host 60.207.246.216 and icmp表示只捕獲主機IP為60.207.246.216的ICMP數據包。獲取結果如下:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM