Wireshark入门与进阶系列四之过滤语法
2016-07-30 20:24
399 查看
0x00 前言
我们都知道,wireshark可以实现本地抓包,同时Wireshark也支持remote packet capture protocol(rpcapd)协议远程抓包,只要在远程主机上安装相应的rpcapd服务例程就可以实现在本地电脑执行wireshark 捕获远程电脑的流量了。
0x01 语法简介
1 过滤语法第一种:标准协议,既支持粗粒度的过滤如HTTP,也支持细粒度的、依据协议属性值进行的过滤如tcp.port==80、http.request.method=="GET"
第二种:内容的过滤,既支持深度的字符串匹配过滤如http contains "www.baidu.com",也支持特定偏移处值的匹配过滤如tcp[20:3] == 47:45:54
2过滤器
第一种: 捕捉过滤器(CaptureFilters):决定捕捉的流量内容。仅支持协议过滤。抓抱前进行设置,决定抓取怎样的数据,方便stream的追踪和排查
第二种:显示过滤器(DisplayFilters): 决定捕捉内容中显示的结果。既支持协议过滤也支持内容过滤。
0x02 捕捉过滤器语法
语法:<Protocol> <Direction> <Host(s)> < Value> < Logical Operations> <Other expression>例子1: host 192.168.5.231 and !arp and port !53 and http #捕获主机192.168.5.231的HTTP流量,但是不捕获apr和DNS 流量
例子2:host www.baidu.com and not port 80 and not port 25#捕获主机www.baidu.com的流量,但是不捕捉HTTP和SMTP协议的流量。:
Protocol(协议): ether,fddi, ip,arp,rarp,decnet,lat, sca,moprc,mopdl, tcp , udp 等,如果没指明协议类型,则默认为捕捉所有支持的协议。
Direction(方向):src, dst,src and dst, src or dst等,如果没指明方向,则默认使用
“src or dst” 作为关键字。
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)”不等价。
0x03 显示过滤器
1.协议过滤语法语法:Protocol.String 1.String 2Comparison operator ValueLogical OperationsOther expression
例子:http.request.method =="GET" or icmp.type
Protocol(协议)ether,fddi,
ip,arp,rarp,decnet,lat, sca,moprc,mopdl, tcp , udp 等,如果没指明协议类型,则默认为捕捉所有支持的协议。
string1和string2是可选的
[b]Comparison
operator
[/b]
==#Equal. ip.src==10.0.0.5
!= #Not equal. ip.src!=10.0.0.5
> #Greater than. frame.len > 10
< #Less than. frame.len < 128
>= #Greater than or equal to. frame.len ge 0x100
<= #Less than or equal to. frame.len <= 0x20
2 按协议进行过滤
snmp || dns || icmp显示SNMP或DNS或ICMP封包。
3 按协议的属性值进行过滤
ip.addr ==192.168.5.231#显示来自192.168.5.231
的流量包
ip.src !=
192.168.5.231or ip.dst !=
192.168.5.231 #显示来自除192.168.5.231 之外i的流量包
ip.src == 192.168.5.0/255显示来自192.168.5.网段的封包
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深度字符串匹配
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过滤支持比较运算符、逻辑运算符,内容过滤时还能使用位运算。
如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。
0x04参考资料
https://wiki.wireshark.org/CaptureFiltershttps://wiki.wireshark.org/DisplayFilters https://www.wireshark.org/docs/wsug_html_chunked/ChWorkBuildDisplayFilterSection.html
欢迎大家分享更好的思路,热切期待^^_^^ !
相关文章推荐
- 02-即时通讯-XMPP 简单介绍
- 【整理】JS中getElementsByName()方法
- Linux环境下VI/VIM编辑文件时无权限保存的解决方法
- ASP.NET MVC开发:Web项目开发必备知识点
- C语言#define的用法
- 我每天都在github上做些什么
- HDU 5222 Exploration 混合图判断是否成环
- bash 常用操作
- codeforces-702A-Maximum Increase
- iOS-跟着标哥微博&学习导航头像缩放
- ubuntu软件卸载
- 网页屏幕上有只小虫在到处爬(代码)
- linux安装Telnet工具
- 习题3-9 子序列 UVa10340
- 动态规划之背包问题
- iOS-部分知识点小结
- C++ 中获取EXE路径
- Android加载动画系列——FinePoiStarLoadingAnim
- MYSQL的SQL语句优化
- POJ1068-Parencodings