应使用tshark命令行工具在无图形界面的Linux服务器上解析pcapng文件,如tshark -r capture.pcapng -Y "http" -T fields -e http.host -e http.request.uri;Wireshark仅适用于有X11/Wayland环境的系统。

你需要在Linux上打开已捕获的.pcap或.pcapng文件,逐层查看协议字段、筛选关键流量、提取完整会话内容,并确认数据是否符合预期——这不依赖图形界面是否开启,但要求文件本身已存在且未被截断或损坏。
启动Wireshark并加载抓包文件
在终端中执行 wireshark /path/to/capture.pcapng,文件路径必须准确;如果当前用户无权访问该文件,会直接报错退出,此时需先用 chmod 644 或 sudo chown $USER:$USER 调整权限。
若系统未安装图形环境(如纯命令行服务器),此命令将失败——【Wireshark是GUI程序,无法在无X11/Wayland的终端中运行】。此时应改用 tshark -r /path/to/capture.pcapng -Y "http" -T fields -e http.host -e http.request.uri 做轻量解析。
成功加载后,主界面自动显示封包列表,首列编号从1开始连续递增,时间戳默认为相对起始时间(微秒级),不是系统本地时间。
用显示过滤器快速聚焦目标流量
方法一:按协议类型过滤
在顶部Filter栏输入 dns 或 tcp,回车生效;注意大小写不敏感,但空格不能省略——输成 dnsandtcp 会报错变红。
方法二:按IP和端口组合过滤
例如只看发往 192.168.1.50 的 HTTPS 流量:ip.dst == 192.168.1.50 && tcp.port == 443;这里必须用 &&,不能用 and 或英文逗号。
方法三:按应用层内容匹配
查找含特定关键词的HTTP请求:http.request.uri contains "/api/v1/login";注意 contains 匹配子串,区分大小写,若不确定大小写可加 lower() 函数包裹:lower(http.request.uri) contains "login"。
深入查看协议结构与原始数据
第一步:点击任意一行数据包,下方“封包详细信息”面板自动展开分层结构。
第二步:逐级点击箭头展开 Ethernet II → IPv4 → TCP → HTTP,每展开一层,对应字段值即刻高亮显示在右侧十六进制区;IPv4头部中的 TTL 字段若为 64,大概率来自 Linux 主机,128 来自 Windows,这可用于辅助判断通信端角色。
第三步:切换到底部“十六进制/ASCII 数据区”,观察明文部分——HTTP 请求体、DNS 查询名、MQTT Topic 等常在此处裸露;若看到乱码但左侧 ASCII 列有可读字符,说明该字段确实是文本载荷,不是加密或二进制数据。
右键任一 TCP 包 → Follow → TCP Stream,Wireshark 会自动重组该连接的全部往返数据流,以清晰文本形式呈现请求与响应;关闭窗口时会提示是否保存为纯文本,建议勾选“Include bytes in stream”,否则丢失原始字节边界。
导出关键字段用于进一步处理
菜单栏 File → Export Packet Dissections → As CSV…,弹窗中勾选“Packet summary line”和“Packet details”,输出 CSV 文件包含时间、源IP、目的IP、协议、长度、信息摘要等基础字段。
若只需导出所有 DNS 查询域名,用命令行更高效:tshark -r capture.pcapng -Y "dns.qry.name" -T fields -e dns.qry.name | sort -u > domains.txt;这比在 GUI 中手动复制几百行快得多,也避免漏行。
导出前务必确认原始捕获文件未启用“Limit packet size”选项(即没加 -s 68 类参数),否则导出的字段可能截断,比如 DNS 响应中的长域名只显示前 68 字节,导致分析错误。


















