使用 tcpdump 抓取数据包
AI-摘要
TLDR GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
使用 tcpdump 抓取数据包
lololowe安装
tcpdump官网:https://www.tcpdump.org
开源地址:https://github.com/the-tcpdump-group/tcpdump/blob/master/README.md
软件源安装:
1 | sudo apt update && sudo apt install tcpdump # Debian系 |
软件源安装的tcpdump通常会落后官网几个版本,因此建议手动编译安装最新版:
1 | sudo apt install -y build-essential libpcap-dev |
5个常用的参数以及过滤器
参数
使用tcpdump -h
命令 可以看到他有二十多个参数:
每个参数的详细解释可以参考官方文档:https://www.tcpdump.org/manpages/tcpdump.1-4.99.4.html
其中常用的参数有以下五个:
-i
:指定需要抓包的网卡。如果未指定的话,tcpdump会根据搜索到的系统中状态为UP的最小数字的网卡确定(不包括换回接口),一般情况下是eth0。使用-i参数通过指定需要抓包的网卡,可以增加抓包的针对性,便于后续的分析工作。-nnn
:禁用tcpdump展示时把IP、端口等转换为域名、端口对应的知名服务名称。这样看起来更加清晰,同时能加开输出速度。-s
:指定抓包的包大小。默认是 262144 字节,如果只想捕获数据包首部而不关心载荷,可以设置一个较小的值,例如 96 或 128。如果想要抓取较大的包,可以设置更大的值。-c
:指定抓包的数量, 到达数量后退出。-w
:指定抓包文件保存到文件(推荐格式.pacp
)而不是显示到终端,以便后续使用Wireshark等工具进行分析, tcpdump直接读取抓包文件可以使用-r
参数(读取时如果提示权限拒绝,可以尝试修改文件后缀为pac
)。
过滤器
使用tcpdump的过滤器可以达到减少无效信息干扰的效果。常用的过滤器规则有以下几个:
host
:源主机或目的主机的IP地址。src host
:源主机的IP地址。dst host
:目的主机的IP地址。port
:源或目的端口。src port
:源端口。dst port
:目的端口。tcp
、udp
、icmp
、aro
、ip6
:数据包所使用的协议,支持的协议参数不多,建议使用端口过滤。!
:反向匹配,例如port!22
,抓取非22端口的数据通信。
实例
默认状态下直接抓取所有数据包:
1 | sudo tcpdump |
不将主机名、端口号、MAC地址转换为名称:
1 | sudo tcpdump -nnn |
写入100条数据包到文件而不打印到终端:
1 | sudo tcpdump -w dump.pcap -c 100 |
读取文件:
1 | tcpdump -r dump.pcap -nnn |
过滤显示指定主机的数据包:
1 | sudo tcpdump -nnn host 192.168.52.1 |
监视指定主机间的通信:
1 | sudo tcpdump -nnn host 192.168.52.15 and host \(192.168.52.1 or 192.168.52.17\) |
监视指定主机与指定主机之外的通信:
1 | sudo tcpdump -nnn host 192.168.52.15 and host \!192.168.52.1 |
监视指定协议的通信:
1 | sudo tcpdump -nnn tcp or udp -c 10 |
监视指定端口的通信:
1 | sudo tcpdump -nnn port 80 or port 443 |
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 lololowe的博客!
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果