首页/网络/抓包与流量分析速查/Wireshark 字节切片过滤
Wireshark 技巧75 条

Wireshark 字节切片过滤

用 字段[偏移:长度] 语法读取任意字节:frame[0:4] 匹配帧头、tcp.payload[0:2],配合十六进制写出精确匹配。

字节切片过滤是什么

Wireshark 支持用「字段[偏移:长度]」的语法读取任意位置的字节值:可以取帧头部的前两字节判断报文类型,也可以读取载荷开头的几个字节识别自定义协议。当协议解析不出来时它尤其有用——绕过解析器直接按字节位置比对。

基本信息

适用工具Wireshark 3.x / 4.x
语法字段[开始:长度] == 0x…
省略长度只写偏移表示取一个字节
常用对象frame、ip、tcp.payload 等字段
注意偏移从该字段自身起点开始计算

典型使用场景

  • 识别解析器未支持的自定义协议报文
  • 按报文头部的类型字段筛出特定消息
  • 核对加密流量中的明文头部(如记录类型)
  • 在验证新协议实现时比对字段编码
  • 排查分片或封装导致的字段错位

常用示例

常用示例
frame[0:2] == 0x0800                      # 帧类型为 IPv4
tcp.payload[0] == 0x16                     # 载荷首字节(握手记录类型)
udp[8:4] == 0x00:00:00:00                  # UDP 载荷前四字节
ip[9] == 6                                 # IP 协议号为 TCP

写法与用途

写法读取内容用途
frame[0:2]帧头部前两字节判断上层协议类型
ip[9]IP 协议号字段确认承载协议
tcp.payload[0]载荷首字节识别自定义协议
udp[8:4]载荷前四字节核对自定义报文头
偏移写错时过滤器会静默返回空结果,建议先在小样本上验证再用于大文件。
切片只能作用在已解析字段上,字段未解析或位置被改变时结果不可靠,必要时改用整帧原始字节。

补充要点

  • 先用解析视图确认目标字节的偏移,再写表达式,可避免反复试错
  • 对二进制自定义协议,用十六进制写法比字符串写法更清晰
  • 把切片条件与端口条件组合,能快速定位某类自定义报文
  • 字段长度可变时(如带选项)偏移会变化,需要格外小心
切片表达式适合精确定位,不确定结构时先用详情区的字节视图观察再下笔。
对自定义协议,先用详情区的字节视图确认目标位置再写切片表达式,可以避免大量试错。

易错点

  • 偏移算错却不自知:过滤器静默返回空结果,容易被误判为「报文不存在」
  • 对可变长头部直接按固定偏移取字节,字段位置变化后结果错误
  • 加密或压缩载荷上使用切片过滤,得到的是密文而非业务字段

数据来源与参考

  • Wireshark User's Guide(byte slice)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