網絡抓包工具 wireshark 入門教程

Wireshark(前稱Ethereal)是一個網絡數據包分析軟件。網絡數據包分析軟件的功能是截取網絡數據包,並儘量顯示出最爲詳細的網絡數據包數據。Wireshark使用WinPCAP做爲接口,直接與網卡進行數據報文交換。html

網絡管理員使用Wireshark來檢測網絡問題,網絡安全工程師使用Wireshark來檢查資訊安全相關問題,開發者使用Wireshark來爲新的通信協定除錯,普通使用者使用Wireshark來學習網絡協定的相關知識。固然,有的人也會「居心叵測」的用它來尋找一些敏感信息……。Wireshark相對於tcpdump而言,界面更友好,功能更強大。前端

安裝

mac上安裝wiresharklinux

windows上安裝wiresharkweb

linux下安裝wiresharkwindows

基本使用

如下的介紹都是以mac下的wireshark 1.12.2版本爲基礎。數組

認識界面

說明:安全

經常使用按鈕從左到右的功能依次是:服務器

一、列出可用接口。網絡

二、抓包時須要設置的一些選項。通常會保留最後一次的設置結果。app

三、開始新的一次抓包。

四、暫停抓包。

五、繼續進行本次抓包。

六、打開抓包文件。能夠打開以前抓包保存後的文件。不只能夠打開wireshark軟件保存的文件,也能夠打開tcpdump使用-w參數保存的文件。

七、保存文件。把本次抓包或者分析的結果進行保存。

八、關閉打開的文件。文件被關閉後,就會切換到初始界面。

九、重載抓包文件。

設置數據抓取選項

點擊經常使用按鈕中的設置按鈕,就會彈出設置選項對話框。在這個對話框中咱們能夠選中須要監聽的接口,設置混雜模式,設置抓取數據包的過濾條件。以下圖:

首先,選中須要監聽獲取數據包的接口。接口列表區列出了全部可使用的接口。若是接口前面的複選框被選中,說明對這個接口監聽捕獲數據包。

其次,設置混雜模式。設置混雜模式的做用是將網卡設置到混雜模式。若是不設置混雜模式,你的計算機只能獲取數據包發往的目標是你計算機和從你計算機出去的數據包。若是設置了混雜模式,你就能夠捕獲局域網中全部的數據包。若是窗口中的 "Use promiscuous mode on all interfaces"前面的複選框被選中,說明對全部的接口使用混雜模式。若是想單獨設置,能夠雙擊接口列表中的接口,會彈出以下的對話框。而後選中或者去掉「Capture packets in promiscuous mode」前面複選框。而後點ok按鈕。

再次,設置捕獲過濾條件。在點設置按鈕彈出的主設置對話框中和雙擊接口列表彈出的對話框中都會有「Capture Filter」項。在文本框中咱們能夠設置捕獲過濾條件。如,咱們只捕獲http相關的數據包,咱們就能夠設置捕獲條件爲「port 80」。由於http使用的是80端口。

最後,全部的設置完畢後,點擊設置主窗口中的「Start」按鈕,開始捕獲數據。數據捕獲完後,能夠點經常使用按鈕中的「保存」按鈕保存數據。

使用顯示過濾器

顯示過濾器應用於捕獲文件,用來告訴wireshark只顯示那些符合過濾條件的數據包。顯示過濾器比捕獲過濾器更經常使用。他能夠用來過濾不想看到的數據包,可是不會把數據刪除。若是想恢復原狀,只要把過濾條件刪除便可。

過濾器表達式對話框,是的wireshark的能夠很簡單的設置過濾表達式。點擊「Expression」按鈕就能夠打開這個對話框。以下圖:

對話框分左中右三部分。左邊爲可使用的全部協議域。右邊爲和協議域相關的條件值。中間爲協議域與條件值之間的關係。過濾器表達式對於初學者頗有用。如上圖,咱們建立的表達式的做用是,只顯示http協議包中包含關鍵詞「bo56.com」的全部數據包。

Field name說明:
這個列表中展現了全部支持的協議。點擊前面的三角標誌後,能夠列出本協議的可過濾字段。當選中「Field name」列表中的任何一項,只須要輸入你想要的協議域,就會自動定位到相應的協議域選項。

Relation說明:
is present    若是選擇的協議域存在,則顯示相關數據包。
contains     判斷一個協議,字段或者分片包含一個值
matches             判斷一個協議或者字符串匹配一個給定的Perl表達式。

Value(Protocol)說明:
此處輸入合適的值。若是選擇的協議域和這個值知足Relation中指定的關係,則顯示相關數據包。

Predefined values說明:
有些協議域包含了預先定義的值,有點相似於c語言中的枚舉類型。若是你選擇的協議域包含這樣的值,你能夠在這個列表中選擇。

