网络抓包工具 - tcpdump

简介: 【1月更文挑战第1天】

tcpdump 是一个网络抓包工具,用于捕获网络数据包并分析网络流量。它允许用户实时监视和分析经过系统网络接口的数据包,用于网络故障排除、协议分析和安全审计等场景。

tcpdump 依赖 libpcap 软件包。

与它功能类似的工具有 wireshark ,不同的是,wireshark 有图形化界面,而 tcpdump 则只有命令行。

注意:运行 tcpdump 命令,需要使用 sudo 来获取超级用户权限或直接使用 root 用户执行命令。

安装 Tcpdump

安装 Tcpdump

  1. 打开终端(命令行窗口)。
  2. 使用以下命令更新软件包列表:sudo apt update
  3. 安装 tcpdump: sudo apt install tcpdump
  4. 验证安装:tcpdump --version,如果有显示tcpdump的版本信息,证明它已经成功安装在你的系统上。

编译安装 Tcpdump

编译安装 tcpdump 可以在某些情况下提供更灵活的选项和更新的版本。以下是基本的步骤:

  1. 下载 tcpdump 源代码:

    wget https://www.tcpdump.org/release/tcpdump-<version>.tar.gz
    

    请用实际的版本号替换 <version>,你可以从 tcpdump 的官方网站 获取最新的版本号。

  1. 解压源代码:

    tar -zxvf tcpdump-<version>.tar.gz
    cd tcpdump-<version>
    
  1. 安装必要的构建工具:

    sudo apt-get install flex bison byacc libpcap-dev
    

    在其他发行版上使用适当的包管理器来安装这些工具。

  1. 配置并编译:

    ./configure
    make
    

    如果 configure 命令失败,可能需要安装一些缺失的依赖项。根据错误消息,使用包管理器安装缺少的库。

  1. 安装:

    sudo make install
    

    这会将编译好的二进制文件安装到系统中。

  1. 检查安装:

    tcpdump -v
    

    这应该显示 tcpdump 的版本信息,证明它已经成功安装。

请注意,编译安装软件可能会在系统上引入一些不同的依赖关系和配置。确保你的系统满足 tcpdump 的编译要求,并且在进行此操作之前备份系统或记录更改,以便在需要时进行还原。

常用选项

抓包选项:

-c <数据包数目> 指定要抓取的包数量
-i <网卡接口> 指定tcpdump需要监听的接口,默认会抓取第一个网络接口;
-n 对地址以数字方式显示,否则显示为主机名,也就是说-n选项不做主机名解析;
-nn除了-n的作用外,还把端口显示为数值,否则显示端口服务名;
-P指定要抓取的包是流入还是流出的包,可以给定的值为inoutinout,默认为inout
-s <数据包长度> 设置tcpdump的数据包抓取长度为len,如果不设置默认为65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断。

输出选项:

-e 输出的每行中都将包括数据链路层头部信息,例如源MAC和目标MAC。
-q 快速打印输出。即打印很少的协议相关信息,从而输出行都比较简短。
-X 输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX 输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v 当分析和打印的时候,产生详细的输出。
-vv 产生比-v更详细的输出。
-vvv 产生比-vv更详细的输出

其它功能选项:

-D 列出可用于抓包的接口,将会列出接口的数值编号和接口名,它们都可以用于-i后。
-F 从文件中读取抓包的表达式,若使用该选项,则命令行中给定的其它表达式都将失效。
-w 将抓包数据输出到文件中而不是标准输出,这里可以同时配合-G time选项使得输出文件每time秒就自动切换到另一个文件。可通过-r选项载入这些文件以进行分析和打印。
-r 从给定的数据包文件中读取数据。使用-表示从标准输入中读取。

过滤规则

IP地址过滤

tcpdump host 192.168.88.210 过滤IP地址

tcpdump src host 192.168.88.210 过滤源IP地址

tcpdump dst host 192.168.88.210 过滤目的IP地址

网段过滤

tcpdump net 192.168.88.0/24 根据网段进行过滤

tcpdump src net 192.168.88 根据源网段进行过滤

tcpdump dst net 192.168.88 根据目的网段进行过滤

端口过滤

tcpdump port 80 过滤特定端口

tcpdump src port 80 过滤源端口

