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/