0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

手把手教你Wireshark使用教程

Linux愛好者 ? 來源:網(wǎng)絡技術平臺 ? 2023-10-30 16:40 ? 次閱讀

一、wireshark是什么?

wireshark是非常流行的網(wǎng)絡封包分析軟件,簡稱小鯊魚,功能十分強大。可以截取各種網(wǎng)絡封包,顯示網(wǎng)絡封包的詳細信息

wireshark是開源軟件,可以放心使用??梢赃\行在Windows和Mac OS上。對應的,linux下的抓包工具是 tcpdump。使用wireshark的人必須了解網(wǎng)絡協(xié)議,否則就看不懂wireshark了。

二、Wireshark常用應用場景

1. 網(wǎng)絡管理員會使用wireshark來檢查網(wǎng)絡問題

2. 軟件測試工程師使用wireshark抓包,來分析自己測試的軟件

3. 從事socket編程的工程師會用wireshark來調(diào)試

4. 運維人員用于日常工作,應急響應等等

總之跟網(wǎng)絡相關的東西,都可能會用到wireshark

三、Wireshark抓包原理

Wireshark使用WinPCAP作為接口,直接與網(wǎng)卡進行數(shù)據(jù)報文交換。

Wireshark使用的環(huán)境大致分為兩種,一種是電腦直連網(wǎng)絡的單機環(huán)境,另外一種就是應用比較多的網(wǎng)絡環(huán)境,即連接交換機的情況。

「單機情況」下,Wireshark直接抓取本機網(wǎng)卡的網(wǎng)絡流量;

「交換機情況」下,Wireshark通過端口鏡像、ARP欺騙等方式獲取局域網(wǎng)中的網(wǎng)絡流量。

端口鏡像:利用交換機的接口,將局域網(wǎng)的網(wǎng)絡流量轉(zhuǎn)發(fā)到指定電腦的網(wǎng)卡上。

ARP欺騙:交換機根據(jù)MAC地址轉(zhuǎn)發(fā)數(shù)據(jù),偽裝其他終端的MAC地址,從而獲取局域網(wǎng)的網(wǎng)絡流量。

四、Wireshark軟件安裝

軟件下載路徑:

https://www.wireshark.org/

8c483d8e-76f8-11ee-939d-92fbcf53809c.png

按照系統(tǒng)版本選擇下載,下載完成后,按照軟件提示一路Next安裝。

8c4c69ae-76f8-11ee-939d-92fbcf53809c.png

五、Wireshark抓包示例

先介紹一個使用wireshark工具抓取ping命令操作的示例,可以上手操作感受一下抓包的具體過程。

1、打開wireshark,主界面如下:

8c5bad24-76f8-11ee-939d-92fbcf53809c.png

2、選擇菜單欄上捕獲->選項,勾選WLAN網(wǎng)卡。這里需要根據(jù)各自電腦網(wǎng)卡使用情況選擇,簡單的辦法可以看使用的IP對應的網(wǎng)卡。點擊Start,啟動抓包。

8c63dd64-76f8-11ee-939d-92fbcf53809c.png

3、wireshark啟動后,wireshark處于抓包狀態(tài)中。

8c6c8522-76f8-11ee-939d-92fbcf53809c.png

4、執(zhí)行需要抓包的操作,如在cmd窗口下執(zhí)行pingwww.baidu.com。

8c796bca-76f8-11ee-939d-92fbcf53809c.png

5、操作完成后相關數(shù)據(jù)包就抓取到了,可以點擊 停止捕獲分組 按鈕。

8c6c8522-76f8-11ee-939d-92fbcf53809c.png

6、為避免其他無用的數(shù)據(jù)包影響分析,可以通過在過濾欄設置過濾條件進行數(shù)據(jù)包列表過濾,獲取結(jié)果如下。說明:ip.addr == 183.232.231.172 and icmp 表示只顯示ICPM協(xié)議且主機IP為183.232.231.172的數(shù)據(jù)包。說明:協(xié)議名稱icmp要小寫。

8c887fe8-76f8-11ee-939d-92fbcf53809c.png

7、wireshark抓包完成,并把本次抓包或者分析的結(jié)果進行保存,就這么簡單。關于wireshark顯示過濾條件、抓包過濾條件、以及如何查看數(shù)據(jù)包中的詳細內(nèi)容在后面介紹。

8c9400e8-76f8-11ee-939d-92fbcf53809c.png

六、Wireshakr抓包界面介紹

8c97d2fe-76f8-11ee-939d-92fbcf53809c.png

