tcpdump 命令抓包指南

命令安装

1
yum -y install tcpdump

示例命令

1
2
tcpdump tcp -i ens32 -t -s0 -c 100 and dst port ! 22 and src net 192.168.30.0/24 -w ./a1.cap
tcpdump -i ens32 -nn -X -vv tcp port 21 and ip host 来源 ip.
选项说明
tcpip、icmp、arp、rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。
-i ens33只抓经过接口ens33的包,any 代表所有网卡。
-t不显示时间戳
-s0抓取数据包时默认抓取长度为68字节。加上"-s0"后可以抓到完整的数据包。
-c 100只抓取100个数据包。
dst port ! 22不抓取目标端口是22的数据包。
src net 192.168.1.0/24数据包的源网络地址为192.168.1.0/24。Net:网段,host:主机。
-w ./a1.cap保存成cap文件,方便用wireshark分析。
-X输出包的头部数据,会以 16 进制和 ASCII 两种方式同时输出
-vv产生更详细的输出
-n对地址以数字方式显式,否则显式为主机名
-nn除了-n 的作用外,还把端口显示为数值,否则显示端口服务名

常见的tcpdump过滤语句介绍

可以通过命令 man pcap-filter 来参考过滤表达式的帮助文档

  • 抓取所有网卡的包
1
tcpdump -i any
  • 抓取ens33网卡所有的包,排除22端口
1
tcpdump -i ens33 tcp -nn 'port !22'
  • 抓取ens33网卡所有的包,排除22端口和80端口,只显示IP相关协议
1
tcpdump -i ens33 tcp -nn 'port ! 22 and ! 80 and ip'
  • 目标机器的ping
1
tcpdump -i any icmp and dst 10.10.10.14
  • 过滤源地址和目的地址
1
2
3
# 如果不写默认是 'dst or src'
tcpdump -i ens33 src 10.10.10.11 # 源地址
tcpdump -i ens33 dst 10.10.10.14 # 目标地址
  • 只想查目标机器端口是21或80的网络包
1
tcpdump -i ens33 -c 10 'dst port 21 or dst port 80'
  • 想要截获主机10.10.10.11 和主机10.10.10.1410.10.10.13的通信
1
tcpdump -i ens33 -c 3 'host 10.10.10.11 and (10.10.10.14 or 10.10.10.13)'
  • 想获取使用ftp端口和ftp数据端口的网络包
1
tcpdump -i ens33 'port ftp or ftp-data'
  • 获取主机10.10.10.11除了和主机10.10.10.14之外所有主机通信的ip包
1
tcpdump -i ens33  ip 'host 10.10.10.11 and ! 10.10.10.14'
  • 10.10.10.1480、110、25端口以外的其他端口的包
1
tcpdump -i ens33 'host 10.10.10.14 and ! port 80 and ! port 25 and ! port 110'

其中Flags 标识符有以下几种

[S] : SYN(开始连接)
[P] : PSH(推送数据)
[F] : FIN (结束连接)
[R] : RST(重置连接)
[.] : 没有 Flag,由于除了 SYN 包外所有的数据包都有ACK,所以一般这个标志也可表示 ACK

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2018-2024 Outsrkem
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信