文章目录
tcpdump是一款常用的网络抓包工具,利用tcpdump工具我们可以根据一些条件过滤,只抓取我们关注的数据包信息。
基本语法
tcpdump [option] [proto] [dir] [type] [not|or|and] ...
- option : 可选参数
[-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
[ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
[ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
[ -Q|-P in|out|inout ]
[ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
[ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
[ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
[ -Z user ] [ expression ]
- proto : 根据协议进行过滤
[tcp] [udp] [icmp]
[ip] [ip6]
[arp] [rarp]
[ether] [wlan]
[fddi] [tr] [decnet]
- dir : 根据数据流向进行过滤
[src] [dst] [src or dst] [src and dst]
- type : 根据指定网段或者端口进行过滤
[host] [net] [port] [portrange]
tcpdum常用参数函数
1、常用抓包参数
- -B size : 设置系统捕获缓冲区大小
- -c count : 指定抓包数量
- -i interface : 指定抓包监听端口,默认会抓取第一个网络接口,如果要查看所有网卡,可以 -i any
- -n:输出结果源/目标地址以IP的形式进行展示,否则会自动解析为为主机名,也就是说-n选项不做主机名解析
- -nn:在-n的基础上,将源/目标端端口信息以数值的形式进行展示,否则会自动展示为端口对应服务名称
- -v/-vv/-vvv : 输出结果打印更加详细的内容
- -w file : 将结果输出到.pcap文件中,可以在其他平台上用wireshark打开
- -r file :读取指定.pcap文件
- -C file_size : 指定-w输出文件的文件大小限制
- -x:以16进制的形式打印每个包的头部数据(但不包括数据链路层的头部)
- -xx:以16进制的形式打印每个包的头部数据(包括数据链路层的头部)
- -X:以16进制和 ASCII码形式打印出每个包的数据(但不包括连接层的头部),这在分析一些新协议的数据包很方便。
- -XX:以16进制和 ASCII码形式打印出每个包的数据(包括连接层的头部),这在分析一些新协议的数据包很方便。
- -Q: 选择是入方向还是出方向的数据包,可选项有:in, out, inout,也可以使用 --direction=[direction] 这种写法
2、指定协议进行抓包
- icmp : 基于icmp协议进行抓包
- tcp : 基于tcp协议进行抓包
-- 指定抓取满足icmp协议的信息
# tcpdump icmp
-- 指定抓取满足tcp协议的信息
# tcpdump tcp
-- 指定抓取满足icmp/tcp协议的信息
# tcpdump 'ip6 && tcp'
3、指定数据流向进行过滤
- src : 指定源端某些信息进行过滤抓包
- dst : 指定目标端某些信息进行过滤抓包
-- 指定源端IP进行抓取
# tcpdump src host 172.16.104.12
4、指定网段或者端口进行过滤
- host : 指定源/目标端监听IP进行抓包
- net : 指定一个网段进行监听抓包
- port : 指定监听某个端口进行抓包
- portrnge : 指定一个端口范围进行监听抓包
-- 指定网卡下来源与某个IP进行抓包
# tcpdump -i eth0 src host 172.16.104.12
-- 指定网卡下来源于某个网段进行抓包
# tcpdump -i eth0 src net 172.16.104.0/24
-- 指定远端某端口进行抓包
# tcpdump src port 3306
# tcpdump src port 3306 or port3307
-- 指定某个网卡下来源于一个端口范围进行抓包
# tcpdump src portrange 8000-8080
5、and/or/not的使用
-- 指定目标端IP到远端指定端口的抓包
# tcpdump 'dst 172.16.104.12 and (src port 3306 or 3307)'
输出详解
[第一列] [第二列] [第三列] [第四列] [第五列] [第六列]
16:57:41.427749 IP sdw1.14056 > mdw.mysql: Flags [P.], seq 290:304, ack 368, win 229, options [nop,nop,TS val 2253336802 ecr 2253337965], length 14
16:57:41.468008 IP sdw1.14056 > mdw.mysql: Flags [.], ack 409, win 229, options [nop,nop,TS val 2253336843 ecr 2253337966], length 0
16:57:44.745094 IP sdw1.websm > mdw.44024: Flags [R.], seq 0, ack 1785729074, win 0, length 0
16:57:45.084778 IP sdw1.14056 > mdw.mysql: Flags [P.], seq 304:323, ack 409, win 229, options [nop,nop,TS val 2253340459 ecr 2253337966], length 19
16:57:45.087807 IP sdw1.14056 > mdw.mysql: Flags [.], ack 610, win 237, options [nop,nop,TS val 2253340462 ecr 2253341625], length 0
16:57:46.918877 IP sdw1.14056 > mdw.mysql: Flags [P.], seq 323:345, ack 610, win 237, options [nop,nop,TS val 2253342293 ecr 2253341625], length 22
16:57:46.919665 IP sdw1.14056 > mdw.mysql: Flags [.], ack 674, win 237, options [nop,nop,TS val 2253342294 ecr 2253343457], length 0
- 第一列:时间
- 第二列:网络协议IP
- 第三列: 源 端 服 务 器 I P . {源端服务器IP}. 源端服务器IP.{端口}
- 第四列:> 表示网络流向
- 第五列: 目 标 端 服 务 器 I P . {目标端服务器IP}. 目标端服务器IP.{端口}
- 第六列:抓包内容
关于抓包内容
- Flags :
- [S] : SYN(开始连接)
- [P] : PSH(推送数据)
- [F] : FIN (结束连接)
- [R] : RST(重置连接)
- [.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG)
- seq/ack ${num} : seq/ack 号
- win ${num} : windows窗口大小
- length ${num} : 数据长度
文章参考:https://www.cnblogs.com/wongbingming/archive/2020/06/30/13212306.html