wireshark過濾語法總結

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


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

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

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


wireshark有兩種過濾器:

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


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

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

兩種過濾器它們支持的過濾語法並不一樣。


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

語法: Protocol Direction Host(s) Value Logical Operations Other expression
例子: tcp dst 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.comhttp封包。

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

2.內容過濾語法

2.1深度字符串匹配

contains :Does 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過濾支持比較運算符、邏輯運算符,內容過濾時還能使用位運算。

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

參考:

wireshark的HELP-Manual Pages-Wireshark Filter

http://blog.csdn.net/yhwxxx/article/details/5643095

http://tieba.baidu.com/p/739516717

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