首页 > 系统相关 >Linux系统应用与设置(4):Linux抓包工具tcpdump

Linux系统应用与设置(4):Linux抓包工具tcpdump

时间:2024-07-04 16:59:23浏览次数:8  
标签:输出 tcpdump 捕获 tcp pcap Linux 数据包 抓包

1. 简述

        tcpdump 是一款广泛使用的命令行网络分析工具,它能够捕获和分析网络上的数据包。这个强大的工具对于网络故障排查、安全监控和网络流量分析非常有用。

        值得注意的是,通过tcpdump抓取的数据还可以通过保存为*.pcap文件,然后使用wireshark进行更深层次的可视化分析。

2. 基本语法

tcpdump 的基本语法如下:

tcpdump [options] ... [expression]

其中,

options:用于指定如何捕获和显示数据包的各种参数。

expression:用于过滤捕获的数据包。

3. 常用选项

        -i <interface>:指定网络接口,如 eth0。

        -nn:不要解析网络名称(例如,不要将IP地址转换为主机名)。

        -X 或 -XX:显示十六进制和 ASCII 编码的数据。如下所示,除第一行以外,数据域用HEX形式进行打印输出,同时也伴有ASCII输出。

        -A:将接收到的数据以ASCII码的形式打印出来,如下所示,除第一行外,数据域都是ASCII码。

        -w <file>:将捕获的数据包写入文件,用于后续分析。

        -r <file>:从文件中读取数据包。

        -c <count>:捕获指定数量的数据包后停止。

        除以上常用的选项以外,还有如下,可灵活使用。

        -C:在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。

        -d:将匹配信息包的代码以人们能够理解的汇编格式给出。

        -dd:将匹配信息包的代码以c语言程序段的格式给出。

        -ddd:将匹配信息包的代码以十进制的形式给出。

        -D:打印出系统中所有可以用tcpdump截包的网络接口。

        -e:在输出行打印出数据链路层的头部信息。

        -E:用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。

        -f:将外部的Internet地址以数字的形式打印出来。

        -F:从指定的文件中读取表达式,忽略命令行中给出的表达式。

        -l:使标准输出变为缓冲行形式,可以把数据导出到文件。

        -L:列出网络接口的已知数据链路。

        -m:从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。

        -M:如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。

        -b:在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。

        -n:不把网络地址转换成名字。

        -N:不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。

        -t:在输出的每一行不打印时间戳。

        -O:不运行分组分组匹配(packet-matching)代码优化程序。

        -P:不将网络接口设置成混杂模式。

        -q:快速输出。只输出较少的协议信息。

        -S:将tcp的序列号以绝对值形式输出,而不是相对值。

        -s:从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。

        -T:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。

        -t:不在每一行中输出时间戳。

        -tt:在每一行中输出非格式化的时间戳。

        -ttt:输出本行和前面一行之间的时间差。

        -tttt:在每一行中输出由date处理的默认格式的时间戳。

        -u:输出未解码的NFS句柄。

        -v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。

        -vv:输出详细的报文信息。

4. 过滤表达式

        host <hostname>:只捕获与指定主机名或IP地址相关的数据包。

        port <port>:只捕获特定端口的数据包。

        src <address>:只捕获源地址为指定地址的数据包。

        dst <address>:只捕获目的地址为指定地址的数据包。

        and、or、not:逻辑运算符,用于组合多个过滤条件。

5. 示例

(1)捕获所有经过eth0接口的TCP数据包:

        tcpdump -i eth0 tcp

(2)捕获指定接口的所有数据包,并写入文件:

        tcpdump -i eth0 -w capture.pcap

(3)从文件中读取数据包:

        tcpdump -r capture.pcap

(4)只捕获源地址为192.168.1.100的数据包:

        tcpdump src 192.168.1.100

(5)只捕获目的端口为80的数据包:

        tcpdump 'dst port 80'

(6)同时根据源地址和目的端口过滤数据包:

        tcpdump 'src 192.168.1.100 and dst port 80'

(7)实时显示数据包的十六进制和ASCII编码:

        tcpdump -X -nn -i eth0

(8)捕获特定数量的数据包:

        tcpdump -c 100 -i eth0

(9)使用复杂过滤表达式:

        tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst 192.168.1.0/24'

6. 高级用法

        使用 tcpdump 进行实时监控:

tcpdump -i any 'tcp port 22' -l -n -vvv -s 0 -w ssh_traffic.pcap

        这个命令实时捕获所有进入22端口的TCP数据包,不解析主机名,不限制源和目的端口,不使用任何捕获长度限制,并将结果写入 ssh_traffic.pcap 文件。

        分析 tcpdump 捕获的数据包: 使用 -nnX 选项可以显示更详细的信息,包括每个数据包的十六进制和ASCII编码,这对于深入分析数据包内容非常有用。

7. 使用wireshark分析

(1)写入本地

        使用tcpdump进行抓包时,通过“-w”选项,将抓到的数据包写入本地,参考如下。

tcpdump -i eth0 -w capture.pcap

(2)wireshark导入

        在 Wireshark 中,选择 "File"(文件)> "Open"(打开),然后浏览到你保存 tcpdump 捕获数据的 .pcap 文件。选择文件并点击 "Open"(打开)。

