载荷匹配
载荷匹配
# 匹配 HTTP GET 请求(tcpdump 手册示例的写法):
tcpdump -nn -i eth0 -A -s 0 'tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
# 匹配 "POST":
tcpdump -nn -i eth0 -A -s 0 'tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354'
# 匹配 HTTP 响应 404("HTTP/1.1 404" 中的 404 段):
tcpdump -nn -i eth0 -A -s 0 'tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2)+9:3] = 0x343034'| 原理 | tcp[12:1] & 0xf0 >> 2 = TCP 头长度,即载荷起点 |
|---|---|
| 十六进制 | GET=47455420、POST=504f5354、404=343034 |
| 前提 | 需 -s 0 抓全包,且连接未加密(HTTP 明文) |
HTTPS 流量无法用载荷匹配(加密);这类需求要么在 TLS 终止点之后抓,要么改用 SNI/域名维度过滤。