tcpdump dst port 80 过滤目的端口

tcpdump portrange 8000-8080 过滤一个端口范围

协议过滤

tcpdump icmp 过滤icmp协议

tcpdump tcp 过滤tcp协议

tcpdump udp 过滤udp协议

tcpdump arp 过滤arp协议

tcpdump rarp 过滤rarp协议

tcpdump dns 过滤dns协议

tcpdump http 过滤http协议

tcpdump ether 过滤以太网协议

tcpdump wlan 过滤无线局域网协议

使用案例

以下是一些 tcpdump 的常见用法示例:

  1. 捕获所有网络流量:

    sudo tcpdump -i <interface>
    
    例:
    tcpdump -i eth0
    

    用你的网络接口替换 <interface>,例如 eth0wlan0

  1. 指定抓包数量:

    sudo tcpdump -i <interface> -c <count>
    
    例:抓取100个包后停止
    sudo tcpdump -i eth0 -c 100
    

    这将捕获指定数量的数据包后停止。

  1. 保存捕获的数据包到文件:

    sudo tcpdump -i <interface> -w <filename>
    
    例:将抓取到的数据包保存到 /root/ 目录下的 testfile.pacp 文件里
    sudo tcpdump -i eth0 -w /root/testfile.pacp
    

    这将把捕获的数据包保存到指定的文件中。

  1. 显示捕获的数据包的十六进制和ASCII格式:

    sudo tcpdump -X -i <interface>
    
    例:
    sudo tcpdump -X -i eth0
    
  1. 过滤特定主机的流量:

    sudo tcpdump -i <interface> host <hostname>
    
    例:
    sudo tcpdump -i eth0 host 192.168.88.210
    

    替换 <hostname> 为你想要过滤的主机名。

  1. 过滤特定端口的流量:

    sudo tcpdump -i <interface> port <port>
    
    例:抓取端口号为 8088 的数据包 
    sudo tcpdump -i eth0 port 8088
    

    替换 <port> 为你想要过滤的端口号。

  1. 过滤源或目标IP地址:

    sudo tcpdump -i <interface> src <source_ip>
    
    例: 抓取源IP地址为 192.168.88.210 的数据包
    sudo tcpdump -i eth0 src 192.168.88.210
    

    sudo tcpdump -i <interface> dst <destination_ip>
    
    例:抓取目标IP地址为 192.168.88.210 的数据包
    sudo tcpdump -i eth0 dst 192.168.88.210
    

    替换 <source_ip><destination_ip> 为相应的IP地址。

  1. 过滤特定协议:

    sudo tcpdump -i <interface> icmp
    
    例:只抓取ICMP协议的数据包
    sudo tcpdump -i eth0 icmp
    

    sudo tcpdump -i <interface> tcp
    
    例:只抓取TCP协议的数据包
    sudo tcpdump -i eth0 tcp
    

    替换 icmptcp 为你想要过滤的协议。还支持 httparprarpdnsudp等协议。

  1. 过滤特定网络范围的流量:

    sudo tcpdump -i <interface> net <network>
    
    例:只抓取网段 192.168.88.0/24 的数据包
    sudo tcpdump -i eth0 net 192.168.88.0/24
    

    替换 <network> 为你想要过滤的网络地址。

  1. 显示捕获的数据包的详细信息:

    sudo tcpdump -tttt -i <interface>
    
    例:
    sudo tcpdump -tttt -i eth0
    

    这将显示每个数据包的详细时间戳。

  2. 从 testfile.pacp 记录中读取tcp协议的数据包

    sudo tcpdump -i <interface> <protocol> <option> -r <file.pacp>
    
    例:
    sudo tcpdump -i eth0 tcp -vnn -r /root/testfile.pacp
    
    输出内容结构:
    21:26:49.013621 IP 192.168.88.1.15605 > 192.168.88.2.5920: Flags [P.], seq 49:97, ack 106048, win 4723, length 48
    

    从上面的输出来看,可以总结出:

    1. 第一列:时分秒毫秒 21:26:49.013621
    2. 第二列:网络协议 IP
    3. 第三列:发送方的ip地址+端口号,其中 192.168.88.1 是 ip,而15605 是端口号
    4. 第四列:箭头 >, 表示数据流向
    5. 第五列:接收方的ip地址+端口号,其中 192.168.88.2 是 ip,而5920 是端口号
    6. 第六列:冒号
    7. 第七列:数据包内容,包括Flags 标识符,seq 号,ack 号,win 窗口,数据长度 length,其中 [P.] 表示 PUSH 标志位为 1,更多标识符见下面
  3. 使用逻辑关系过滤数据包

    与 and &&
    或 or ||
    非 not !
    
    例:抓取源IP地址为 192.168.88.210 且 目的端口号是22的数据包(与)
    sudo tcpdump -i eth0 src host 192.168.88.210 and dst port 22
    
    例:抓取源IP地址为 192.168.88.210 或 目的端口号是22的数据包(或)
    sudo tcpdump -i eth0 src host 192.168.88.210 or port 22
    
    例:抓取源IP地址为 192.168.88.210 端口号不是22的数据包(非)
    sudo tcpdump -i eth0 src host 192.168.88.210 not port 22
    

