tcpdump使用介绍

本文详细介绍了tcpdump的基本语法和常用参数,包括如何根据协议、数据流向和端口进行抓包过滤。同时,展示了tcpdump输出的各个字段含义,如时间、网络协议、源/目标IP、端口和抓包内容中的Flags等信息。
摘要由CSDN通过智能技术生成

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值