wireshark的使用 轉載

文章轉載自:CSDN(點此鏈接)


wireshark的使用教程

--用實踐的方式幫助我們理解TCP/IP中的各個協議是如何工作的

wireshark是一款抓包軟件,比較易用,在平常可以利用它抓包,分析協議或者監控網絡,是一個比較好的工具,因爲最近在研究這個,所以就寫一下教程,方便大家學習。

       這裏先說Wireshark的啓動界面和抓包界面

       啓動界面:

       

      

抓包界面的啓動是

按file下的按鈕


之後會出現

     
       

這個是網卡的顯示,因爲我有虛擬機所以會顯示虛擬網卡,我們現在抓的是真實網卡上的包所以在以太網卡右邊點擊start 開始抓包

這個就是抓包的界面了(也是主界面)




Wireshark主窗口由如下部分組成:

  1. 菜單——用於開始操作。

  2. 主工具欄——提供快速訪問菜單中經常用到的項目的功能。

  3. Fiter toolbar/過濾工具欄——提供處理當前顯示過濾得方法。

  4. Packet List面板——顯示打開文件的每個包的摘要。點擊面板中的單獨條目,包的其他情況將會顯示在另外兩個面板中。

  5. Packet detail面板——顯示您在Packet list面板中選擇的包的更多詳情。

  6. Packet bytes面板——顯示您在Packet list面板選擇的包的數據,以及在Packet details面板高亮顯示的字段。

  7. 狀態欄——顯示當前程序狀態以及捕捉數據的更多詳情。

    1.菜單欄

    主菜單包括以下幾個項目:

    File ——包括打開、合併捕捉文件,save/保存,Print/打印,Export/導出捕捉文件的全部或部分。以及退出Wireshark項.

    Edit ——包括如下項目:查找包,時間參考,標記一個多個包,設置預設參數。(剪切,拷貝,粘貼不能立即執行。)

    View ——控制捕捉數據的顯示方式,包括顏色,字體縮放,將包顯示在分離的窗口,展開或收縮詳情面版的地樹狀節點

    GO ——包含到指定包的功能。

    Analyze ——包含處理顯示過濾,允許或禁止分析協議,配置用戶指定解碼和追蹤TCP流等功能。

    Statistics ——包括的菜單項用戶顯示多個統計窗口,包括關於捕捉包的摘要,協議層次統計等等。

    Help ——包含一些輔助用戶的參考內容。如訪問一些基本的幫助文件,支持的協議列表,用戶手冊。在線訪問一些網站,“關於”
    2.工具欄(略)

    3.過濾工具欄



    會彈出對話框
                                      
    這個和在工具欄上輸入協議來查找包的結果是一樣的,只是它方便點
    在工具欄上輸

    點擊 在此區域輸入或修改顯示的過濾字符,在輸入過程中會進行語法檢查。如果您輸入的格式不正確,或者未輸入完成,則背景顯示爲紅色。直到您輸入合法的表達式,背景會變爲綠色。你可以點擊下拉列表選擇您先前鍵入的過濾字符。列表會一直保留,即使您重新啓動程序。