这些只是一些 tcpdump 的基本用法示例。根据你的需求,你可以通过组合不同的过滤选项和标志来执行更复杂的分析。请记住,使用 tcpdump 需要具有足够的权限,通常需要使用 sudo权限或管理员账号 root

目录
相关文章
|
2月前
|
安全 网络协议 算法
Nmap网络扫描工具详细使用教程
Nmap 是一款强大的网络发现与安全审计工具,具备主机发现、端口扫描、服务识别、操作系统检测及脚本扩展等功能。它支持多种扫描技术,如 SYN 扫描、ARP 扫描和全端口扫描,并可通过内置脚本(NSE)进行漏洞检测与服务深度枚举。Nmap 还提供防火墙规避与流量伪装能力,适用于网络管理、渗透测试和安全研究。
468 1
|
3月前
|
Web App开发 API 虚拟化
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
308 15
Cisco Modeling Labs (CML) 2.9.0 - 网络仿真工具
|
4月前
|
监控 安全 网络安全
网络安全工具及其使用方法:保护数字安全的第一道防线
在信息时代,网络攻击变得日益复杂且频繁,保护个人和企业数据安全的重要性日益凸显。幸运的是,各种网络安全工具为用户提供了有效的防护手段。从防火墙到密码管理器,这些工具覆盖了威胁检测、攻击防御和数据保护的方方面面。本文将介绍几款常用的网络安全工具,并提供其使用方法,以帮助您构建强大的网络安全防线。
197 1
|
4月前
|
监控 数据可视化 Java
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
111 0
VMware Aria Operations for Networks 6.14 - 网络和应用监控工具
|
5月前
|
运维 监控 Linux
网络延迟监测工具选择(第一篇)
**WGCLOUD**是一款开源免费的跨平台运维监控工具,支持Windows、Linux、MacOS等系统,具备网络延迟监测功能。其内置的**PING监测**模块可实时ping目标IP,图形化展示延迟趋势,并在目标IP不可达时发送告警通知。支持分组管理,操作简单便捷,适合运维人员高效监控网络状态。
|
10月前
|
数据采集 人工智能 自然语言处理
FireCrawl:开源 AI 网络爬虫工具,自动爬取网站及子页面内容,预处理为结构化数据
FireCrawl 是一款开源的 AI 网络爬虫工具,专为处理动态网页内容、自动爬取网站及子页面而设计,支持多种数据提取和输出格式。
3696 71
FireCrawl:开源 AI 网络爬虫工具,自动爬取网站及子页面内容,预处理为结构化数据
|
7月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
241 7
|
10月前
|
Linux 网络性能优化 网络安全
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
1789 28
|
10月前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
456 11
|
10月前
|
网络协议 安全 测试技术
Nping工具详解:网络工程师的瑞士军刀
### Nping工具详解:网络工程师的瑞士军刀 Nping是Nmap项目的一部分,支持TCP、UDP、ICMP和ARP等多种协议,用于生成和分析网络数据包。它提供灵活的命令行界面,适用于网络探测、安全测试和故障排除。本文介绍Nping的基础与高级用法,包括发送不同类型的网络请求、自定义TCP标志位、路由跟踪等,并通过实战案例展示其应用。掌握Nping有助于更好地理解和管理网络环境。 (239字符)
807 9