Linux下抓包工具tcpdump应用详解
在Linux中使用tcpdump命令捕获与分析数据包详解
在Linux中使⽤tcpdump命令捕获与分析数据包详解前⾔tcpdump 是⼀个有名的命令⾏数据包分析⼯具。
我们可以使⽤ tcpdump 命令捕获实时 TCP/IP 数据包,这些数据包也可以保存到⽂件中。
之后这些捕获的数据包可以通过 tcpdump 命令进⾏分析。
tcpdump 命令在⽹络层⾯进⾏故障排除时变得⾮常⽅便。
tcpdump 在⼤多数 Linux 发⾏版中都能⽤,对于基于 Debian 的Linux,可以使⽤ apt 命令安装它。
# apt install tcpdump -y在基于 RPM 的 Linux 操作系统上,可以使⽤下⾯的 yum 命令安装 tcpdump。
# yum install tcpdump -y当我们在没⽤任何选项的情况下运⾏ tcpdump 命令时,它将捕获所有接⼝的数据包。
因此,要停⽌或取消 tcpdump 命令,请键⼊ ctrl+c。
在本教程中,我们将使⽤不同的实例来讨论如何捕获和分析数据包。
⽰例:1)从特定接⼝捕获数据包当我们在没⽤任何选项的情况下运⾏ tcpdump 命令时,它将捕获所有接⼝上的数据包,因此,要从特定接⼝捕获数据包,请使⽤选项 -i,后跟接⼝名称。
语法:# tcpdump -i {接⼝名}假设我想从接⼝ enp0s3 捕获数据包。
输出将如下所⽰,tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on enp0s3, link-type EN10MB (Ethernet), capture size 262144 bytes06:43:22.905890 IP .ssh > 169.144.0.1.39374: Flags [P.], seq 21952160:21952540, ack 13537, win 291, options [nop,nop,TS val 26164373 ecr 6580205], length 38006:43:22.906045 IP .ssh > 169.144.0.1.39374: Flags [P.], seq 21952540:21952760, ack 13537, win 291, options [nop,nop,TS val 26164373 ecr 6580205], length 22006:43:22.906150 IP .ssh > 169.144.0.1.39374: Flags [P.], seq 21952760:21952980, ack 13537, win 291, options [nop,nop,TS val 26164373 ecr 6580205], length 22006:43:22.906291 IP 169.144.0.1.39374 > .ssh: Flags [.], ack 21952980, win 13094, options [nop,nop,TS val 6580205 ecr 26164373], length 006:43:22.906303 IP 169.144.0.1.39374 > .ssh: Flags [P.], seq 13537:13609, ack 21952980, win 13094, options [nop,nop,TS val 6580205 ecr 26164373], length 7206:43:22.906322 IP .ssh > 169.144.0.1.39374: Flags [P.], seq 21952980:21953200, ack 13537, win 291, options [nop,nop,TS val 26164373 ecr 6580205], length 220^C109930 packets captured110065 packets received by filter133 packets dropped by kernel[[email protected] ~]#⽰例:2)从特定接⼝捕获特定数量数据包假设我们想从特定接⼝(如 enp0s3)捕获 12 个数据包,这可以使⽤选项 -c {数量} -I {接⼝名称} 轻松实现。
linux tcpdump 用法
linux tcpdump 用法tcpdump 是一种在 Linux 操作系统上用于捕获和分析网络数据包的实用工具。
它能够显示通过网络接口传输的数据包的详细信息,包括源地址、目标地址、协议、端口等。
以下是一些常见的 tcpdump 用法示例:基本用法:sudo tcpdump默认情况下,tcpdump 会显示所有经过网络接口的数据包。
需要使用超级用户权限(sudo)来运行,以便访问网络接口。
指定网络接口:sudo tcpdump -i eth0使用 -i 选项可以指定要监听的网络接口,这里是 eth0。
指定协议:sudo tcpdump -i eth0 icmp可以使用协议名来过滤数据包,这里是 icmp(ping 请求/回应)。
指定主机:sudo tcpdump host 192.168.1.1可以使用 host 关键字指定特定的主机,这里是 192.168.1.1。
指定端口:sudo tcpdump port 80使用 port 关键字可以过滤特定的端口,这里是 80。
保存到文件:sudo tcpdump -w output.pcap使用 -w 选项可以将捕获的数据包保存到文件中,文件格式通常是 pcap。
读取文件:sudo tcpdump -r input.pcap使用 -r 选项可以读取先前保存的数据包文件。
显示详细信息:sudo tcpdump -v使用 -v 选项可以显示更详细的信息,包括协议头。
这只是 tcpdump 的一些基本用法。
tcpdump 提供了丰富的选项,可以根据具体的需求进行过滤和定制。
请查阅tcpdump 的手册页(man tcpdump)以获取更详细的信息。
Linux命令高级技巧通过tcpdump命令进行网络抓包和分析
Linux命令高级技巧通过tcpdump命令进行网络抓包和分析Linux是一款广泛应用于服务器和嵌入式设备的操作系统,具有强大的功能和灵活性。
与其他操作系统相比,Linux提供了丰富的命令行工具,其中之一就是tcpdump命令。
tcpdump是一款用于抓取网络数据包并进行分析的强大工具,它可以帮助用户深入了解网络通信,解决网络故障和排查安全问题。
在本文中,我们将介绍如何使用tcpdump 命令进行网络抓包和分析。
一、什么是网络抓包?网络抓包是指在计算机网络中捕获和保存网络数据包的过程。
网络数据包是信息在网络中传输的基本单位,它包含了源IP地址、目标IP 地址、协议类型、端口号等重要信息。
通过抓包,我们可以观察和分析网络通信的行为,帮助我们了解网络设备之间的交互过程,诊断网络故障,以及排查安全问题。
二、tcpdump命令的基本用法tcpdump命令是一款基于命令行的工具,用于捕获和分析网络数据包。
下面是tcpdump命令的基本用法:```tcpdump [选项] [表达式]```其中,选项用于配置tcpdump的行为,表达式用于过滤需要捕获的数据包。
下面是一些常用的选项:- `-i`:指定要监听的网络接口。
- `-n`:禁用主机名解析,显示ip地址而非域名。
- `-X`:以16进制和ASCII码显示数据包内容。
- `-c`:指定捕获数据包的数量。
- `-s`:指定捕获数据包的最大长度。
例如,我们可以使用以下命令来捕获网络接口eth0上的前10个数据包,并以16进制和ASCII码显示数据包内容:```tcpdump -i eth0 -c 10 -X```三、tcpdump命令的高级用法除了基本用法外,tcpdump命令还提供了一些高级的用法,帮助用户更加灵活和精确地进行网络抓包和分析。
1. 根据协议过滤数据包tcpdump支持根据不同协议类型进行数据包的过滤。
常见的协议包括TCP、UDP、ICMP等。
tcpdump命令详解
tcpdump命令详解⼀、tcpdump简介tcpdump命令是基于unix系统的命令⾏的数据报嗅探⼯具,可以抓取流动在⽹卡上的数据包。
它的原理⼤概如下:linux抓包是通过注册⼀种虚拟的底层⽹络协议来完成对⽹络报⽂(准确的是⽹络设备)消息的处理权。
当⽹卡接收到⼀个⽹络报⽂之后,它会遍历系统中所有已经注册的⽹络协议,如以太⽹协议、x25协议处理模块来尝试进⾏报⽂的解析处理。
当抓包模块把⾃⼰伪装成⼀个⽹络协议的时候,系统在收到报⽂的时候就会给这个伪协议⼀次机会,让它对⽹卡收到的保温进⾏⼀次处理,此时该模块就会趁机对报⽂进⾏窥探,也就是啊这个报⽂完完整整的复制⼀份,假装是⾃⼰接收的报⽂,汇报给抓包模块。
⼆、语法1、查看本地⽹卡状态[root@cnetos daocoder]# netstat -iKernel Interface tableIface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flgdocker0 1500 40409 0 0 0 20376 0 0 0 BMUens5f0 1500 22999894941 0 0 0 25581016784 0 0 0 BMRUlo 65536 850291094 0 0 0 850291094 0 0 0 LRUIface:存在的⽹卡。
MTU:最⼤传输单元。
RX-OK RX-ERR RX-DRP RX-OVR:正确接收数据报的数量以及发⽣错误、流式、碰撞的总数。
TX-OK TX-ERR TX-DRP TX-OVR:正确发送数据报的数量以及发⽣错误、流式、碰撞的总数。
2、tcpdump帮助命令[root@centos daocoder]# tcpdump --helptcpdump version 4.9.0libpcap version 1.5.3OpenSSL 1.0.1e-fips 11 Feb 2013Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ][ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ][ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ][ -Q|-P in|out|inout ][ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ][ --immediate-mode ] [ -T type ] [ --version ] [ -V file ][ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ][ -Z user ] [ expression ](1)、类型的关键字host:指明⼀台主机。
linux tcpdump 参数
linux tcpdump 参数Linux tcpdump参数详解一、简介tcpdump是一个开源的网络抓包工具,可以用于捕获和分析网络数据包。
它可以帮助网络管理员监控和故障排除网络问题。
本文将介绍一些常用的tcpdump参数,帮助读者更好地使用这个工具。
二、常用参数1. -i 参数:指定抓包的网络接口使用-i参数可以指定抓包的网络接口,比如eth0、wlan0等。
例如,使用命令"tcpdump -i eth0"可以在eth0网络接口上抓取数据包。
2. -n 参数:不进行主机名解析使用-n参数可以禁止tcpdump进行主机名解析,从而避免输出http 地址。
这对于网络管理员来说非常有用,因为他们更关心的是IP地址而不是主机名。
3. -c 参数:指定抓包数量使用-c参数可以指定抓取的数据包数量。
例如,使用命令"tcpdump -c 100"可以抓取100个数据包后停止。
4. -s 参数:指定抓包长度使用-s参数可以指定抓包的最大长度。
默认情况下,tcpdump会捕获完整的数据包,但有时候只需要捕获部分数据包,可以使用-s参数来限制抓包的长度。
5. -w 参数:将数据包保存到文件使用-w参数可以将抓到的数据包保存到文件中,以便后续分析。
例如,使用命令"tcpdump -w capture.pcap"可以将数据包保存到capture.pcap文件中。
6. -r 参数:从文件中读取数据包使用-r参数可以从文件中读取数据包进行分析。
例如,使用命令"tcpdump -r capture.pcap"可以分析capture.pcap文件中的数据包。
7. -p 参数:禁止混杂模式使用-p参数可以禁止tcpdump进入混杂模式。
混杂模式可以使网络接口捕获到经过它的所有数据包,而不仅仅是目标或源地址与该接口相匹配的数据包。
但有时候我们希望禁止混杂模式,只捕获目标或源地址与该接口相匹配的数据包。
tcpdump使用方法
tcpdump使用方法一、什么是tcpdumptcpdump是一种在Linux和Unix操作系统上使用的网络抓包工具。
它可以捕获网络数据包并将其显示或保存到文件中,以供后续分析和诊断。
tcpdump可以用于调试网络问题、监视网络流量、分析网络协议等。
二、安装tcpdump1.在Ubuntu上安装tcpdump:sudo apt-get install tcpdump2.在CentOS上安装tcpdump:sudo yum install tcpdump三、基本用法1.捕获所有数据包:sudo tcpdump -i eth0-i选项指定要监听的接口,eth0为网卡接口名称。
2.捕获指定端口的数据包:sudo tcpdump -i eth0 port 80port选项指定要监听的端口号,80为HTTP服务默认端口号。
3.捕获指定IP地址的数据包:sudo tcpdump -i eth0 host 192.168.1.100host选项指定要监听的IP地址,192.168.1.100为目标IP地址。
4.捕获指定协议类型的数据包:sudo tcpdump -i eth0 icmpicmp为ICMP协议类型。
5.捕获指定源IP地址和目标IP地址之间的数据包:sudo tcpdump -i eth0 src 192.168.1.100 and dst 192.168.1.200 src选项指定源IP地址,dst选项指定目标IP地址。
6.保存抓包结果到文件:sudo tcpdump -i eth0 -w capture.pcap-w选项指定保存到文件的名称,capture.pcap为文件名。
7.读取保存的抓包结果:sudo tcpdump -r capture.pcap-r选项指定读取文件的名称,capture.pcap为文件名。
四、高级用法1.显示数据包详细信息:sudo tcpdump -i eth0 -v-v选项可以显示更详细的信息,如源地址、目标地址、协议类型等。
tcpdump linux 抓包 原理
tcpdump是一款在Linux系统上常用的网络抓包工具,它可以捕获网络数据包并将其显示或保存到文件中。
它的原理是通过监听网络接口,将接收到的数据包进行解析和分析。
具体来说,tcpdump使用libpcap库来访问网络接口,该库提供了一组函数来捕获和处理网络数据包。
当tcpdump启动时,它会打开指定的网络接口,并设置过滤规则来选择需要捕获的数据包。
然后,它会进入一个循环,不断地从网络接口读取数据包,并对其进行解析和处理。
tcpdump可以根据用户指定的过滤规则来选择需要捕获的数据包。
过滤规则可以基于源IP地址、目标IP地址、端口号、协议类型等条件进行过滤。
这样可以帮助用户只捕获感兴趣的数据包,减少不必要的数据量。
一旦tcpdump捕获到数据包,它会对数据包进行解析,并将解析结果显示在终端上或保存到文件中。
解析结果包括数据包的源IP地址、目标IP地址、端口号、协议类型、数据包长度等信息。
用户可以根据需要选择显示的信息。
总结起来,tcpdump的原理是通过监听网络接口,捕获数据包并解析其内容,然后将解析结果显示或保存到文件中。
它
可以帮助用户分析网络流量、排查网络问题等。
Linux抓包工具tcpdump命令详解
Linux抓包⼯具tcpdump命令详解1、简介⽤简单的话来定义tcpdump,就是:dump the traffic on a network,根据使⽤者的定义对⽹络上的数据包进⾏截获的包分析⼯具。
tcpdump可以将⽹络中传送的数据包的“头”完全截获下来提供分析。
它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。
2、实⽤命令实例1)默认启动tcpdump普通情况下,直接启动tcpdump将监视第⼀个⽹络接⼝上所有流过的数据包。
2)监视指定⽹络接⼝的数据包 tcpdump -i eth1如果不指定⽹卡,默认tcpdump只会监视第⼀个⽹络接⼝,⼀般是eth0,下⾯的例⼦都没有指定⽹络接⼝。
3)监视指定主机的数据包打印所有进⼊或离开sundown的数据包:tcpdump host sundown也可以指定ip,例如截获所有210.27.48.1的主机收到的和发出的所有的数据包:tcpdump host 210.27.48.1打印helios与hot或者与ace之间通信的数据包:tcpdump host helios and \( hot or ace \)截获主机210.27.48.1 和主机210.27.48.2或210.27.48.3的通信:tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)打印ace与任何其他主机之间通信的IP数据包, 但不包括与helios之间的数据包:tcpdump ip host ace and not helios如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使⽤命令:tcpdump ip host 210.27.48.1 and ! 210.27.48.2截获主机hostname发送的所有数据:tcpdump -i eth0 src host hostname监视所有送到主机hostname的数据包:tcpdump -i eth0 dst host hostname4)监视指定主机和端⼝的数据包如果想要获取主机210.27.48.1接收或发出的telnet包,使⽤如下命令:tcpdump tcp port 23 host 210.27.48.1对本机的udp 123 端⼝进⾏监视123为ntp的服务端⼝:tcpdump udp port 1235)监视指定⽹络的数据包打印本地主机与Berkeley⽹络上的主机之间的所有通信数据包(nt: ucb-ether, 此处可理解为'Berkeley⽹络'的⽹络地址,此表达式最原始的含义可表达为: 打印⽹络地址为ucb-ether的所有数据包):tcpdump net ucb-ether打印所有通过⽹关snup的ftp数据包:(注意,表达式被单引号括起来了,这可以防⽌shell对其中的括号进⾏错误解析)tcpdump 'gateway snup and (port ftp or ftp-data)'6)监视指定协议的数据包打印TCP会话中的的开始和结束数据包,并且数据包的源或⽬的不是本地⽹络上的主机:(nt: localnet, 实际使⽤时要真正替换成本地⽹络的名字)tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'打印所有源或⽬的端⼝是80,⽹络层协议为IPv4,并且含有数据,⽽不是SYN,FIN以及ACK-only等不含数据的数据包:(ipv6的版本的表达式可做练习)tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'(nt: 可理解为, ip[2:2]表⽰整个ip数据包的长度, (ip[0]&0xf)<<2)表⽰ip数据包包头的长度(ip[0]&0xf代表包中的IHL域, ⽽此域的单位为32bit, 要换算成字节数需要乘以4,即左移2.(tcp[12]&0xf0)>>4 表⽰tcp头的长度, 此域的单位也是32bit, 换算成⽐特数为 ((tcp[12]&0xf0) >> 4) << 2, 即((tcp[12]&0xf0)>>2).((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0 表⽰: 整个ip数据包的长度减去ip头的长度,再减去tcp头的长度不为0,这就意味着, ip数据包中确实是有数据。
使用tcpdump命令捕获和分析网络数据包
使用tcpdump命令捕获和分析网络数据包在网络中,数据包是网络通信的基本单位。
了解和分析网络数据包的内容和结构,对于网络管理员和安全专家来说是非常重要的。
tcpdump是一款功能强大的网络数据包分析工具,它能够捕获网络数据包并提供详细的分析信息。
本文将介绍如何使用tcpdump命令捕获和分析网络数据包。
一、安装tcpdump在开始使用tcpdump之前,首先需要在你的计算机上安装tcpdump。
tcpdump在大多数Linux和UNIX系统中都是默认安装的,可以使用以下命令来检查是否已经安装了tcpdump:```tcpdump -v```如果已经安装,则会显示tcpdump的版本信息;如果未安装,则需要使用以下命令来安装tcpdump:```sudo apt-get install tcpdump```二、捕获网络数据包使用tcpdump捕获网络数据包非常简单,只需在终端中输入以下命令:```sudo tcpdump```该命令将会开始捕获所有经过计算机网络接口的数据包。
然而,这样会产生大量的输出信息,不便于分析。
为了提高分析效率,可以使用一些选项来限制捕获的数据包范围。
1. 指定网络接口如果你有多个网络接口,可以使用-i选项指定要捕获的网络接口。
例如,要捕获eth0接口的数据包,可以使用以下命令:```sudo tcpdump -i eth0```2. 指定捕获数量使用-c选项可以指定要捕获的数据包数量。
例如,要只捕获10个数据包,可以使用以下命令:```sudo tcpdump -c 10```3. 指定捕获过滤器可以使用过滤器来指定要捕获的数据包类型。
例如,要只捕获HTTP协议的数据包,可以使用以下命令:```sudo tcpdump port 80```以上命令将只捕获目标端口为80的数据包。
三、分析网络数据包捕获到网络数据包后,可以使用tcpdump提供的一些选项来进行数据包分析。
在Linux命令行中使用tcpdump抓包的一些功能
在Linux命令⾏中使⽤tcpdump抓包的⼀些功能tcpdump 是⼀款灵活、功能强⼤的抓包⼯具,能有效地帮助排查⽹络故障问题。
以我作为管理员的经验,在⽹络连接中经常遇到⼗分难以排查的故障问题。
对于这类情况, tcpdump 便能派上⽤场。
tcpdump 是⼀个命令⾏实⽤⼯具,允许你抓取和分析经过系统的流量数据包。
它通常被⽤作于⽹络故障分析⼯具以及安全⼯具。
tcpdump 是⼀款强⼤的⼯具,⽀持多种选项和过滤规则,适⽤场景⼗分⼴泛。
由于它是命令⾏⼯具,因此适⽤于在远程服务器或者没有图形界⾯的设备中收集数据包以便于事后分析。
它可以在后台启动,也可以⽤ cron 等定时⼯具创建定时任务启⽤它。
本⽂中,我们将讨论 tcpdump 最常⽤的⼀些功能。
1、在 Linux 中安装 tcpdumptcpdump ⽀持多种 Linux 发⾏版,所以你的系统中很有可能已经安装了它。
⽤下⾯的命令检查⼀下是否已经安装了 tcpdump :$ which tcpdump/usr/sbin/tcpdump如果还没有安装 tcpdump ,你可以⽤软件包管理器安装它。
例如,在 CentOS 或者 Red Hat Enterprise 系统中,⽤如下命令安装 tcpdump :$ sudo yum install -y tcpdumptcpdump 依赖于 libpcap ,该库⽂件⽤于捕获⽹络数据包。
如果该库⽂件也没有安装,系统会根据依赖关系⾃动安装它。
现在你可以开始抓包了。
2、⽤ tcpdump 抓包使⽤ tcpdump 抓包,需要管理员权限,因此下⾯的⽰例中绝⼤多数命令都是以 sudo 开头。
⾸先,先⽤ tcpdump -D 命令列出可以抓包的⽹络接⼝:$ sudo tcpdump -Deth0virbr0eth1any (Pseudo-device that captures on all interfaces)lo [Loopback]如上所⽰,可以看到我的机器中所有可以抓包的⽹络接⼝。
Linux下抓包工具tcpdump使用介绍
Linux下抓包工具tcpdump使用介绍Linux下抓包工具tcpdump使用介绍作者:佚名时间:11-30 17:11:39【大中小】点评:在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一,本文将介绍Linux下抓包工具tcpdump使用,需要的朋友可以参考下在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一。
sniffer工具首先是为网络管理员和网络程序员进行网络分析而设计的。
匹配ether广播包。
ether广播包的特征是mac全1.故如下即可匹配:tcpdump 'ether dst ff:ff:ff:ff:ff:ff'ylin@ylin:~$ sudo tcpdump -c 1 'ether dst ff:ff:ff:ff:ff:ff' tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capturesize 96 bytes10:47:57.784099 arp who-has 192.168.240.77 tell192.168.240.189在此,只匹配1个包就退出了。
第一个是arp请求包,arp请求包的是采用广播的方式发送的,被匹配那是当之无愧的。
匹配ether组播包,ether的组播包的特征是mac的最高位为1,其它位用来表示组播组编号,如果你想匹配其的多播组,知道它的组MAC地址即可。
如tcpdump 'ether dst ' Mac_Address表示地址,填上适当的即可。
如果想匹配所有的ether多播数据包,那么暂时请放下,下面会继续为你讲解更高级的应用。
(2)匹配arp包arp包用于IP到Mac址转换的一种协议,包括arp请求和arp答应两种报文,arp请求报文是ether广播方式发送出去的,也即arp请求报文的mac地址是全1,因此用ether dst FF;FF;FF;FF;FF;FF可以匹配arp请求报文,但不能匹配答应报文。
linux tcpdump命令使用
linux tcpdump命令使用
tcpdump是一个基于命令行的网络数据包分析工具,它可以截获网络接口上的数据包,并进行实时的分析和展示。
以下是关于tcpdump 命令的使用方法:
1. 基本语法:tcpdump [选项] [过滤条件]
2. 查看所有网络接口:tcpdump -D
3. 监听指定网络接口:tcpdump -i [接口名]
4. 指定监听的数据包数量:tcpdump -c [数据包数量]
5. 以十进制形式显示数据包内容:tcpdump -X
6. 以十六进制形式显示数据包内容:tcpdump -XX
7. 显示过滤结果时加上时间戳:tcpdump -tttt
8. 只显示源IP地址和目的IP地址:tcpdump -n
9. 设置抓取的数据包大小:tcpdump -s [大小]
10. 过滤特定源IP地址:tcpdump src [IP地址]
11. 过滤特定目的IP地址:tcpdump dst [IP地址]
12. 过滤特定源端口:tcpdump src port [端口号]
13. 过滤特定目的端口:tcpdump dst port [端口号]
14. 过滤特定协议:tcpdump [协议名称]
15. 组合多个过滤条件:tcpdump [过滤条件1] and [过滤条件2]
以上是tcpdump命令的一些常用选项和过滤条件。
通过使用这些选项和过滤条件,可以根据需求捕获和分析特定的网络数据包。
tcpdump抓包命令使用教程
tcpdump抓包命令使⽤教程⽬录tcpdump 是Linux系统下的⼀个强⼤的命令,可以将⽹络中传送的数据包完全截获下来提供分析。
它⽀持针对⽹络层、协议、主机、⽹络或端⼝的过滤,并提供and、or、not等逻辑语句来帮助你去掉⽆⽤的信息。
⼀、tcpdump 命令格式介绍⾸先我们对Linux系统下tcpdump命令格式进⾏⼀个介绍说明,在下⾯的使⽤教程中讲到tcpdump命令⽰例时,您就可以参考tcpdump命令参数说明进⾏学习。
1.1 语法tcpdump [ -AdDefIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ][ -C file_size ] [ -G rotate_seconds ] [ -F file ][ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ][ -Q|-P in|out|inout ][ -r file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ] [ -z postrotate-command ] [ -Z user ][ expression ]1.2 命令⾏参数介绍-A 以ASCII格式打印出所有分组,并将链路层的头最⼩化。
-c 在收到指定的数量的分组后,tcpdump就会停⽌。
-C 在将⼀个原始分组写⼊⽂件之前,检查⽂件当前的⼤⼩是否超过了参数file_size中指定的⼤⼩。
如果超过了指定⼤⼩,则关闭当前⽂件,然后在打开⼀个新的⽂件。
参数 file_size的单位是兆字节(是1,000,000字节,⽽不是1,048,576字节)。
-d 将匹配信息包的代码以⼈们能够理解的汇编格式给出。
linux tcpdump 原理
linux tcpdump 原理
tcpdump 是一个用于抓包分析的命令行工具。
它基于libpcap 库,可以在Linux 系统中捕获网络流量并对其进行解析和显示。
tcpdump 的工作原理如下:1. 打开网络接口:tcpdump 使用libpcap 库打开指定的网络接口(如eth0、wlan0)或读取指定的文件(pcap 格式的抓包文件)。
2. 设置过滤规则:可以使用tcpdump 命令的参数来设置过滤规则,过滤特定的数据包。
例如,"-i" 参数用于指定要抓取的网络接口,"-s" 参数用于设置每个数据包的最大抓取长度,"src" 和"dst" 参数用于指定源和目的IP 地址等。
3. 开始捕获数据包:一旦网络接口和过滤规则都设置好了,tcpdump 就开始从指定的网络接口读取数据包。
4. 解析数据包:tcpdump 将捕获到的数据包传递给libpcap 库进行解析,提取出包含在数据包中的信息,如源和目的IP 地址、协议类型、端口号等。
5. 显示结果:解析完成后,tcpdump 将会将抓取到的数据包的相关信息打印出来,以供用户查看。
用户可以根据自己的需求选择打印出来的信息的详细程度。
可以通过一些参数(如"-v"、"-vv"、"-vvv" 等)来指定打印信息的详细程度。
总结起来,tcpdump 的原理就是通过libpcap 库来读取网络接口或文件中的数据包,并对其进行解析和显示,以方便用户对网络流量进行分析和调试。
抓包神器tcpdump使用介绍(转)
抓包神器tcpdump使⽤介绍(转)tcpdump 命令使⽤简介简单介绍tcpdump 是⼀款强⼤的⽹络抓包⼯具,运⾏在 linux 平台上。
熟悉 tcpdump 的使⽤能够帮助你分析、调试⽹络数据。
要想使⽤很好地掌握 tcpdump,必须对⽹络报⽂(TCP/IP协议)有⼀定的了解。
不过对于简单的使⽤来说,只要有⽹络基础概念就⾏了。
tcpdump 是⼀个很复杂的命令,想了解它的⽅⽅⾯⾯⾮常不易,也不值得推荐,能够使⽤它解决⽇常⼯作中的问题才是关键。
选项tcpdump 的选项也很多,要想知道所有选项的话,请参考man tcpdump,下⾯只记录 tcpdump 最常⽤的选项。
需要注意的是,tcpdump 默认只会截取前 96 字节的内容,要想截取所有的报⽂内容,可以使⽤-s number,number就是你要截取的报⽂字节数,如果是 0 的话,表⽰截取报⽂全部内容。
-n表⽰不要解析域名,直接显⽰ ip。
-nn不要解析域名和端⼝-X同时⽤ hex 和 ascii 显⽰报⽂的内容。
-XX同-X,但同时显⽰以太⽹头部。
-S显⽰绝对的序列号(sequence number),⽽不是相对编号。
-i any监听所有的⽹卡-v, -vv, -vvv:显⽰更多的详细信息-c number: 截取 number 个报⽂,然后结束-A:只使⽤ ascii 打印报⽂的全部数据,不要和-X⼀起使⽤。
截取 http 请求的时候可以⽤sudo tcpdump -nSA port 80!简单使⽤1. tcpdump -nS监听所有端⼝,直接显⽰ ip 地址。
2. tcpdump -nnvvS显⽰更详细的数据报⽂,包括 tos, ttl, checksum 等。
3. tcpdump -nnvvXS显⽰数据报的全部数据信息,⽤ hex 和 ascii 两列对⽐输出。
下⾯是抓取 ping 命令的请求和返回的两个报⽂,可以看到全部的数据。
Tcpdump的用法介绍和解决问题范例
Tcpdump的⽤法介绍和解决问题范例Tcpdump的⽤法介绍和解决问题范例⽬录1.概述 (2)2.命令格式 (2)2.1.常⽤的选项和对应参数 (3)2.2.表达式 (4)3.使⽤⽅法执⾏结果范例 (5)3.1.Tcpdump -D显⽰对应的系统的⽹⼝,⽤于-i后⾯指定⽹络接⼝⽤ (5)3.2.tcpdump -i eth0 -n -c 8 icmp;指定eth0,关闭反查dns,抓8包 (6)3.3.不使⽤-n时,会反查源ip和⽬标ip对应的url地址73.4.-nn取消反向dns的过程,并⽤数字显⽰ip端⼝之类83.5.-tt;-ttt;-tttt的⽤法 (10)3.6.-e ⽤来显⽰源,⽬标ip的mac地址 (11)3.7.-w写⽂件,参数是路径和⽂件名,不写路径默认是系统默认路径 (11)3.8.复杂的过滤条件表达式范例 (13)4.Tcpdump执⾏时的常见错误提⽰ (14)5.抓取解决问题实例 (17)1.概述Tcpdump是linux环境下抓包⼯具,可以对对应⽹络接⼝流量进⾏过滤抓取,可以打印输出到屏幕,也可以保存到指定⽂件。
指定的⽂件可以⽤wireshark来打开查看。
可以快速查看符合⽹络接⼝符合某⼀条件的抓包,⽅便我们确定⽹络问题。
2.命令格式可以在linux系统环境下输⼊man tcpdump回车来查看它的帮助说明。
如下图:其命令格式是:tcpdump 选项和对应参数表达式⽤ctrl+c来终⽌抓取,有的系统⽤ctrl+z,有的环境中ctrl+z不⽣成⽂件,必须⽤ctrl+c;2.1.常⽤的选项和对应参数-D 是显⽰所有的接⼝⽤的选项和参数;-i 端⼝号是指定抓取⽹卡的名称或者数字编号;-n来关闭dns反向解析功能,-nn是关闭反向查询功能并以数字格式显⽰ip地址端⼝号,和url地址;-c⽤于指定抓取包的包数;-C⽤于指定抓取保存⽂件的⼤⼩;-e⽤于显⽰对应的源,⽬的的mac地址-w ⽂件路径和⽂件名⽤于指定保存⽂件的路径和名称,没有指定路径默认在系统默认路径下;-t是不显⽰时间戳,-tttt显⽰时间戳,-ttt显⽰请求和响应的时间的时间差;-v是显⽰⼀些协议的详细资料,-vv,-vvv来显⽰更详细的资料。
tcpdump命令用法
tcpdump命令用法1. 什么是tcpdump命令tcpdump是一款非常强大的网络抓包工具,可以在Linux和UNIX系统上使用。
它能够捕获和分析网络数据包,提供了详细且全面的网络流量信息,对于网络调试和故障排除非常有帮助。
2. tcpdump的基本用法2.1 安装tcpdump在大部分Linux发行版上,tcpdump已经预装,可以直接使用。
如果没有安装,可以使用以下命令进行安装:sudo apt-get install tcpdump2.2 tcpdump的基本语法tcpdump [options] [filters]其中,options是可选参数,用来指定一些tcpdump的行为和输出格式;filters 是可选参数,用来过滤捕获的数据包。
2.3 常用选项参数以下是一些常用的选项参数:•-i: 指定网络接口,如-i eth0表示使用eth0接口进行抓包。
•-c: 指定抓包数量,如-c 10表示只抓取10个数据包。
•-n: 不解析IP地址和端口号,直接显示IP地址和端口号,提高抓包效率。
•-w: 将抓包结果保存到文件中,如-w capture.pcap。
•-r: 从文件中读取抓包结果进行分析,如-r capture.pcap。
2.4 过滤器的使用过滤器用来过滤捕获的数据包,可以根据协议、源地址、目的地址、端口号等进行筛选。
以下是一些常用的过滤器:•host: 根据IP地址过滤数据包,如host 192.168.1.1。
•port: 根据端口号过滤数据包,如port 80。
•src和dst: 根据源地址和目的地址过滤数据包,如src 192.168.1.1和dst 192.168.1.2。
•tcp和udp: 根据传输层协议过滤数据包,如tcp port 80和udp port 53。
3. tcpdump进阶用法3.1 显示详细的包信息使用-v选项可以显示更详细的包信息,包括源地址、目的地址、协议、TTL、序号等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TCPDUMP简介在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一。
sniffer工具首先是为网络管理员和网络程序员进行网络分析而设计的。
对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际情况,在网络性能急剧下降的时候,可以通过sniffer 工具来分析原因,找出造成网络阻塞的来源。
对于网络程序员来说,通过sniffer工具来调试程序。
用过windows平台上的sniffer工具(例如,netxray和sniffer pro软件)的朋友可能都知道,在共享式的局域网中,采用sniffer工具简直可以对网络中的所有流量一览无余!Sniffer 工具实际上就是一个网络上的抓包工具,同时还可以对抓到的包进行分析。
由于在共享式的网络中,信息包是会广播到网络中所有主机的网络接口,只不过在没有使用sniffer工具之前,主机的网络设备会判断该信息包是否应该接收,这样它就会抛弃不应该接收的信息包,sniffer工具却使主机的网络设备接收所有到达的信息包,这样就达到了网络监听的效果。
Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是必不可少的。
所以,今天我们就来看看Linux中强大的网络数据采集分析工具——TcpDump。
用简单的话来定义tcpdump,就是:dump the traffice on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。
作为互联网上经典的的系统管理员必备工具,tcpdump以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的东东之一。
顾名思义,TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。
它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。
tcpdump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。
因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。
普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。
-----------------------bash-2.02# tcpdumptcpdump: listening on eth011:58:47.873028 bios-ns > bios-ns: udp 5011:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=430000 0000 0080 0000 1007 cf08 0900 00000e80 0000 902b 4695 0980 8701 0014 0002000f 0000 902b 4695 0008 0011:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97ffff 0060 0004 ffff ffff ffff ffff ffff0452 ffff ffff 0000 e85b 6d85 4008 00020640 4d41 5354 4552 5f57 4542 0000 00000000 00^C------------------------首先我们注意一下,从上面的输出结果上可以看出来,基本上tcpdump总的的输出格式为:系统时间来源主机.端口 > 目标主机.端口数据包参数TcpDump的参数化支持tcpdump支持相当多的不同参数,如使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,使用-c参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存,等等。
然而更复杂的tcpdump参数是用于过滤目的,这是因为网络中流量很大,如果不加分辨将所有的数据包都截留下来,数据量太大,反而不容易发现需要的数据包。
使用这些参数定义的过滤规则可以截留特定的数据包,以缩小目标,才能更好的分析网络中存在的问题。
tcpdump使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,充分利用这些过滤规则就能达到迅速定位故障的目的。
请使用man tcpdump查看这些过滤规则的具体用法。
显然为了安全起见,不用作网络管理用途的计算机上不应该运行这一类的网络分析软件,为了屏蔽它们,可以屏蔽内核中的bpfilter伪设备。
一般情况下网络硬件和TCP/IP堆栈不支持接收或发送与本计算机无关的数据包,为了接收这些数据包,就必须使用网卡的混杂模式,并绕过标准的TCP/IP堆栈才行。
在FreeBSD下,这就需要内核支持伪设备bpfilter。
因此,在内核中取消bpfilter支持,就能屏蔽tcpdump之类的网络分析工具。
并且当网卡被设置为混杂模式时,系统会在控制台和日志文件中留下记录,提醒管理员留意这台系统是否被用作攻击同网络的其他计算机的跳板。
May 15 16:27:20 host1 /kernel: fxp0: promiscuous mode enabled虽然网络分析工具能将网络中传送的数据记录下来,但是网络中的数据流量相当大,如何对这些数据进行分析、分类统计、发现并报告错误却是更关键的问题。
网络中的数据包属于不同的协议,而不同协议数据包的格式也不同。
因此对捕获的数据进行解码,将包中的信息尽可能的展示出来,对于协议分析工具来讲更为重要。
昂贵的商业分析工具的优势就在于它们能支持很多种类的应用层协议,而不仅仅只支持tcp、udp等低层协议。
从上面tcpdump的输出可以看出,tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。
显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpdump 截获数据并保存到文件中,然后再使用其他程序进行解码分析。
当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。
TCP功能数据过滤不带任何参数的TcpDump将搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。
所以,我们应当先想好需要哪些数据,TcpDump提供以下参数供我们选择数据:-b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。
例如:tcpdump -b arp 将只显示网络中的arp即地址转换协议信息。
-i 选择过滤的网络接口,如果是作为路由器至少有两个网络接口,通过这个选项,就可以只过滤指定的接口上通过的数据。
例如:tcpdump -i eth0 只显示通过eth0接口上的所有报头。
src、dst、port、host、net、ether、gateway这几个选项又分别包含src、dst 、port、host、net、ehost等附加选项。
他们用来分辨数据包的来源和去向,src host 192.168.0.1指定源主机IP地址是192.168.0.1,dst net 192.168.0.0/24指定目标是网络192.168.0.0。
以此类推,host是与其指定主机相关无论它是源还是目的,net是与其指定网络相关的,ether后面跟的不是IP地址而是物理地址,而gateway则用于网关主机。
可能有点复杂,看下面例子就知道了:tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头。
tcpdump ether src 00:50:04:BA:9B and dst……过滤源主机物理地址为XXX的报头(为什么ether src后面没有host或者net?物理地址当然不可能有网络喽)。
Tcpdump src host 192.168.0.1 and dst port not telnet过滤源主机192.168.0.1和目的端口不是telnet的报头。
ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。
例如:tcpdump ip src……只过滤数据-链路层上的IP报头。
tcpdump udp and src host 192.168.0.1只过滤源主机192.168.0.1的所有udp报头。
数据显示/输入输出TcpDump提供了足够的参数来让我们选择如何处理得到的数据,如下所示:-l 可以将数据重定向。
如tcpdump -l >tcpcap.txt将得到的数据存入tcpcap.txt文件中。
-n 不进行IP地址到主机名的转换。
如果不使用这一项,当系统中存在某一主机的主机名时,TcpDump会把IP地址转换为主机名显示,就像这样:eth0 < ntc9.1165> .telnet,使用-n后变成了:eth0 < 192.168.0.9.1165 > 192.168.0.1.telnet。
-nn 不进行端口名称的转换。
上面这条信息使用-nn后就变成了:eth0 < ntc9.1165 > .23。
-N 不打印出默认的域名。
还是这条信息-N 后就是:eth0 < ntc9.1165 > router.telnet。
-O 不进行匹配代码的优化。
-t 不打印UNIX时间戳,也就是不显示时间。
-tt 打印原始的、未格式化过的时间。
-v 详细的输出,也就比普通的多了个TTL和服务类型。
[expression]的用法:expression是tcpdump最为有用的高级用法,可以利用它来匹配一些特殊的包。
下面介绍一下expression的用法,主要是如何写出符合要求最为严格expression。
如果tcpdump中没有expression,那么tcpdump会把网卡上的所有数据包输出,否则会将被expression匹配的包输出。
expression 由一个或多个[primitives]组成,而[primitives]由一个或多个[qualitifer]加一个id(name)或数字组成,它们的结构如用正则表达式则可表示为:expression = ([qualitifer]+(id|number))+依次看来,expression是一个复杂的条件表达式,其中[qualitifer]+(id|number)就是一个比较基本条件,qualitifer就表达一些的名称(项,变量),id或number则表示一个值(或常量)。