-A 在做什么
-A 把报文的载荷以 ASCII 形式打印出来,适合直接肉眼阅读文本协议:HTTP 请求头、响应体、邮件交互、Redis 命令都能看得清清楚楚。它只改变显示方式,不影响落盘内容,因此可以与其他选项自由组合。对二进制协议使用它会得到大片乱码,此时应改用十六进制视图。写 -A 时通常还要搭配完整快照长度,否则内容会被截断。
基本信息
| 作用 | 以 ASCII 打印报文内容,含头部 |
|---|---|
| 适用协议 | 明文文本协议,如 HTTP、邮件、部分缓存协议 |
| 不适用 | 加密流量与二进制协议,会显示为乱码 |
| 搭配建议 | 配合完整快照长度,避免内容被截断 |
| 与落盘关系 | 仅影响显示,文件内容不变 |
典型使用场景
- 快速确认接口返回内容:直接读响应头与响应体
- 核对请求携带的字段:确认请求头与参数是否如预期
- 排查字符编码问题:看到实际字节即可判断编码是否一致
- 验证业务流量是否明文:确认是否存在未加密的敏感传输
- 配合离线读取:对已落盘文件用文本视图复核内容
常用示例
常用示例
tcpdump -i eth0 -nn -A -s 0 'tcp port 80 and host 10.0.0.9' | head -60 # 看明文 HTTP
tcpdump -i eth0 -nn -A -s 0 -c 5 'tcp port 8080' # 取样查看内容
tcpdump -nn -A -r http.pcap 'tcp port 8080' | head -40 # 离线读取明文
tcpdump -i eth0 -nn -A -s 0 'tcp port 80 and tcp[13] & 8 != 0' | head -40 # 只看带推送标志的数据包
tcpdump -i eth0 -nn -X -s 0 'tcp port 80' | head -40 # 二进制视角,对照排查乱码打印选项对照
| 选项 | 显示内容 | 适用场景 |
|---|---|---|
| -A | 载荷按 ASCII 显示 | 文本协议肉眼阅读 |
| -X | 十六进制加 ASCII 并排 | 二进制协议与乱码排查 |
| -e | 附加链路层头部 | 核对 MAC 与以太网类型 |
| -v 与更高级别 | 提升解码详细度 | 看 IP 与 TCP 选项字段 |
| 组合使用 | 例如 -A 与 -X 同时给出 | 同一报文两种视角对照 |
输出里会混入大量二进制控制字符与空行,用行数上限或管道截取前几十行更易读。内容分片时同一请求可能跨多个报文显示。
抓取明文内容可能涉及账号、令牌等敏感信息。取证与共享抓包文件前要先确认合规要求,必要时做脱敏处理再交付。
与过滤条件配合
与过滤条件配合
tcpdump -i eth0 -nn -A -s 0 'tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420' | head -40 # 只看 GET 请求内容
tcpdump -i eth0 -nn -A -s 0 'dst port 80 and host 10.0.0.9' | grep -i -E 'host:|user-agent:' | head -10 # 直接抽关键头部判读要点
- 输出全是乱码时说明这是加密或二进制流量,换十六进制视图再看
- 看到内容明显不全时先核对快照长度设置,而不是怀疑对端少发
- 响应体较长时分片显示,需要按会话重组才能看到完整内容
- 抓包文件里同时包含请求与响应时,用方向条件区分更清晰