Wireshark 的主界面包含6個部分:

菜單欄:用于調(diào)試、配置

工具欄:常用功能的快捷方式

過濾欄:指定過濾條件,過濾數(shù)據(jù)包

數(shù)據(jù)包列表:核心區(qū)域,每一行就是一個數(shù)據(jù)包

數(shù)據(jù)包詳情:數(shù)據(jù)包的詳細數(shù)據(jù)

數(shù)據(jù)包字節(jié):數(shù)據(jù)包對應的字節(jié)流,二進制

說明:數(shù)據(jù)包列表區(qū)中不同的協(xié)議使用了不同的顏色區(qū)分。協(xié)議顏色標識定位在菜單欄視圖-->著色規(guī)則。如下所示

8ca22a74-76f8-11ee-939d-92fbcf53809c.png

WireShark 主要分為這幾個界面

1. Display Filter(顯示過濾器)

用于設置過濾條件進行數(shù)據(jù)包列表過濾。菜單路徑:分析--> Display Filters。

8cb24300-76f8-11ee-939d-92fbcf53809c.png

2. Packet List Pane(數(shù)據(jù)包列表)

顯示捕獲到的數(shù)據(jù)包,每個數(shù)據(jù)包包含編號,時間戳,源地址,目標地址,協(xié)議,長度,以及數(shù)據(jù)包信息。不同協(xié)議的數(shù)據(jù)包使用了不同的顏色區(qū)分顯示。

8cbadeca-76f8-11ee-939d-92fbcf53809c.png

3. Packet Details Pane(數(shù)據(jù)包詳細信息)

在數(shù)據(jù)包列表中選擇指定數(shù)據(jù)包,在數(shù)據(jù)包詳細信息中會顯示數(shù)據(jù)包的所有詳細信息內(nèi)容。數(shù)據(jù)包詳細信息面板是最重要的,用來查看協(xié)議中的每一個字段。各行信息分別為

(1)Frame:物理層的數(shù)據(jù)幀概況

(2)EthernetII:數(shù)據(jù)鏈路層以太網(wǎng)幀頭部信息

(3)Internet Protocol Version 4:互聯(lián)網(wǎng)層IP包頭部信息

(4)Transmission Control Protocol:傳輸層T的數(shù)據(jù)段頭部信息,此處是TCP

(5)Hypertext Transfer Protocol:應用層的信息,此處是HTTP協(xié)議

8cc34cc2-76f8-11ee-939d-92fbcf53809c.png

TCP包的具體內(nèi)容

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

8cc7e412-76f8-11ee-939d-92fbcf53809c.png

8cd692fa-76f8-11ee-939d-92fbcf53809c.png

4. Dissector Pane(數(shù)據(jù)包字節(jié)區(qū))

報文原始內(nèi)容。

8cdfa26e-76f8-11ee-939d-92fbcf53809c.png

七、Wireshark過濾器設置

初學者使用wireshark時,將會得到大量的冗余數(shù)據(jù)包列表,以至于很難找到自己需要抓取的數(shù)據(jù)包部分。wireshark工具中自帶了兩種類型的過濾器,學會使用這兩種過濾器會幫助我們在大量的數(shù)據(jù)中迅速找到我們需要的信息。

1.抓包過濾器

捕獲過濾器的菜單欄路徑為捕獲-->捕獲過濾器。用于在抓取數(shù)據(jù)包前設置。

8ce3e0ea-76f8-11ee-939d-92fbcf53809c.png

如何使用呢?設置如下。

8cf25f58-76f8-11ee-939d-92fbcf53809c.png

ip host 183.232.231.172表示只捕獲主機IP為183.232.231.172的數(shù)據(jù)包。獲取結(jié)果如下:

8cf650d6-76f8-11ee-939d-92fbcf53809c.png

2. 顯示過濾器

顯示過濾器是用于在抓取數(shù)據(jù)包后設置過濾條件進行過濾數(shù)據(jù)包。

通常是在抓取數(shù)據(jù)包時設置條件相對寬泛或者沒有設置導致抓取的數(shù)據(jù)包內(nèi)容較多時使用顯示過濾器設置條件過濾以方便分析。

8d00a3b0-76f8-11ee-939d-92fbcf53809c.png

同樣上述場景,在捕獲時未設置抓包過濾規(guī)則直接通過網(wǎng)卡進行抓取所有數(shù)據(jù)包。

8d0cd202-76f8-11ee-939d-92fbcf53809c.png

