🗺️博客地图
一、tcpdump抓取网络数据包
(一)tcpdump简介
tcpdump是一个在linux环境下常用的抓包工具,它能够捕获并打印网络接口上的数据包,支持多种过滤条件以帮助用户快速定位网络问题。使用tcpdump时,可以通过指定接口、设置过滤条件等来捕获所需的数据包。
(二)tcpdump参数说明
-i [interface] 指定入站网卡
-w [filename] 将包数据输出至文件(二进制文件,只能用-r选项阅读),使用wareshark软件也可
-r [filename] 阅读-w选项输出的包文件
-n 表示不解析域名,直接显示ip
-nn 不解析域名和端口
-X 同时用 hex 和 ascii 显示报文的内容
-XX 同 -X,但同时显示以太网头部
-S 显示绝对的序列号(sequence number),而不是相对编号
-v, -vv, -vvv 显示更多的详细信息,比如显示IP数据报中的生存周期和服务类型
-c [number] 截取 number 个报文,然后结束
-q 简要的输出,仅显示时间、源Ip、目标ip、协议、端口、包大小
-A 只使用 ascii 打印报文的全部数据,不要和 -X 一起使用,截取 http 请求的时候可以用 sudo tcpdump -nSA port 80!
icmp 只捕获 ICMP 数据包,icmp:Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
dst host [hostname] 指定目标主机
src host [hostname] 指定来源主机,ip和域名均可
dst net [network] 指定目标网段/24或ip
src net [network] 指定来源网段/24或ip,比如:tcpdump net 192.168.10.0/24
port [port] 指定端口,不管是目标端口还是来源
tcp port [port] 指定tcp端口,不管是目标端口还是来源
udp port [port] 指定tcp端口,不管是目标端口还是来源 dst port [port] #指定目标端口 src port [port] 指定来源端口
portrange 21-23 查找任意范围的端口
# 对于一些常见协议的默认端口,我们还可以直接使用协议名,而不用具体的端口号
比如 http == 80,https == 443 等可以采用以下命令:
tcpdump tcp port http
ether host [mac地址] 指定MAC地址
# 筛选数据包长度:
less [length] 筛选大于length的数据包
greater [length] 筛选大于length的数据包
# 也可以使用比较符号:>,=
tcpdump > 32
tcpdump <= 128
(三)tcpdump使用
1、抓取指定网卡网络数据包
tcpdump -i 网卡名 -w 抓包路径及导出文件名
例:
tcpdump -i ens33 -w /home/test.pacp
2、抓取指定网卡指定IP地址网络数据包
tcpdump -i 网卡名 -w 抓包路径及导出文件名 -nnv IP1
例:
tcpdump -i ens33 -w /home/test.pacp -nnv host 192.168.1.13
3、抓取指定网卡指定IP地址带vlan标签的网络数据包
tcpdump -i 网卡名 -w 抓包路