(3)过滤分析

        通过wireshark的过滤功能,协议分析功能以及图像化显示功能,分析当前数据包,并可将分析结果写入本地。

8. 注意事项

(1)使用 tcpdump 可能需要管理员权限,尤其是在捕获经过网络接口的数据包时。

(2)过滤表达式需要仔细设计,以确保只捕获所需的数据包。

(3)分析 tcpdump 的输出需要一定的网络协议知识。

(4)tcpdump 是网络管理员和安全专家的重要工具,通过掌握其使用,可以更有效地监控和分析网络流

标签:输出,tcpdump,捕获,tcp,pcap,Linux,数据包,抓包
From: https://blog.csdn.net/tecsai/article/details/140183747

相关文章

  • Python Linux源码安装
    保留服务器原Python安装版本,安装指定需求版本Python1.查看当前系统版本[root@iZbp1ac4pv22mg092qi2zfZ~]#cat/etc/system-releaseCentOSLinuxrelease7.9.2009(Core)2.查看已安装Python路径及版本[root@iZbp1ac4pv22mg092qi2zfZ~]#whichpython/usr/bin/python[ro......
  • Linux下使用arping检测IP地址是否冲突
    arping简介在Linux中,arping是一个用来发送ARP请求到一个相邻主机的工具,通常用于检测网络上的IP地址冲突。使用arping检测IP地址是否冲突的方法例1:使用如下命令检测10.206.216.95是否冲突(使用-I参数指定网络接口)#arping-Ieth010.206.216.95ARPING10.206.216.95......
  • linux进程被杀掉日志,Linux进程突然被杀掉(OOM killer),查看系统日志
    Linux进程被杀掉(OOMkiller),查看系统日志基本概念:Linux内核有个机制叫OOMkiller(OutOfMemorykiller),该机制会监控那些占用内存过大,尤其是瞬间占用内存很快的进程,然后防止内存耗尽而自动把该进程杀掉。内核检测到系统内存不足、挑选并杀掉某个进程的过程可以参考内核源代码......
  • 拼多多面试 Linux下一个应用程序开始执行到main被调用之间经历了什么?
    在Linux系统中,一个应用程序从开始执行到main函数被调用之间经历了多个复杂的步骤。以下是一个详细的流程概述:1.加载器(Loader)当用户在终端或脚本中启动一个程序时,shell调用系统调用execve。这个系统调用将负责启动程序的执行。2.内核态操作内核处理execve系统调用并执行以下......
  • 华为设备ensp做STP配置及抓包分析
    一、网络拓扑二、各个设备的配置PC1:PC配置:PC3配置:PC4配置:LSW1与LSW2、LSW3、LSW4配置一样如下:#sysnameLSW1#undoinfo-centerenable#vlanbatch10203040#stpregion-configuration instance1vlan1020  instance2vlan3040  activere......
  • 在Linux中,想在命令行下访问某个网站,并且该网站域名还没有解析,如何做?
    在Linux命令行下访问某个网站,但遇到该网站域名还没有解析的情况,确实会带来一些挑战。因为域名解析是互联网访问的基本前提,它负责将人类可读的域名转换为计算机可理解的IP地址。如果域名没有解析,那么直接通过域名访问网站是不可能的。不过,可以尝试以下几种方法来间接处理或绕过这个......
  • 在Linux中,rsync同步数据时,如果目标⽂件比源⽂件还新,则忽略该文件,如何做?
    在使用rsync命令进行数据同步时,如果你希望在目标文件比源文件更新的情况下忽略同步该文件,可以使用-u选项。-u选项代表--update,它告诉rsync仅同步那些源比目标更新的文件。基本的rsync命令格式如下:rsync[options]sourcedestination其中,source是源文件或目录的路径,destinatio......
  • 在Linux中,可以使用哪个命令查看系统的历史负载?
    在Linux中,你可以使用top命令或uptime命令来查看系统的历史负载。top命令:top命令是一个实时的系统监控工具,它可以显示系统进程的动态实时视图,包括CPU和内存的使用情况。要查看历史负载,你可以在top命令中按Shift+H(在某些版本中可能是H)来切换显示模式,显示所有CPU的平均负载,而不......
  • 在Linux中,自定义解析域名的时候,可以编辑哪个⽂件?是否可以⼀个ip对应多个域名?是否⼀个
    在Linux系统中,如果你想要自定义域名解析,通常有以下几种方法:编辑/etc/hosts文件:hosts文件是一个本地DNS解析文件,它允许你将域名映射到IP地址。你可以编辑这个文件来自定义域名解析。例如:192.168.1.10example.comwww.example.com在这个例子中,192.168.1.10是IP地址,exampl......
  • 在Linux中,如何指定dns服务器,来解析某个域名?
    在Linux中,指定DNS服务器来解析某个域名主要涉及编辑DNS配置文件或使用命令行工具进行临时配置。以下是详细的步骤和说明:一、编辑DNS配置文件(永久生效)Linux系统中,DNS解析的配置通常位于/etc/resolv.conf文件中。你可以通过编辑这个文件来指定DNS服务器。步骤:打开/etc/resolv.......