使用 tcpdump 工具抓包

  • A+
所属分类:linux技术
摘要

  tcpdump 是一款 Linux 平台的网络数据包截获和分析工具,支持针对协议、主机、网口、端口等进行过滤。并且可以使用 and、or、not 等逻辑语句对过滤器进行组合,实现针对性截获。

  tcpdump 是一款 Linux 平台的网络数据包截获和分析工具,支持针对协议、主机、网口、端口等进行过滤。并且可以使用 and、or、not 等逻辑语句对过滤器进行组合,实现针对性截获。

1. 监听指定网口

  使用 -i 参数指定监听的网口,不支持多个。不指定默认监听第一个(所以通常来讲,这个参数都需要指定,因为不指定很可能抓不到,而不是抓到多余的数据)。

tcpdump -i ens192

  其中,ens192 是网口名称,可以使用 ifconfig 查看,如下:

    使用 tcpdump 工具抓包

 2. 监听指定主机

  使用 host 参数指定监听本机与指定的主机之间(双向)的通信包。不指定默认监听与所有主机的通信。

tcpdump -i ens192 host 172.16.160.215

  其中,172.16.160.215 是目标主机。这里我指定的是我本机,因为我使用 Xshell 连接了服务器,所以一直有 ssh 包数据。

    使用 tcpdump 工具抓包

  2.1. 监听指定源主机

    使用 src host 参数监听指定主机到本机(单向,入)的通信包

tcpdump -i ens192 src host 172.16.160.215

  2.2. 监听指定目标主机

    使用 dst host 参数监听本机到指定主机(单向,出)的通信包

tcpdump -i ens192 dst host www.baidu.com

    使用 wget www.baidu.com 访问一下百度首页,结果:

      使用 tcpdump 工具抓包

   不使用 src 或者 dst,单独使用 host,则表示监听双向通信包。

 3. 监听指定端口

  使用 port 参数指定监听的端口。不指定默认监听所有端口的数据。

tcpdump -i ens192 port 3306

  上述语句监听本机 ens192 网口与所有主机之间(双向)使用 3306 端口的通信包

  3.1. 监听指定源端口

tcpdump -i ens192 src port 3306

    上述语句监听所有经过本机 ens192 网口并且发出方端口为 3306 的通信包。

  3.2. 监听指定目标端口

tcpdump -i ens192 dst port 3306

    上述语句监听所有经过本机 ens192 网口并且接收方端口为 3306 的通信包。

4. 监听指定协议(TCP/UDP)

  只监听 TCP 通信包。不指定默认监听所有协议。

tcpdump -i ens192 tcp

  只监听 UDP 通信包

tcpdump -i ens192 udp

5. 组合条件(逻辑与或非)

  5.1. 使用 and (逻辑与)组合条件,只监听满足所有 and 条件的通信包

tcpdump -i ens192 src host www.baidu.com and dst 172.16.163.36

    上述语句监听所有从 www.baidu.com 到 172.16.163.36 的数据包(单向),针对  src host www.baidu.com and dst 172.16.163.36 ,当命令运行在 172.16.163.36 上时,效果等同于  src host www.baidu.com ,当命令运行在 www.baidu.com 上时,效果等同于 dst 172.16.163.36 。

tcpdump -i ens192 host www.baidu.com and 172.16.163.36

    上述语句监听所有 www.baidu.com 和 172.16.163.36 之间的通信包(双向),这种写法,如果两个 host 中不包含本机 host,则通常抓取不到数据。

  5.2. 使用 or(逻辑或)组合条件,监听满足任意一项 or 条件的通信包

tcpdump -i ens192 host www.baidu.com or 172.16.160.215

    上述语句监听与 www.baidu.com 和 172.16.160.215 任意主机的通信包,不论出入方向。

tcpdump -i ens192 src host www.baidu.com or 172.16.160.217

    上述语句监听来自 www.baidu.com 的通信包和与 172.16.160.217 来往的通信包。

  5.3. 使用 !(逻辑非)反选条件,监听不满足条件的通信包

6. 指定抓取数据包的长度

  使用 -s 0 抓取完整数据包

7. 指定抓取数据包个数

  使用 -c 100 指定抓取 100 个数据包后自动退出。

8. 抓取数据包到指定文件

  使用 -w 指定输出文件

tcpdump -i ens192 -w data.cap

  上述语句讲抓取的数据输出到当前目录下的 data.cap 文件(没有则创建文件)。