Function函數說明:
過濾器的語言還有下面幾個函數:
upper(string-field)-把字符串轉換成大寫
lower(string-field)-把字符串轉換成小寫
upper((和lower((在處理大小寫敏感的字符串比較時頗有用。例如:
upper(ncp.nds_stream_name) contains "BO56.COM"
lower(mount.dump.hostname) =="BO56.COM"

若是你熟悉了這個規則以後你就會發現手動輸入表達式更有效率。當時手動在flter文本框中輸入表達時,若是輸入的語法有問題,文本框的背景色會變成紅色。這時候,你能夠繼續輸入或者修改,知道文本框中的表達式正確後,文本框的背景色又會變成綠色。

使用着色規則

你常常會在數據包列表區域中看到不一樣的顏色。這就是wireshark作的很人性化的一方面。它可讓你指定條件,把符合條件的數據包按指定的顏色顯示。這樣你查找數據包會更方便些。下面咱們說一下如何設置顏色規則。

點擊「view」菜單,而後選擇「Coloring Rules」選項就會彈出設置顏色規則設置對話框。你點擊顏色規則設置的快捷按鈕也能夠打開顏色設置對話框。以下圖:

打開的對話框中默認已經有一些規則。咱們抓取的數據包中常常會看到一些不一樣的顏色,就是應用的這些默認的規則。點擊「New」按鈕能夠添加規則。以下圖:

name字段中填寫規則的名稱,方便記憶。

string字段中填寫過濾規則。這裏的語法和顯示規則表達式一致。點擊 上圖中的「Expression」按鈕,你就會看到熟悉的規則表達式對話。

Foreground Color按鈕用於選擇前景色。

Background Color按鈕用於選擇背景色。

Disabled按鈕用於指示是否禁用這條規則。

點擊ok按鈕後,規則自動會添加到規則列表中的最前端。

注意:wireshark在應用規則的時候,是按自上而下的順序去應用規則。所以剛添加的規則會優先應用。若是你想調整順序,能夠選中要調整順序的規則,而後點擊右邊的「UP」 或則 「Down」 按鈕。

顏色規則設置好後,只須要點apply按鈕就能夠應用規則了。規則效果應用以下圖:

 

使用圖表

圖形分析是數據分析中必不可少的一部分。也是wireshark的一大亮點。wireshark有不一樣的圖形展示功能,以幫助你瞭解捕獲的數據包。下面咱們對常用的IO圖,雙向時間圖作下介紹。

IO圖

wireshark的IO圖讓你能夠對網絡上的吞吐量繪圖。讓你瞭解網絡數據傳輸過程當中的峯值和波動狀況。經過「Statistics」菜單中的「IO Graphs」選項能夠打開這個IO圖對話框。以下圖:

能夠看到IO圖表對話框中會分爲三個區。

過濾器區:設置過濾條件,用於圖形化展現過濾條件相關數據包的變化狀況。並且能夠爲每一個不一樣的條件指定不一樣的顏色。過濾條件的語法和以前介紹的顯示過濾器的語法一致。過濾條件爲空,此圖形顯示全部流量。

座標區:在這裏能夠設置圖表的x軸和y軸。x軸爲時間,y軸爲包的數量。如圖,咱們設置Y軸的單位是Bytes/Tick。

趨勢圖區:根據過濾器設置的條件和座標區設置,數據分析後回在這個區域以圖形化方式展現。點擊圖形中的點,會自動定位到相應的數據包。點擊趨勢圖中的低谷點,你會發現大量的數據包重傳。

IO圖表還能夠經過函數對數據進行聚合處理。

點擊Y軸中Unit選項中的Advanced後,就會再過濾器區就會增長Calc選項。以下圖:

相關函數說明:

MIN( ), AVG( ), MAX( ) 分別是統計協議域中數值的最小,平均和最大值。注意,這三個聚合函數只對協議域的值爲數字的纔有效。

Count( ) 此函數計算時間間隔內事件發生的次數,在查看TCP分析標識符時頗有用,例如重傳。

Sum( ) 該函數統計事件的累加值。和MIN()函數同樣,這個也只有協議域的值爲數字的狀況下才有效。

雙向時間圖

wireshark還有一個功能就是能夠對網絡傳輸中的雙向時間進行繪圖。雙向時間(round-trip time, RTT),就是一個數據包被確認正常接收所花費的時間。以tcp協議爲例,就是你push一個數據到一臺主機,主機迴應一個ack給你的主機,你的主機併成功接收ack迴應。這兩個過程花費的時間總和就是雙向時間。雙向時間一般用來尋找網絡傳輸過程當中的慢點和瓶頸,用以判斷網絡傳輸是否有延遲。

經過「Statistics」菜單中的「Tcp  StreamGraph」中的「Round Trip Time Graph」選項能夠打開這個雙向時間圖對話框。以下圖:

這個圖表中的每一個點表明一個數據包的雙向時間。你能夠單機圖表中的任何一點,而後在數據包列表區就會自動定位到相應的數據包。從數據表來看,咱們下載壓縮包仍是比較穩定的。數據包的rtt時間大多數在0.05s如下,其餘大多數在0.1s左右,少數超過了1.5s。

跟蹤tcp流


Wireshark分析功能中最不錯的一個功能是它可以將TCP流重組。重組後的數據格式更容易閱讀。跟蹤TCP流這個功能能夠將接收到的數據排好順序使之容易查看,而不須要一小塊一小塊地看。這在查看HTTP、FTP等純文本應用層協議時很是有用。

咱們以一個簡單的HTTP請求舉例來講明一下。打開wireshark_bo56_pcap.pcapng,並在顯示過濾器中輸入「http contains wireshark」,點擊「apply」按鈕後,在數據包列表框中就會只剩下一條記錄。以下圖。

右鍵單擊這條記錄並選擇Follow TCP Stream。這時TCP流就會在一個單獨的窗口中顯示出來。以下圖:

咱們看到這個窗口中的文字會有兩種顏色。其中紅色用於表示從源地址到目標地址的流量。在咱們的例子裏面就是從咱們本機到web服務器的流量。你能夠看到最開始的紅色部分是一個GET請求。藍色部分是和紅色部分相反的方向,也就是從目標地址到源地址的流量。在咱們的例子中,藍色部分的第一行是「HTTP/1.1 200 OK」,是來自服務器的一個http成功響應。

在這個窗口中除了可以看到這些原始數據,你還能夠在文本間進行搜索,將其保存成一個文件、打印,或者以ASCII碼、EBCDIC、十六進制或者C數組的格式去查看。這些選項均可以在跟蹤TCP流窗口的下面找到。

相關文章
相關標籤/搜索