wireshark過濾語法總結

作應用識別這一塊常常要對應用產生的數據流量進行分析。express

抓包採用wireshark,提取特徵時,要對session進行過濾,找到關鍵的stream,這裏總結了wireshark過濾的基本語法,供本身之後參考。(腦子記不住東西)網絡

wireshark進行過濾時,按照過濾的語法可分爲協議過濾和內容過濾。session

對標準協議,既支持粗粒度的過濾如HTTP,也支持細粒度的、依據協議屬性值進行的過濾如tcp.port==5三、http.request.method=="GET"。tcp

對內容的過濾,既支持深度的字符串匹配過濾如http contains "Server",也支持特定偏移處值的匹配過濾如tcp[20:3] == 47:45:54。函數

wireshark有兩種過濾器:post

捕捉過濾器(CaptureFilters):用於決定將什麼樣的信息記錄在捕捉結果中。
顯示過濾器(DisplayFilters):用於在捕捉結果中進行詳細查找。 code

捕捉過濾器在抓抱前進行設置,決定抓取怎樣的數據;顯示過濾器用於過濾抓包數據,方便stream的追蹤和排查。 blog

捕捉過濾器僅支持協議過濾,顯示過濾器既支持協議過濾也支持內容過濾。 dns

兩種過濾器它們支持的過濾語法並不同。 ip

捕捉過濾器--捕捉前依據協議的相關信息進行過濾設置

語法:Protocol Direction Host(s) Value Logical Operations Other expression

例子:tcpdst      10.1.1.1 80                    and        tcp          dst 10.2.2.2 3128

示例:

(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或者源IP位於網絡10.6.0.0/16,目的IP的TCP端口號在200至10000之間,而且目的IP位於網絡 10.0.0.0/8內的全部封包。

字段詳解:

Protocol(協議):
可能值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
若是沒指明協議類型,則默認爲捕捉全部支持的協議。
注:在wireshark的HELP-Manual Pages-Wireshark Filter中查到其支持的協議。


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)」不等價。

顯示過濾器--對捕捉到的數據包依據協議或包的內容進行過濾

1.協議過濾語法

語法:Protocol [String 1 String 2] Comparison operator Value Logical Operations Other expression

例子:http          request method ==                             "POST" or                             icmp.type

string1和string2是可選的。

依據協議過濾時,可直接經過協議來進行過濾,也能依據協議的屬性值進行過濾。

按協議進行過濾:

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

按協議的屬性值進行過濾:

ip.addr == 10.1.1.1

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

ip.src == 10.230.0.0/16
顯示來自10.230網段的封包。

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

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

http.request.method== "POST"
顯示post請求方式的http封包。

http.host == "tracker.1ting.com"
顯示請求的域名爲tracker.1ting.com的http封包。

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

2.內容過濾語法

2.1深度字符串匹配

containsDoes the protocol, field or slice contain a value

示例

tcp contains "http"
顯示payload中包含"http"字符串的tcp封包。

http.request.uri contains "online"
顯示請求的uri包含"online"的http封包。

2.2特定偏移處值的過濾

tcp[20:3] == 47:45:54 /* 16進制形式,tcp頭部通常是20字節,因此這個是對payload的前三個字節進行過濾 */

http.host[0:4] == "trac"

過濾中函數的使用(upper、lower)

upper(string-field) - converts a string field to uppercase
lower(string-field) - converts a string field to lowercase

示例
upper(http.request.uri) contains "ONLINE"
wireshark過濾支持比較運算符、邏輯運算符,內容過濾時還能使用位運算。

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

相關文章
相關標籤/搜索