一、什么是 tshark?
tshark
是 Wireshark 的命令行版本,支持几乎所有 Wireshark 的核心功能。它可以用来:
抓包并保存为 pcap 文件
实时显示数据包信息
提取指定字段进行分析
配合 shell 脚本完成自动化任务
二、安装与验证
Kali Linux 通常自带 tshark
,但你可以运行以下命令确认:
tshark -v
如果没有安装:
sudo apt update
sudo apt install tshark
安装过程中会提示是否允许非 root 用户抓包,可以选择“是”以便后续使用。
三、基本抓包命令
抓本地所有流量:
tshark
指定网卡抓包(可用 ip a
查看接口名):
tshark -i eth0
抓取指定数量的包:
tshark -i wlan0 -c 100
将抓到的包保存到文件:
tshark -i eth0 -w output.pcap
四、使用过滤器
tshark
支持两种过滤方式:
1. 捕获过滤(在抓包时生效):
tshark -i eth0 -f "port 80"
2. 显示过滤(抓完之后筛选):
tshark -i eth0 -Y "http.request"
组合使用:
tshark -i eth0 -f "tcp port 80" -Y "http.request.method == GET"
五、输出控制
只显示源 IP 和目标 IP:
tshark -T fields -e ip.src -e ip.dst
显示时间、协议、源/目的地址等:
tshark -i eth0 -T fields -e frame.time -e ip.src -e ip.dst -e tcp.port -e _ws.col.Protocol
保存为 CSV 格式(适合后续处理):
tshark -i eth0 -T fields -E separator="," -e ip.src -e ip.dst -e tcp.port > output.csv
六、分析 pcap 文件
从已保存的文件读取并分析:
tshark -r output.pcap
仅提取 HTTP 请求方法:
tshark -r output.pcap -Y "http.request" -T fields -e http.request.method
七、常见用途示例
1. 抓取 DNS 查询:
tshark -i eth0 -f "port 53" -Y "dns"
2. 抓取并实时显示访问某个 IP 的通信:
tshark -i wlan0 -Y "ip.addr == 192.168.1.100"
3. 抓包并自动在 10 秒后停止:
tshark -a duration:10 -i eth0 -w short-session.pcap
八、权限与建议
建议使用 root 或具有抓包权限的用户运行
非 root 用户需加入
wireshark
用户组:
sudo usermod -aG wireshark your_username
退出终端并重新登录以生效