執(zhí)行ping www.baidu.com獲取的數(shù)據(jù)包列表如下

8d105512-76f8-11ee-939d-92fbcf53809c.png

觀察上述獲取的數(shù)據(jù)包列表,含有大量的無效數(shù)據(jù)。這時可以通過設置顯示器過濾條件進行提取分析信息。ip.addr == 183.232.231.172,并進行過濾。

8d1d8b56-76f8-11ee-939d-92fbcf53809c.png

上述介紹了抓包過濾器和顯示過濾器的基本使用方法。在組網(wǎng)不復雜或者流量不大情況下,使用顯示器過濾器進行抓包后處理就可以滿足我們使用。下面介紹一下兩者間的語法以及它們的區(qū)別。

八、wireshark過濾器表達式的規(guī)則

1.抓包過濾器語法和實例

抓包過濾器類型Type(host、net、port)、方向Dir(src、dst)、協(xié)議Proto(ether、ip、tcp、udp、http、icmp、ftp等)、邏輯運算符(&&與、|| 或、!非)

(1)協(xié)議過濾

比較簡單,直接在抓包過濾框中直接輸入?yún)f(xié)議名即可。

tcp,只顯示TCP協(xié)議的數(shù)據(jù)包列表

http,只查看HTTP協(xié)議的數(shù)據(jù)包列表

icmp,只顯示ICMP協(xié)議的數(shù)據(jù)包列表

(2)IP過濾

host 192.168.1.104

src host192.168.1.104

dst host192.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的數(shù)據(jù)包

host 192.168.1.104 || host 192.168.1.102 抓取主機為192.168.1.104或者192.168.1.102的數(shù)據(jù)包

!broadcast 不抓取廣播數(shù)據(jù)包

2.顯示過濾器語法和實例

(1)比較操作符

比較操作符有

== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于

(2)協(xié)議過濾

比較簡單,直接在Filter框中直接輸入?yún)f(xié)議名即可。注意:協(xié)議名稱需要輸入小寫。

tcp,只顯示TCP協(xié)議的數(shù)據(jù)包列表

http,只查看HTTP協(xié)議的數(shù)據(jù)包列表

icmp,只顯示ICMP協(xié)議的數(shù)據(jù)包列表

8d303440-76f8-11ee-939d-92fbcf53809c.png

(3) ip過濾

ip.src ==112.53.42.42 顯示源地址為112.53.42.42的數(shù)據(jù)包列表

ip.dst==112.53.42.42, 顯示目標地址為112.53.42.42的數(shù)據(jù)包列表

ip.addr == 112.53.42.42 顯示源IP地址或目標IP地址為112.53.42.42的數(shù)據(jù)包列表

8d3943e6-76f8-11ee-939d-92fbcf53809c.png

(4)端口過濾

tcp.port ==80, 顯示源主機或者目的主機端口為80的數(shù)據(jù)包列表。

tcp.srcport == 80, 只顯示TCP協(xié)議的源主機端口為80的數(shù)據(jù)包列表。

tcp.dstport == 80,只顯示TCP協(xié)議的目的主機端口為80的數(shù)據(jù)包列表。

8d42a1ca-76f8-11ee-939d-92fbcf53809c.png

(5)http模式過濾

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

8d4668b4-76f8-11ee-939d-92fbcf53809c.png

(6)邏輯運算符為 and/or/not

過濾多個條件組合時,使用and/or。比如獲取IP地址為192.168.0.104的ICMP數(shù)據(jù)包表達式為ip.addr == 192.168.0.104 and icmp

8d53b24e-76f8-11ee-939d-92fbcf53809c.png

(7)按照數(shù)據(jù)包內(nèi)容過濾

假設我要以ICMP層中的內(nèi)容進行過濾,可以單擊選中界面中的碼流,在下方進行選中數(shù)據(jù)。

8d5d6d2a-76f8-11ee-939d-92fbcf53809c.png

右鍵單擊選中后出現(xiàn)如下界面

8d61bd08-76f8-11ee-939d-92fbcf53809c.png

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

8d6e1c38-76f8-11ee-939d-92fbcf53809c.png

后面條件表達式就需要自己填寫。如下我想過濾出data數(shù)據(jù)包中包含"abcd"內(nèi)容的數(shù)據(jù)流。關鍵詞是contains,完整條件表達式為data contains "abcd"

8d71da44-76f8-11ee-939d-92fbcf53809c.png

看到這, 基本上對wireshak有了初步了解。

3. 常見用顯示過濾需求及其對應表達式

