tcpdump的简单使用

发布时间 2023-05-21 11:37:07作者: Junglezt

Tcpdump 是一个常用的网络数据包抓取工具,可以在 Linux/Unix 和其他类 Unix 操作系统中使用。它可以嗅探网络接口上的数据包,并将它们写入文件或输出到屏幕上。以下是 tcpdump 的基本使用教程:

  1. 命令格式:

    tcpdump [选项] [表达式]
    
  2. 常用选项:

    • -i:指定抓取数据包的网络接口。
    • -n:以数字形式显示 IP 地址。
    • -s:设置抓取数据包的最大长度(单位为字节)。
    • -w:将抓取的数据包写入文件。
    • -r:读取一个保存的数据包文件。
  3. 表达式:

    表达式是指定需要抓取的数据包的条件。以下是一些常用的表达式:

    host:指定抓取某个主机发送或接收的所有数据包。

    port:指定抓取某个端口发送或接收的所有数据包。

    tcp:指定抓取 TCP 数据包。

    udp:指定抓取 UDP 数据包。

    icmp:指定抓取 ICMP 数据包。

    and: 使用 and 语句

    or: 使用 or 语句

    not: 使用 not 语句

    len: 指定现实数据包的长度

    src/dst: 指定源地址目标地址

    例如,以下命令将从 eth0 接口抓取所有来自主机 192.168.1.100TCP 数据包并将它们输出到屏幕上:

    tcpdump -i eth0 host 192.168.1.100 and tcp
    

    常见的表达式:

    src host 192.168.1.100
    # 发起连接的地址为 192.168.1.100 的数据包
    
    tcp port 80 or udp port 53
    # TCP 端口为80和 UDP 端口为53的数据包
    
  4. 示例:

    a. 抓取数据包并输出到屏幕上:

    tcpdump
    

    b. 抓取 eth0 接口上所有主机的 ICMP 数据包:

    tcpdump -i eth0 icmp
    

    c. 抓取来自 192.168.1.100 的所有 TCP 数据包并将它们写入文件:

    tcpdump -i eth0 host 192.168.1.100 and tcp -w packets.txt
    

    d. 读取已保存的数据包文件并输出到屏幕上:

    tcpdump -r packets.txt