目录:
man手册显示如下
1 tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ] 2 [ -c count ] 3 [ -C file_size ] [ -G rotate_seconds ] [ -F file ] 4 [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ] 5 [ --number ] [ -Q|-P in|out|inout ] 6 [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ] 7 [ -W filecount ] 8 [ -E spi@ipaddr algo:secret,... ] 9 [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] 10 [ --time-stamp-precision=tstamp_precision ] 11 [ --immediate-mode ] [ --version ] 12 [ expression ]
-A 以ASCII码打印报文(不包括链路层的头),方便分析网页-c 抓取多少数据包后退出-C 用于判断-w选项写入将报文写入的文件大小是否超过此值,如果超过就新建文件(文件名后缀1、2、3递增)-d 将匹配信息包的编译代码以人类易读的方式输出至stdout-dd 将匹配信息包的代码作为C语言程序段格式给出-ddd 将匹配信息包的代码以十进制格式给出-D 列出当前可用于抓包的网卡名称和对应编号。网卡名称和对应编号可用于-i选项-e 打印链路层的头部信息,如MAC地址-f 以数字形式打印外部ip地址-F 从文件中读取过滤表达式,忽略命令行上的其它表达式-G 每隔多少秒重新存储数据包至文件(-w选项指定的文件,需带时间),用法如tcpdump -i ens35 -G 3 -w packets_%H%M%S.pcap-i 抓取指定网卡的数据流。若不指定,则使用最小编号(-D)的网卡;any参数抓取所有网卡的数据流-K 不尝试计算IP、TCP、UDP校验和-l 使标准输出变为缓冲形式(小写L);tcpdump -l | tee dat或者tcpdump -l > dat & tail -f dat,实现边写入文件边标准输出-L 列出数据连接类型-n 显示ip而不是主机名-nn 显示端口号,而不是端口名-N 不列出全域名-# 打印数据包的行号-p 非混杂模式,不能与host或broadcast一起使用-q 快速输出,显示较少信息-Q|-P 选择抓取某个方向的数据包,参数可以是in、out、inout(默认)-r 从文件中读取数据包-S 使用绝对值,而非相对值,打印tcp序列号-s 抓到每一个数据包的截取字节数,默认68字节。参数0表示不截断,抓取完整数据包。-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议)-t 不打印时间戳-tt 打印时间戳秒数,自1970/0/0 00:00:00开始-ttt 打印当前行和上一行的时间差-tttt 打印标准时间戳格式,如2019-06-21 14:10:49.314665-ttttt 打印当前行和第一行的时间差-v 打印比较详细的信息-vv 打印更加详细的信息-vvv 打印非常详细的信息-w 将数据包写入文件中,同时能使用-r选项恢复打印-X 输出包的头部信息,以16进制和ASCII两种方式同时输出-XX 详细输出包的头部信息,以16进制和ASCII两种方式同时输出expression 过滤表达式,筛选输出的数据包
查询端口ens32的数据包
# tcpdump -i ens32 -w ens32.pcap
查询所有端口数据包,并写入文件
# tcpdump -i any -w any.pcap
边显示边写入文件
# tcpdump -i ens32 -l |tee ens32.pcap
抓取与132服务器交互的数据包
# tcpdump -i ens35 -q -n -nn net 192.168.237.132
抓取来自132的数据包(默认会抓取src or dst)
# tcpdump -i ens35 -q -n -nn src host 192.168.237.132 # tcpdump -i ens35 -q -n -nn src net 192.168.237.132
抓取与132服务器交互的数据包,但排除22端口
# tcpdump -i ens35 -q -n -nn net 192.168.237.132 and not port 22
抓取端口80上与132服务器交互的数据包
# tcpdump -i ens35 -q -n -nn -tttt net 192.168.237.132 and tcp port 80
抓取端口范围10-80上来自132的数据包,同时排除22端口
# tcpdump -i ens35 -q -n -nn src net 192.168.237.132 and tcp portrange 10-80 and not port 22
Tips:proto协议不能修饰host和net,只能修饰port或portrange
原文:https://www.cnblogs.com/MrReboot/p/11073075.html