數(shù)據(jù)鏈路層:

篩選mac地址為043813:26的數(shù)據(jù)包

eth.src == 043813:26

篩選源mac地址為043813:26的數(shù)據(jù)包----

eth.src == 043813:26

網(wǎng)絡層:

篩選ip地址為192.168.1.1的數(shù)據(jù)包

ip.addr == 192.168.1.1

篩選192.168.1.0網(wǎng)段的數(shù)據(jù)

ip contains "192.168.1"

傳輸層:

篩選端口為80的數(shù)據(jù)包

tcp.port == 80

篩選12345端口和80端口之間的數(shù)據(jù)包

tcp.port == 12345 &&tcp.port == 80

篩選從12345端口到80端口的數(shù)據(jù)包

tcp.srcport == 12345 &&tcp.dstport == 80

應用層:

特別說明: http中http.request表示請求頭中的第一行(如GET index.jsp HTTP/1.1) http.response表示響應頭中的第一行(如HTTP/1.1 200 OK),其他頭部都用http.header_name形式。

篩選url中包含.php的http數(shù)據(jù)包

http.request.uri contains ".php"

篩選內(nèi)容包含username的http數(shù)據(jù)包

http contains "username"

九、Wireshark抓包分析TCP三次握手

1. TCP三次握手連接建立過程

Step1:客戶端發(fā)送一個SYN=1,ACK=0標志的數(shù)據(jù)包給服務端,請求進行連接,這是第一次握手;

Step2:服務端收到請求并且允許連接的話,就會發(fā)送一個SYN=1,ACK=1標志的數(shù)據(jù)包給發(fā)送端,告訴它,可以通訊了,并且讓客戶端發(fā)送一個確認數(shù)據(jù)包,這是第二次握手;

Step3:服務端發(fā)送一個SYN=0,ACK=1的數(shù)據(jù)包給客戶端端,告訴它連接已被確認,這就是第三次握手。TCP連接建立,開始通訊。

8d76bfbe-76f8-11ee-939d-92fbcf53809c.png

2.Wireshark抓包獲取訪問指定服務端數(shù)據(jù)包

Step1:啟動wireshark抓包,打開瀏覽器輸入www.baidu.com。

Step2:使用ping www.baidu.com獲取IP。

8d856654-76f8-11ee-939d-92fbcf53809c.png

Step3:輸入過濾條件獲取待分析數(shù)據(jù)包列表 ip.addr == 183.232.231.172

8d8d100c-76f8-11ee-939d-92fbcf53809c.png

圖中可以看到wireshark截獲到了三次握手的三個數(shù)據(jù)包。第四個包才是HTTPS的, 這說明HTTPS的確是使用TCP建立連接的。

第一次握手數(shù)據(jù)包

客戶端發(fā)送一個TCP,標志位為SYN,序列號為0, 代表客戶端請求建立連接。

8d9991b0-76f8-11ee-939d-92fbcf53809c.png

數(shù)據(jù)包的關鍵屬性如下:

SYN :標志位,表示請求建立連接

Seq = 0 :初始建立連接值為0,數(shù)據(jù)包的相對序列號從0開始,表示當前還沒有發(fā)送數(shù)據(jù)

Ack =0:初始建立連接值為0,已經(jīng)收到包的數(shù)量,表示當前沒有接收到數(shù)據(jù)

第二次握手的數(shù)據(jù)包

服務器發(fā)回確認包, 標志位為 SYN,ACK。將確認序號(Acknowledgement Number)字段+1,即0+1=1。

8da32b08-76f8-11ee-939d-92fbcf53809c.png

數(shù)據(jù)包的關鍵屬性如下:

[SYN + ACK]: 標志位,同意建立連接,并回送SYN+ACK

Seq = 0 :初始建立值為0,表示當前還沒有發(fā)送數(shù)據(jù)

Ack = 1:表示當前端成功接收的數(shù)據(jù)位數(shù),雖然客戶端沒有發(fā)送任何有效數(shù)據(jù),確認號還是被加1,因為包含SYN或FIN標志位。(并不會對有效數(shù)據(jù)的計數(shù)產(chǎn)生影響,因為含有SYN或FIN標志位的包并不攜帶有效數(shù)據(jù))

第三次握手的數(shù)據(jù)包

客戶端再次發(fā)送確認包(ACK) SYN標志位為0,ACK標志位為1。并且把服務器發(fā)來ACK的序號字段+1,放在確定字段中發(fā)送給對方,并且在Flag段寫ACK的+1:

