一 tcpdump基本使用
1.1 命令格式
tcpdump [ 选项 ] [ -c 数量 ] [ -i 网络接口 ] [ -w 文件名 ] [ 表达式 ]
1.2 常用选项
-l:使标准输出变为缓冲行形式;
-c:抓包次数,收到-c指定的包数量后退出;
-C:指定输出文件的大小,单位是Mb, 当前文件大小超过后-C指定数后,会另写一个文件,和-W配套使用;
-nn:直接以 IP 及 Port Number 显示,而非主机名与服务名称;
-s :<数据包大小> 设置每个数据包的大小,单位字节;
-i:指定监听的网络接口;
-r:从指定的文件中读取包;
-w:输出信息保存到指定文件;
-W:指定输出文件的数量,和-C配套使用,-C指定单个文件大小;
-a:将网络地址和广播地址转变成名字;
-d:将匹配信息包的代码以人们能够理解的汇编格式给出;
-e:在输出行打印出数据链路层的头部信息;
-f:将外部的Internet地址以数字的形式打印出来;
-t:在输出的每一行不打印时间戳;
-v:输出稍微详细的报文信息;
-q: 快速输出,仅列出少数的传输协议信息,精简输出
1.3 表达式(用于过滤报文)
1. port 80 :指明监听80端口数据包
2. src 192.1.1.2: 指明监听src是192.1.1.2的数据包
3. dst 192.1.1.2: 指明监听dst是192.1.1.2的数据包
4. 协议关键字:ip,arp,tcp,udp等,指明监听具体协议的数据包
5. 逻辑运算:and/or/not
1.4 常用命令组合
- 1 捕获端口80的数据包,并保存到tcpdump_80
tcpdump port 80 -w tcpdump_80
- 2 捕获eth0网卡,端口是80并且只有源是9.123.123.5的进的tcp数据包
tcpdump -i eth0 tcp and port 80 and src 9.123.123.5 -w tcpdupm_80
- 3 捕获eth0网卡,端口是80的所有的tcp数据包
tcpdump -i eth0 tcp and port 80 -w tcpdupm_80
- 4 捕获所有网卡,端口是80的并且不转回hostname 而是也ip和端口输出详细的数据包
tcpdump -i any tcp and port 80 -n -nn -v -vv -c 1000 -w tcpdump_80
-n -nn : 不转换ip和port
-v -vv : 尽量以详细一点输出
-c : 捕获1000个收到的数据包,达到数量后停止捕获
- 5 捕获所有网卡,端口是80的并且不转回hostname 而是也ip和端口输出详细的数据包
mkdir -p /data/dumpfile/dumpfile_all && chmod -R 777 /data/dumpfile/dumpfile_all && cd /data/dumpfile/dumpfile_all
tcpdump -i any tcp and port 80 -n -nn -v -vv -C 30 -W 100 -s 80 -w tcpdump_80
-n -nn:不转换ip和port
-v -vv : 尽量以详细一点输出
-C 30: 每个文件30M
-W 100: 收集100个文件,100个文件写满后会循环覆盖第一个文件
-s 80: 每个数据包80byte