Ubuntu Sniffer 数据包分析流程(以tcpdump为例)
在Ubuntu系统中,最常用的命令行Sniffer工具是tcpdump,可通过包管理器快速安装:
sudo apt-get update # 更新软件包索引
sudo apt-get install tcpdump # 安装tcpdump
安装完成后,需确认工具是否可用:tcpdump --version。
使用-i参数指定要监听的接口(如eth0为有线接口、wlan0为无线接口),若需监听所有接口,可使用any:
sudo tcpdump -i eth0 # 监听eth0接口的所有流量
sudo tcpdump -i any # 监听所有网络接口
注:捕获数据包需要root权限,因此需使用
sudo。
使用-w参数将数据包保存到.pcap文件(Wireshark通用格式),便于后续详细分析:
sudo tcpdump -i eth0 -w capture.pcap # 将eth0接口的流量保存到capture.pcap
若需限制捕获文件大小(如100MB),可添加-C参数;若需分割多个文件,可添加-W参数。
通过**BPF(Berkeley Packet Filter)**语法过滤特定流量,减少无关数据干扰:
sudo tcpdump -i eth0 port 80 # 捕获80端口的HTTP流量
sudo tcpdump -i eth0 'port 443 or port 53' # 捕获HTTPS或DNS流量
sudo tcpdump -i eth0 tcp # 捕获TCP流量
sudo tcpdump -i eth0 udp # 捕获UDP流量
sudo tcpdump -i eth0 icmp # 捕获ICMP流量(如ping)
sudo tcpdump -i eth0 src 192.168.1.100 # 捕获源IP为192.168.1.100的流量
sudo tcpdump -i eth0 dst 192.168.1.1 # 捕获目标IP为192.168.1.1的流量
sudo tcpdump -i eth0 'src 192.168.1.100 and dst port 80' # 组合过滤示例
使用-r参数读取保存的.pcap文件,结合过滤选项快速查看关键信息:
sudo tcpdump -r capture.pcap # 读取capture.pcap文件
sudo tcpdump -r capture.pcap port 80 # 查看文件中的HTTP流量
常用选项:
-nn:不解析主机名和端口名(提升查看速度);-s 0:捕获完整数据包(默认只捕获前96字节);-c 100:捕获100个数据包后停止(避免文件过大)。对于复杂流量(如TCP三次握手、HTTP请求响应),建议使用Wireshark(图形化协议分析器):
sudo apt-get install wireshark;File -> Open,选择之前保存的.pcap文件;http.request.method == GET)进一步筛选感兴趣的流量。若需定期捕获并分析流量,可结合Bash脚本+Cron定时任务实现:
sniff_automatically.sh):#!/bin/bash
INTERFACE="eth0"
OUTPUT_FILE="/var/log/sniffer_output_$(date +%Y%m%d_%H%M%S).pcap"
LOG_FILE="/var/log/sniffer_stats.log"
# 捕获100个数据包并保存到文件
sudo tcpdump -i $INTERFACE -w $OUTPUT_FILE -c 100
# 统计数据包数量并记录到日志
PACKET_COUNT=$(sudo tcpdump -r $OUTPUT_FILE | wc -l)
echo "$(date '+%Y-%m-%d %H:%M:%S') - Captured $PACKET_COUNT packets in $OUTPUT_FILE" >> $LOG_FILE
chmod +x sniff_automatically.sh;crontab -e,添加以下内容(每5分钟运行一次):*/5 * * * * /path/to/sniff_automatically.sh
日志文件/var/log/sniffer_stats.log会记录每次捕获的数据包数量和时间。.pcap文件可能包含敏感信息(如密码、个人隐私),需妥善存储(如加密)并定期清理。