wireshark抓包新手使用教程

  Wireshark是很是流行的網絡封包分析軟件,能夠截取各類網絡數據包,並顯示數據包詳細信息。經常使用於開發測試過程各類問題定位。本文主要內容包括:html

  一、Wireshark軟件下載和安裝以及Wireshark主界面介紹。前端

  二、WireShark簡單抓包示例。經過該例子學會怎麼抓包以及如何簡單查看分析數據包內容。瀏覽器

  三、Wireshark過濾器使用。經過過濾器能夠篩選出想要分析的內容。包括按照協議過濾、端口和主機名過濾、數據包內容過濾。服務器

Wireshark軟件安裝

  軟件下載路徑:wireshark官網。按照系統版本選擇下載,下載完成後,按照軟件提示一路Next安裝。網絡

  若是你是Win10系統,安裝完成後,選擇抓包可是不顯示網卡,下載win10pcap兼容性安裝包。下載路徑:win10pcap兼容性安裝包tcp

Wireshark 開始抓包示例

   先介紹一個使用wireshark工具抓取ping命令操做的示例,讓讀者能夠先上手操做感覺一下抓包的具體過程。工具

  一、打開wireshark 2.6.5,主界面以下:post

  二、選擇菜單欄上Capture -> Option,勾選WLAN網卡(這裏須要根據各自電腦網卡使用狀況選擇,簡單的辦法能夠看使用的IP對應的網卡)。點擊Start。啓動抓包。測試

  三、wireshark啓動後,wireshark處於抓包狀態中。spa

  四、執行須要抓包的操做,如ping www.baidu.com。

  五、操做完成後相關數據包就抓取到了。爲避免其餘無用的數據包影響分析,能夠經過在過濾欄設置過濾條件進行數據包列表過濾,獲取結果以下。說明:ip.addr == 119.75.217.26 and icmp 表示只顯示ICPM協議且源主機IP或者目的主機IP爲119.75.217.26的數據包。

  五、wireshark抓包完成,就這麼簡單。關於wireshark過濾條件和如何查看數據包中的詳細內容在後面介紹。

Wireshakr抓包界面

  說明:數據包列表區中不一樣的協議使用了不一樣的顏色區分。協議顏色標識定位在菜單欄View --> Coloring Rules。以下所示

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

TCP包的具體內容

 從下圖能夠看到wireshark捕獲到的TCP包中的每一個字段。

  4. 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過濾器表達式的規則

一、抓包過濾器語法和實例

   抓包過濾器類型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 不抓取廣播數據包

二、顯示過濾器語法和實例

(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抓包分析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。調整後格式以下:

參考文檔

(1)wireshark抓包詳細圖文教程

 

 

出處:http://www.javashuo.com/article/p-oozpfltg-bg.html

相關文章
相關標籤/搜索