注意:
    1. 做完修改之後,記得點擊右邊的Apply(應用)按鈕,或者回車,以使過濾生效。
    2. 輸入框的內容同時也是當前過濾器的內容(當前過濾器的內容會反映在輸入框)

           4.封包列表 

    1. 封包列表中顯示所有已經捕獲的封包。在這裏您可以看到發送或接收方的MAC/IP地址,TCP/UDP端口號,協議或者封包的內容。

      如果捕獲的是一個OSI layer 2的封包,您在Source(來源)和Destination(目的地)列中看到的將是MAC地址,當然,此時Port(端口)列將會爲空。
      如果捕獲的是一個OSI layer 3或者更高層的封包,您在Source(來源)和Destination(目的地)列中看到的將是IP地址。Port(端口)列僅會在這個封包屬於第4或者更高層時纔會顯示。

      您可以在這裏添加/刪除列或者改變各列的顏色:
      Edit menu -> Preferences

      5.封包詳細信息





      這裏顯示的是在封包列表中被選中項目的詳細信息。
      信息按照不同的OSI layer進行了分組,您可以展開每個項目查看。

      ps:wireshark會用不難,難的是會看懂這些包
      (如果對這些包頭信息不瞭解的可以自己去查查資料)

      6. 16進制數據

      “解析器”在Wireshark中也被叫做“16進制數據查看面板”。這裏顯示的內容與“封包詳細信息”中相同,只是改爲以16進制的格式表述。

      在這裏我們還要學會在大量的信息中過濾分析我們需要的信息

      過濾:

      過濾器會如此重要。它們可以幫助我們在龐雜的結果中迅速找到我們需要的信息。

      -
      -
      捕捉過濾器:用於決定將什麼樣的信息記錄在捕捉結果中。需要在開始捕捉前設置。
      顯示過濾器:在捕捉結果中進行詳細查找。他們可以在得到捕捉結果後隨意修改。


      兩種過濾器的目的是不同的。

      1.捕捉過濾器是數據經過的第一層過濾器,它用於控制捕捉數據的數量,以避免產生過大的日誌文件。


      2.顯示過濾器是一種更爲強大(複雜)的過濾器。它允許您在日誌文件中迅速準確地找到所需要的記錄。

      1.捕捉過濾器


      捕捉過濾器的語法與其它使用Lipcap(Linux)或者Winpcap(Windows)庫開發的軟件一樣,比如著名的TCPdump。捕捉過濾器必須在開始捕捉前設置完畢,這一點跟顯示過濾器是不同的。

      設置捕捉過濾器的步驟是:
      - 選擇 capture -> options。
      - 填寫"capture filter"欄或者點擊"capture filter"按鈕爲您的過濾器起一個名字並保存,以便在今後的捕捉中繼續使用這個過濾器。
      - 點擊開始(Start)進行捕捉。






      語法:  
      Protocol
       
      Direction
       
      Host(s)
       
      Value
       
      Logical Operations
       
      Other expression_r
      例子:  
      tcp
       
      dst
       
      10.1.1.1
       
      80
       
      and
       
      tcp dst 10.2.2.2 3128

       Protocol(協議):
      可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
      如果沒有特別指明是什麼協議,則默認使用所有支持的協議。

       Direction(方向):
      可能的值: src, dst, src and dst, src or dst
      如果沒有特別指明來源或目的地,則默認使用 "src or dst" 作爲關鍵字。
      例如,"host 10.2.2.2"與"src or dst host 10.2.2.2"是一樣的。

       Host(s):
      可能的值: net, port, host, portrange.
      如果沒有指定此值,則默認使用"host"關鍵字。
      例如,"src 10.1.1.1"與"src host 10.1.1.1"相同。

       Logical Operations(邏輯運算):
      可能的值:not, and, or.
      否("not")具有最高的優先級。或("or")和與("and")具有相同的優先級,運算時從左至右進行。
      例如,
      "not tcp port 3128 and tcp port 23"與"(not tcp port 3128) and tcp port 23"相同。
      "not tcp port 3128 and tcp port 23"與"not (tcp port 3128 and tcp port 23)"不同。


      例子:

      tcp dst port 3128

      顯示目的TCP端口爲3128的封包。

      ip src host 10.1.1.1

      顯示來源IP地址爲10.1.1.1的封包。

      host 10.1.2.3

      顯示目的或來源IP地址爲10.1.2.3的封包。

      src portrange 2000-2500

      顯示來源爲UDP或TCP,並且端口號在2000至2500範圍內的封包。

      not imcp

      顯示除了icmp以外的所有封包。(icmp通常被ping工具使用)

      src host 10.7.2.12 and not dst net 10.200.0.0/16

      顯示來源IP地址爲10.7.2.12,但目的地不是10.200.0.0/16的封包。

      (src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8

      顯示來源IP爲10.4.1.12或者來源網絡爲10.6.0.0/16,目的地TCP端口號在200至10000之間,並且目的位於網絡10.0.0.0/8內的所有封包。


      注意事項:

      當使用關鍵字作爲值時,需使用反斜槓“\”。
      "ether proto \ip" (與關鍵字"ip"相同).
      這樣寫將會以IP協議作爲目標。

      "ip proto \icmp" (與關鍵字"icmp"相同).
      這樣寫將會以ping工具常用的icmp作爲目標。

      可以在"ip"或"ether"後面使用"multicast"及"broadcast"關鍵字。
      當您想排除廣播請求時,"no broadcast"就會非常有用。




       2. 顯示過濾器

      通常經過捕捉過濾器過濾後的數據還是很複雜。此時您可以使用顯示過濾器進行更加細緻的查找。
      它的功能比捕捉過濾器更爲強大,而且在您想修改過濾器條件時,並不需要重新捕捉一次。

      語法:   Protocol .
      String 1
      .
      String 2
       
      Comparison
      operator
       
      Value
       
      Logical
      Operations
       
      Other
      expression_r
      例子:
       
      ftp
       
      passive
       
      ip
       
      ==
       
      10.2.3.4
       
      xor
       
      icmp.type

       Protocol(協議):

      您可以使用大量位於OSI模型第2至7層的協議。點擊"Expression..."按鈕後,您可以看到它們。
      比如:IP,TCP,DNS,SSH







       String1, String2 (可選項):

      協議的子類。
      點擊相關父類旁的"》"號,然後選擇其子類。




       Comparison operators (比較運算符):

      可以使用6種比較運算符:

      英文寫法: C語言寫法: 含義:
      eq
      ==
      等於
      ne
      !=
      不等於
      gt
      >
      大於
      lt
      <
      小於
      ge
      >=
      大於等於
      le
      <=
      小於等於

       Logical expression_rs(邏輯運算符):

      英文寫法: C語言寫法: 含義:
      and
      &&
      邏輯與
      or
      ||
      邏輯或
      xor
      ^^
      邏輯異或
      not
      !
      邏輯非

      被程序員們熟知的邏輯異或是一種排除性的或。當其被用在過濾器的兩個條件之間時,只有當且僅當其中的一個條件滿足時,這樣的結果纔會被顯示在屏幕上。
      讓我們舉個例子:
      "tcp.dstport 80 xor tcp.dstport 1025"
      只有當目的TCP端口爲80或者來源於端口1025(但又不能同時滿足這兩點)時,這樣的封包纔會被顯示。



      例子:

      snmp || dns || icmp 顯示SNMP或DNS或ICMP封包。

      ip.addr == 10.1.1.1

      顯示來源或目的IP地址爲10.1.1.1的封包。

      ip.src != 10.1.2.3 or ip.dst != 10.4.5.6

      顯示來源不爲10.1.2.3或者目的不爲10.4.5.6的封包。
      換句話說,顯示的封包將會爲:
      來源IP:除了10.1.2.3以外任意;目的IP:任意
      以及
      來源IP:任意;目的IP:除了10.4.5.6以外任意

      ip.src != 10.1.2.3 and ip.dst != 10.4.5.6

      顯示來源不爲10.1.2.3並且目的IP不爲10.4.5.6的封包。
      換句話說,顯示的封包將會爲:
      來源IP:除了10.1.2.3以外任意;同時須滿足,目的IP:除了10.4.5.6以外任意

      tcp.port == 25 顯示來源或目的TCP端口號爲25的封包。

      tcp.dstport == 25 顯示目的TCP端口號爲25的封包。

      tcp.flags 顯示包含TCP標誌的封包。

      tcp.flags.syn == 0x02 顯示包含TCP SYN標誌的封包。

      如果過濾器的語法是正確的,表達式的背景呈綠色。如果呈紅色,說明表達式有誤。

      分析:

      "Follow TCP Stream"

      如果你處理TCP協議,想要查看Tcp流中的應用層數據,"Following TCP streams"功能將會很有用。如果你項查看telnet流中的密碼,或者你想嘗試弄明白一個數據流。或者你僅僅只需要一個顯示過濾來顯示某個TCP流的包。這些都可以通過Wireshark的"Following TCP streams"功能來實現。

      在包列表中選擇一個你感興趣的TCP包,然後選擇Wireshark工具欄菜單的"Following TCP Streams"選項(或者使用包列表鼠標右鍵的上下文菜單)。然後,Wireshark就會創建合適的顯示過濾器,並彈出一個對話框顯示TCP流的所有數據

      "Follow TCP Stream"對話框



      流的內容出現的順序同他們在網絡中出現的順序一致。從A到B的通信標記爲紅色,從B到A的通信標記爲藍色。當然,如果你喜歡的話你可以從"Edit/Preferences"菜單項的"Colores"修改顏色。

      非打印字符將會被顯示爲圓點。XXX - What about line wrapping (maximum line length) and CRNL conversions?

      在捕捉過程中,TCP流不能實時更新。想得到最近的內容需要重新打開對話框。

      你可以在此對話框執行如下操作:

      1. Save As 以當前選擇格式保存流數據。

      2. Print 以當前選擇格式打印流數據。

      3. Direction 選擇流的顯示方向("Entire conversation", "data from A to B only" or "data from B to A only").

      4. Filter out this stream 應用一個顯示過濾,在顯示中排除當前選擇的TCP流。

      5. Close 關閉當前對話框。移除對當前顯示過濾的影響。

      你可以用以下格式瀏覽流數據。

      1. AsCII。在此視圖下你可以以ASCII凡是查看數據。當然最適合基於ASCII的協議用,例如HTTP.

      2. EBCDIC。For the big-iron freaks out there.(不知道這句是什麼意思, EBCDIC 是IBM公司的字符二進制編碼標準。)

      3. HEX Dump. 允許你查看所有數據,可能會佔用大量屏幕空間。適合顯示二進制協議。

      4. C Arrays. 允許你將流數據導入你自己的C語言程序。

      5. RAW。 允許你載入原始數據到其他應用程序做進一步分析。顯示類似與ASCII設置。但“save As”將會保存爲二進制文件

發佈了19 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章