1. 程式人生 > >Wireshark過濾規則之:http資料包

Wireshark過濾規則之:http資料包

Wireshark過濾語句中常用的操作符

關鍵字有:

eq,== 等於
ne,!= 不等於
gt,> 比…大
lt,< 比…小 ge,>= 大於等於
le,<= 小於等於 and,|| 且 or,&& 或 not,! 取反

另外還有contains和matches兩個不常用的關鍵字,過濾效果不錯。

“contains”過濾包含指定字串的資料包。例如:

http.request.uri contains “/dll/test.htm?”
//過濾http請求的uri中含有/dll/test.htm?欄位的請求資訊

udp contains 81:60:03
//過濾包含81:60:03的udp資料包

http.request.uri matches “V4=..1″
//matches 匹配過濾條件中給定的正則表示式,支援與Perl相容的正則表示式(PCRE)。


http.host==magentonotes.com
http.host contains magentonotes.com
//過濾經過指定域名的http資料包,這裡的host值不一定是請求中的域名

http.response.code==302
//過濾http響應狀態碼為302的資料包

http.response==1
//過濾所有的http響應包

http.request==1
//過濾所有的http請求,貌似也可以使用http.request

http.request.method==POST
//wireshark過濾所有請求方式為POST的http請求包,注意POST為大寫

http.cookie contains guid
//過濾含有指定cookie的http資料包

http.request.uri==”/online/setpoint”
//過濾請求的uri,取值是域名後的部分

http.request.full_uri==” http://task.browser.360.cn/online/setpoint”
//過濾含域名的整個url則需要使用http.request.full_uri

http.server contains “nginx”
//過濾http頭中server欄位含有nginx字元的資料包

http.content_type == “text/html”
//過濾content_type是text/html的http響應、post包,即根據檔案型別過濾http資料包

http.content_encoding == “gzip”
//過濾content_encoding是gzip的http包

http.transfer_encoding == “chunked”
//根據transfer_encoding過濾

http.content_length == 279
http.content_length_header == “279″
//根據content_length的數值過濾

http.server
//過濾所有含有http頭中含有server欄位的資料包

http.request.version == “HTTP/1.1″
//過濾HTTP/1.1版本的http包,包括請求和響應

http.response.phrase == “OK”

//過濾http響應中的phrase

Wireshark捕獲UDP資料包

UDP協議分析常用過濾條件
ip.addr==192.168.0.1 //過濾ip地址
data.len==8 //過濾data部分長度為8的資料包
data.data == 00:08:30:03:00:00:00:00 //過濾指定內容的資料包

udp.srcport == 10092 //過濾經過本機10092埠的udp資料包
udp.dstport == 80 //過濾目標機器10092埠的udp資料包
udp.port==10092 //過濾本機或目標機器10092埠的資料包
udp.length == 20 //過濾指定長度的UDP資料包

UDP校驗和過濾條件
udp.checksum == 0x250f
udp.checksum_good == 0 //Boolean型別
udp.checksum_bad == 0

程序相關的過濾條件

以下過濾條件不支援Windows,因為需要特殊的驅動。

udp.proc.dstcmd //過濾目標程序名
udp.proc.dstpid //過濾目標程序PID
udp.proc.dstuid //過濾目標程序的使用者ID
udp.proc.dstuname //過濾目標程序的使用者名稱
udp.proc.srccmd //過濾源程序名
udp.proc.srcpid //過濾源程序PID
udp.proc.srcuid //過濾源程序的使用者ID
udp.proc.srcuname //過濾源程序的使用者名稱

Wireshark中根據MAC地址/實體地址過濾資料包

Wireshark捕獲過濾中過濾MAC地址/實體地址

ether host 00:11:22:33:44:55 //過濾目標或源地址是00:11:22:33:44:55的資料包

ether dst host 00:11:22:33:44:55 //過濾目標地址是00:11:22:33:44:55的資料包

ether src host 00:11:22:33:44:55 //過濾源地址是00:11:22:33:44:55的資料包

Wireshark顯示過濾中過濾MAC地址/實體地址

eth.addr== 00:11:22:33:44:55 //過濾目標或源地址是00:11:22:33:44:55的資料包

eth.src== 00:11:22:33:44:55 //過濾源地址是00:11:22:33:44:55的資料包

eth.dst== 00:11:22:33:44:55 //過濾目標地址是00:11:22:33:44:55的資料包

Wireshark捕獲經過指定ip的資料包

捕捉過濾抓包前在capture option中設定,僅捕獲符合條件的包,可以避免產生較大的捕獲檔案和記憶體佔用,但不能完整的復現測試時的網路環境。

host 192.168.0.1 //抓取192.168.0.1 收到和發出的所有資料包
src host 192.168.0.1 //源地址,192.168.0.1發出的所有資料包
dst host 192.168.0.1 //目標地址,192.168.0.1收到的所有資料包

src host hostname //根據主機名過濾

ether host 80:05:09:03:E4:35 //根據MAC地址過濾

net 192.168.0 //網路過濾,過濾整個網段
src net 192.168
dst net 192

使用“非/且/或”建立組合過濾條件可以獲得更精確的捕獲

非: ! or “not” (去掉雙引號)
且: && or “and”
或: || or “or”

wirershark過濾指定ip收發資料包示例:

抓取所有目的地址是192.168.0.2 或192.168.0.3 埠是80 的TCP 資料

(tcp port 80) and ((dst host 192.168.0.2) or (dst host
192.168.0.3)) //捕獲過濾

tcp.port==80&&(ip.dst==192.168.0.2||ip.dst==192.168.0.3) //顯示過濾

抓取所有目標MAC 地址是80:05:09:03:E4:35 的ICMP 資料

(icmp) and ((ether dst host 80:05:09:03:E4:35))

icmp && eth.dst==80:05:09:03:E4:35

抓取所有目的網路是192.168,但目的主機不是192.168.0.2 的TCP 資料

(tcp) and ((dst net 192.168) and (not dst host 192.168.0.2))

tcp&&ip.src==192.168.0.0/16&&!(ip.src==192.168.0.2)

捕獲主機192.168.0.1 和主機192.168.0.2 或192.168.0.3的通訊

host 192.168.0.1 and (192.168.0.2 or 192.168.0.3 )

ip.addr==192.168.0.1&&(ip.addr==192.168.0.2||ip.addr==192.168.0.3)

獲取主機192.168.0.1除了和主機192.168.0.2之外所有主機通訊的資料包

host 192.168.0.1 and ! 192.168.0.2

ip.addr==192.168.0.1&&!ip.addr==192.168.0.2

獲取主機192.168.0.1接收或發出的telnet包,telnet使用tcp 23埠

tcp port 23 and host 192.168.0.1

tcp.port==23&&ip.addr==192.168.0.1

原文地址:http://www.magentonotes.com/