Wireshark 使用教程
一、wireshark的安裝:
在官網下載后運行安裝程序,一直下一步即可,安裝完成。
二、wireshark開始抓包:
1、打開wireshark 3.0.1,主頁面如下:
?2、雙擊需要抓包的網卡:
?3、雙擊打開后就已經開始了抓包工作:
?4、執行需要抓包的操作,如:ping www.baidu.com:
?5、抓包完成后可以點擊暫停按鈕,停止捕獲:
?三、wireshark抓包界面介紹:
1、wireshark抓包界面:
?說明:數據包列表區中不同的協議使用了不同的顏色區分。協議顏色標識定位在菜單欄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 192.168.1.5 and icmp 表示只捕獲主機為192.168.1.5 的ICMP的數據包,獲取結果如下:
?(2)顯示過濾器
顯示過濾器是用于在抓取數據包后設置過濾條件進行過濾數據包。通常是在抓取數據包時設置條件相對寬泛,抓取的數據包內容較多時使用顯示過濾器設置條件顧慮以方便分析。同樣上述場景,在捕獲時未設置捕獲規則直接通過網卡進行抓取所有數據包,如下
?執行ping www.baidu.com 捕獲的數據包列表如下:
?觀察上述獲取的數據包列表,含有大量的無效數據。這時可以通過設置顯示器過濾條件進行提取分析信息。ip.addr == 192.168.1.5 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 ==192.168.1.5 顯示源地址為192.168.1.5的數據包列表
ip.dst==192.168.1.5, 顯示目標地址為192.168.1.5的數據包列表
ip.addr == 192.168.1.5 顯示源IP地址或目標IP地址為192.168.1.5的數據包列表
?(4)端口過濾
tcp.port ==80, 顯示源主機或者目的主機端口為80的數據包列表。
tcp.srcport == 80, 只顯示TCP協議的源主機端口為80的數據包列表。
tcp.dstport == 80,只顯示TCP協議的目的主機端口為80的數據包列表。
tcp 或 udp port 是 80的。
?(5) Http模式過濾
http.request.method=="GET", 只顯示HTTP GET方法的。
(6)邏輯運算符為 and/or/not
過濾多個條件組合時,使用and/or。比如獲取IP地址為192.168.1.5的ICMP數據包表達式為ip.addr == 192.168.1.5 and icmp
?(7)按照數據包內容過濾。假設我要以IMCP層中的內容進行過濾,可以單擊選中界面中的碼流,在下方進行選中數據。如下
?
?選中Select(選中)后在過濾器中顯示如下:
?后面條件表達式就需要自己填寫。如下我想過濾出data數據包中包含"abcd"內容的數據流。包含的關鍵詞是contains 后面跟上內容。
?五、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.baidu.com。
Step2:使用ping www.baidu.com獲取IP。
?Step3:輸入過濾條件獲取待分析數據包列表 ip.addr == 39.156.66.18:
?圖中可以看到wireshark截獲到了三次握手的三個數據包。
第一次握手數據包
客戶端發送一個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三次握手,建立了連接。
總結
以上是生活随笔為你收集整理的Wireshark 使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬去学校_利用Python如
- 下一篇: Qt Qml 开发超高清 4K、8K 视