0 常见的操作符
wireshark中有几个比较常见的条件判断操作符:
操作符 | 操作符 | 含义 |
eq | r== | 等于 |
ne | != | 不等于 |
gt | > | 大于 |
ge | >= | 大于等于 |
lt | < | 小于 |
le | <= | 小于等于 |
and | && | 与 |
or | ||
not | ! | 非 |
复杂的条件运算建议加上括号进行区分 ()
1、IP地址相关的过滤:
ip.addr == 127.0.0.1 //过滤ip地址为 127.0.0.1的包(包括源和目的)
ip.src == 192.168.1.55 //过滤源ip地址为 192.168.1.55的包
ip.dst == 192.168.1.55 //过滤目的ip地址为 192.168.1.55的包
上述同样可以用host来进行代替例如:
ip.host ip.src_host ip.dst_host
此外还有许多有关ip相关的过滤规则,常见就是以上几种,其他的信息就是和 ip层协议(第三层协议)相关的内容了,具体可以查看《tcp/ip详解卷一》第三章
2、tcp相关过滤规则
到tcp/udp这一层(传输层)就没有ip地址的概念了。
端口相关
- tcp.port == 8080
- tcp.srcport == 9527
- tcp.dstport == 1883
tcp数据长度
- tcp.len == 29
tcp的标志位
- tcp.flags.fin == 1
- tcp.flags.ack == 1
- tcp.flags.syn == 1
- tcp.flags.push == 1
- tcp.flags.reset == 1
- tcp.flags == 0x002
这些和具体tcp协议标志相关,推荐相关数据进行深层次阅读《tcp/ip详解卷一》第三章 网际协议 在这里不进行详细解答,有时间利用相关的例子对每一个标志进行剖析
tcp 16进制内容进行过滤
tcp[20:2] == 33:44
tcp协议本身的长度位 20 从20个字节开始也就是真正的数据段,该句话的意思是检索tcp数据段中以 33 44 开头的报文
tcp 对ASCII 字符进行过滤
tcp contains "bms"
该句含义是 过滤 tcp报文中包含字符串bms的报文
data contains "bms" // tcp 或者udp数据段中包含bms的报文
有关tcp就简单介绍这些 还有许多有关tcp的过滤规则,通常都和tcp的传输协议有关,建议阅读相关介绍tcp的书籍。
3、udp 相关过滤规则
udp相对tcp来说相对简单
端口相关
- udp.port == 8080
- udp.srcport == 9527
- udp.dstport == 1883
udp 数据长度
- udp.length == 8 + 22 //udp本身的8个字节加上 数据段长度
udp 16进制内容进行过滤
用法与tcp类似
udp[8:2] == 33:44
udp协议本身的长度位 8 从8个字节开始也就是真正的数据段,该句话的意思是检索udp数据段中以 33 44 开头的报文
udp 对ASCII 字符进行过滤
用法与tcp类似
udp contains "bms"
该句含义是 过滤 tcp报文中包含字符串bms的报文