【Wireshark】過濾器


前言

網絡上關於Wireshark的教程已有不少,博主就簡單介紹一下Wireshark分析數據包時最重要的技巧之一的過濾器。。一次性嗅探到的數據包有很多,想要高效地提取出你想要的數據包或者對某個數據包中某個字段值的分析等,必不可少的就是過濾。過濾器分為捕捉過濾器(CaptureFilters)顯示過濾器(DisplayFilters)

捕捉過濾器

用於決定將什么樣的信息記錄在捕捉結果中,需要在開始捕捉前設置

語法

Protocol Direction Host(s) Value Logical Operations Other Expression
tcp dst 10.1.1.1 80 and tcp dst 10.1.1.2 3289
  • Protocol(協議)

    可能的值: ether, fddi, ip, arp, rarp, decnet, 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端口為3128的封包

tcp dst port 3128

顯示來源IP地址為10.1.1.1的封包

ip src host 10.1.1.1

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

host 10.1.2.3

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

src portrange 2000-2500

顯示除了icmp以外的所有封包

not icmp

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

src host 10.7.2.12 and not dst net 10.200.0.0/16

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

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

捕獲廣播流量

broadcast

顯示過濾器

在捕捉的結果中進行詳細查找時使用,可以在得到捕捉結果后隨意修改顯示過濾器表達式。

語法

Protocol . String1 . String2 Comparison Operator Value Logical Operations Other Expression
ftp . passive . ip == 10.1.1.1 xor icmp.type
  • Protocol(協議)

    位於OSI模型第2至7層的協議,如:IP、TCP、DNS等

  • String1,String2(可選項)

    協議的子類

  • Comparison Operator(比較運算符)

    可以使用6種比較運算符

    英文寫法 C語言寫法 含義
    eq == 等於
    ne != 不等於
    gt > 大於
    lt < 小於
    ge >= 大於等於
    le <= 小於等於
  • Logical Operations(邏輯運算符)

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

    邏輯異或是一種排除性的或。當其被用在過濾器的兩個條件之間時,只有當且僅當其中的一個條件滿足時,這樣的結果才會被顯示在屏幕上

    例如:"tcp.dstport 80 xor tcp.dstport 1025"

    只有當目的TCP端口為80或者來源於端口1025(但又不能同時滿足這兩點)時,這樣的數據包才會被顯示

顯示過濾器例子

顯示SNMP或DNS或ICMP封包

snmp || dns || icmp

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

ip.addr == 10.1.1.1

顯示來源不為10.1.2.3或目的不為10.4.5.6的包

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

顯示來源或目的TCP端口號為25的封包

tcp.port == 25

顯示目的TCP端口號為25的封包

tcp.dstport == 25

顯示包含TCP標志的封包

tcp.flags

顯示包含TCP SYN標志的封包

tcp.flags.syn == 1

排除arp流量

!arp

文本管理流量(telnet或ftp)

tcp.port == 23 || tcp.port == 21

兩種過濾器的區別

可以看出這兩種過濾器在使用和功能上有着區別:

  • 捕捉過濾器是數據經過的第一層過濾器,它用於控制捕捉數據的數量,以避免產生過大的日志文件。而顯示過濾器是在對捕獲結果進行篩選時使用,允許我們在日志文件中迅速准確地找到所需要的記錄。
  • 捕捉過濾器必須在捕捉數據包之前設置,若是捕捉的數據包不是我們想要的,需要重新設置捕捉過濾器並重新捕捉數據包。顯示過濾器的功能比捕捉過濾器更為強大,可以重復設置表達式對捕獲的結果重復篩選而不需要重新捕獲數據包。

跟蹤TCP流

處理TCP協議時,想查看TCP流中的應用層數據,"Following TCP streams"功能將會很有用。
如查看ftp流的命令控制或者數據控制信息。或者僅僅只需要一個顯示過濾來顯示某個TCP流的包。這些都可以通過Wireshark的"Following TCP streams"功能來實現。
Follow Tcp Stream會裝入一個過濾來選擇你已經選擇的TCP流的所有包。

小結

對於Wireshark的使用推薦:

參考:https://openmaniak.com/cn/wireshark_filters.php

多實踐多分析~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM