📖 工具简介
tshark 是 Wireshark 的命令行版本,一款开源的网络协议分析器,用于捕获、解析和分析网络流量。
⚙️ 核心功能
| 功能 | 说明 |
|---|---|
| 数据包捕获 | 实时抓取网络流量 |
| 协议解析 | 支持 HTTP、DNS、TCP、UDP、SMTP 等数百种协议 |
| 流量过滤 | 支持 BPF 过滤表达式和显示过滤器 |
| 文件操作 | 抓包结果保存为 pcap/pcapng 格式 |
| 统计分析 | 内置多种流量统计功能 |
🔍 tshark vs Wireshark 对比
| 对比项 | tshark | Wireshark |
|---|---|---|
| 界面 | 命令行(无 GUI) | 图形界面(GTK/Qt) |
| 资源消耗 | 轻量,低内存占用 | 较占用资源 |
| 适用场景 | 服务器、远程连接、自动化脚本 | 本地交互式分析 |
| 抓包方式 | 适合长期抓包、后台运行 | 适合临时抓包、即时分析 |
| 数据展示 | 文本输出,适合 grep/awk 处理 | 可视化树状结构展示 |
| 学习成本 | 需要熟悉命令行 | 图形化更容易上手 |
| 性能 | 高性能,适合大流量 | 大流量时可能卡顿 |
| 部署方式 | 可远程 SSH 使用 | 需要本地安装 |
🎯 使用场景
- 应急响应与安全分析
- 分析可疑流量,定位攻击行为
- 识别恶意通信(Webshell、远控木马)
- 检测异常协议(DNS 隧道、ICMP 隧道)
- 渗透测试
- 抓包分析 SQL 注入、XSS 等漏洞利用
- 提取攻击者发送的 payload
- 验证漏洞利用是否成功
- 故障排查
- 分析网络延迟、丢包问题
- 查看 TCP/UDP 连接状态
- 定位服务无法访问的原因
- CTF 竞赛(MISC 方向)
- 流量分析取证题
- 从 pcap 中提取隐藏数据
- 还原文件传输内容
- 自动化与批量处理
- 编写脚本批量分析流量
- 与其他工具联动(grep、awk、Python)
- 定时抓包并生成报告
📝 常用命令速查
# 基础抓包
tshark -i eth0 -c 100 # 抓 100 个包
tshark -i eth0 -w out.pcap # 保存到文件
tshark -D # 列出可用网卡
# 过滤表达式
-Y http # HTTP 流量
-Y "ip.addr == 192.168.1.1" # 特定 IP
-Y dns # DNS 查询
-Y "tcp.port == 80" # 80 端口
-Y "http.request.method == POST" # POST 请求
# 读取 pcap 文件
tshark -r out.pcap -Y http # 分析文件
tshark -r out.pcap -q -z http,stat # HTTP 统计
tshark -r out.pcap -q -z ip,stat # IP 统计
tshark -r out.pcap -T fields -e http.request.uri # 提取字段
# 提取关键信息
-T fields -e ip.src -e ip.dst # 提取源/目的 IP
-T fields -e http.host -e http.request.uri # 提取 URL
💡 选型建议
| 场景 | 推荐工具 |
|---|---|
| 本地临时分析、学习网络协议 | Wireshark |
| 远程服务器抓包、自动化脚本 | tshark |
| 大流量长期抓包 | tshark |
| 快速定位问题、过滤数据包 | Wireshark |
| 批量处理、编写分析脚本 | tshark |