8db11286-76f8-11ee-939d-92fbcf53809c.png

數(shù)據(jù)包的關鍵屬性如下:

ACK :標志位,表示已經(jīng)收到記錄

Seq = 1 :表示當前已經(jīng)發(fā)送1個數(shù)據(jù)

Ack = 1 : 表示當前端成功接收的數(shù)據(jù)位數(shù),雖然服務端沒有發(fā)送任何有效數(shù)據(jù),確認號還是被加1,因為包含SYN或FIN標志位(并不會對有效數(shù)據(jù)的計數(shù)產(chǎn)生影響,因為含有SYN或FIN標志位的包并不攜帶有效數(shù)據(jù))。

就這樣通過了TCP三次握手,建立了連接。開始進行數(shù)據(jù)交互

8dba7c0e-76f8-11ee-939d-92fbcf53809c.png

十、Wireshark分析常用操作

調(diào)整數(shù)據(jù)包列表中時間戳顯示格式。調(diào)整方法為視圖-->時間顯示格式-->日期和時間。調(diào)整后格式如下:

8dbf173c-76f8-11ee-939d-92fbcf53809c.png

一般Wireshark軟件也可以與各主流廠家的模擬器一起使用,更適合于項目準確配置。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標題:手把手教你Wireshark使用教程

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    圖文教程:手把手教你焊接貼片元件

    圖文教程:手把手教你焊接貼片元件,首先來張全部焊接一個點的PCB圖
    發(fā)表于 04-01 11:03 ?3.6w次閱讀
    圖文教程:<b class='flag-5'>手把手</b><b class='flag-5'>教你</b>焊接貼片元件

    手把手教你使用QUARTUS

    手把手教你使用QUARTUS
    發(fā)表于 12-29 20:35

    手把手教你構建一個完整的工程

    手把手教你構建一個完整的工程
    發(fā)表于 08-03 09:54 ?33次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>構建一個完整的工程

    手把手教你寫批處理-批處理的介紹

    手把手教你寫批處理-批處理的介紹
    發(fā)表于 10-25 15:02 ?69次下載

    美女手把手教你如何裝機(中)

    美女手把手教你如何裝機(中) 再來是硬碟的部份,這款機殼還不錯,可以旋轉(zhuǎn)支架~
    發(fā)表于 01-27 11:14 ?1420次閱讀

    美女手把手教你如何裝機(下)

    美女手把手教你如何裝機(下) 接著下來就是今天的重頭戲,開核蘿!~
    發(fā)表于 01-27 11:16 ?2904次閱讀

    手把手教你學習FPGA—LED篇

    電子專業(yè)單片機相關知識學習教材資料——手把手教你學習FPGA—LED篇
    發(fā)表于 08-08 17:19 ?0次下載

    手把手教你學電子書制作

    手把手教你學電子書制作,可以自己DIY電子書
    發(fā)表于 09-13 11:26 ?0次下載

    手把手教你安裝Quartus II

    本章手把手把教你如何安裝 Quartus II 軟件 ,并將它激活 。此外 還有USB -Blaster下載器的驅(qū)動安裝步驟 。
    發(fā)表于 09-18 14:55 ?9次下載

    手把手教你在家搭建監(jiān)控系統(tǒng)

    手把手教你在家搭建監(jiān)控系統(tǒng)
    發(fā)表于 01-17 19:47 ?25次下載

    手把手教你做電子時鐘---前言

    手把手教你做彩鈴電子時鐘
    發(fā)表于 11-14 16:53 ?11次下載

    手把手教你如何開始DSP編程

    手把手教你如何開始DSP編程。
    發(fā)表于 04-09 11:54 ?12次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>如何開始DSP編程

    手把手教你學LabVIEW視覺設計

    手把手教你學LabVIEW視覺設計手把手教你學LabVIEW視覺設計手把手教你學LabVIEW視
    發(fā)表于 03-06 01:41 ?2991次閱讀

    手把手教你開關電源PCB排板

    手把手教你開關電源PCB排板(新型電源技術)-分享一下開關電源PCB排板的基本要點及分析,以及例子講解。絕對的手把手
    發(fā)表于 09-18 12:27 ?57次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>開關電源PCB排板

    手把手教你學FPGA仿真

    電子發(fā)燒友網(wǎng)站提供《手把手教你學FPGA仿真.pdf》資料免費下載
    發(fā)表于 10-19 09:17 ?2次下載
    <b class='flag-5'>手把手</b><b class='flag-5'>教你</b>學FPGA仿真