全帧搜索是什么
frame contains 在整个报文范围(含各种头部与载荷)里查找字节串,不受具体协议字段限制。凡是不知道字段名、或者内容出现在自定义位置时,它都能命中:错误页关键字、响应体里的敏感串、特定业务字段名、某个自定义协议的魔数。代价是它只做字节比较,不做语义判断,命中之后仍需人工确认。
基本信息
| 适用工具 | Wireshark 3.x / 4.x 显示过滤器 |
|---|---|
| 语法 | frame contains "字符串" 或 frame contains 47:45:54 |
| 字段范围 | 整帧;若只要载荷可改用 tcp.payload contains |
| 大小写 | 区分大小写,需忽略时用 matches 加 (?i) |
| 十六进制写法 | 两个十六进制字节用冒号分隔 |
典型使用场景
- 在明文 HTTP 中定位错误信息或堆栈关键字
- 验证某接口是否真的返回了指定业务码
- 寻找自定义协议里的固定魔数,确认流量属于哪种业务
- 排查证书或配置文件内容是否在明文流量中泄露
常用示例
常用示例
frame contains "Invalid" # 关键字搜索
frame contains "Exception" # 异常堆栈提示
frame matches "(?i)error" # 忽略大小写
frame contains 47:45:54 # 十六进制写法匹配 GET
tcp.payload contains "callback" # 只在 TCP 载荷里搜写法与适用面
| 写法 | 搜索范围 | 适用情况 |
|---|---|---|
| frame contains "abc" | 整帧可打印字节 | 明文应用层内容 |
| frame contains 47:45:54 | 整帧原始字节 | 二进制或含不可打印字符 |
| tcp.payload contains | 仅 TCP 载荷 | 排除头部偶然命中 |
| frame matches 正则 | 整帧按正则 | 需要灵活模式时 |
加密流量搜不到明文是正常现象,需要先导入密钥或协商到会话密钥后再搜。
关键字越短越容易误命中,先用较长且唯一的字符串缩小范围,再用其他条件过滤。
进阶要点
- 先用协议字段过滤缩小范围,再搜关键字,避免在大文件里做全量扫描
- 响应体被压缩时搜不到明文,需要关闭压缩或另行解压后比对
- 命中结果要回到完整会话里看上下文,单包命中可能只是分片的一部分
- 把常用关键字保存成过滤器按钮,重复排查时一键复用
- 搜索与协议字段统计结合:先用字段定位范围,再用内容确认事实
需要统计命中数量时用显示过滤器配合状态栏的包数显示,比逐条翻找更快。