tcpdump命令使用详解

tcpdump命令使用详解

一:命令介绍:

tcpdump,用简单的语言概括就是dump the traffic on a network,是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具,windows平台有sniffer等工具,tcpdump可以将网络中传输的数据包的“包头”全部捕获过来进程分析,其支持网络层、特定的传输协议、数据发送和接收的主机、网卡和端口的过滤,并提供and、or、not等语句进行逻辑组合捕获数据包或去掉不用的信息。

1:命令选项和捕获主机对到主机的数据包:

1.1:命令选项:

-a #将网络地址和广播地址转变成名字
-A #以ASCII格式打印出所有分组,并将链路层的头最小化
-b #数据链路层上选择协议,包括ip/arp/rarp/ipx都在这一层
-c #指定收取数据包的次数,即在收到指定数量的数据包后退出tcpdump
-d #将匹配信息包的代码以人们能够理解的汇编格式输出
-dd #将匹配信息包的代码以c语言程序段的格式输出
-ddd #将匹配信息包的代码以十进制的形式输出
-D #打印系统中所有可以监控的网络接口
-e #在输出行打印出数据链路层的头部信息
-f #将外部的Internet地址以数字的形式打印出来,即不显示主机名
-F #从指定的文件中读取表达式,忽略其他的表达式
-i #指定监听网络接口
-l #使标准输出变为缓冲形式,可以数据导出到文件
-L #列出网络接口已知的数据链路
-n #不把网络地址转换为名字
-N 不输出主机名中的域名部分,例如www.baidu.com只输出www
-nn #不进行端口名称的转换
-P #不将网络接口设置为混杂模式
-q #快速输出,即只输出较少的协议信息
-r #从指定的文件中读取数据,一般是-w保存的文件
-w #将捕获到的信息保存到文件中,且不分析和打印在屏幕
-s #从每个组中读取在开始的snaplen个字节,而不是默认的68个字节
-S #将tcp的序列号以绝对值形式输出,而不是相对值
-T #将监听到的包直接解析为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议)
-t #在输出的每一行不打印时间戳
-tt #在每一行中输出非格式化的时间戳
-ttt #输出本行和前面以后之间的时间差
-tttt #在每一行中输出data处理的默认格式的时间戳
-u #输出未解码的NFS句柄
-v #输出稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息
-vv#输出相信的保报文信息

1.1.1:#tcpdump的表达式:

表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包 将会被截获,在表达式中一般如下几种类型的关键字:

a):关于数据类型的关键字:

包括host、port、net,例如host 192.168.1.1表示这是一台主机,net 192.168.0.0表示这是一个网络地址,port 22指明端口号是22,如果没有指明类型,则默认的类型是host。

b):数据传输方向的关键字:

包括src、dst、dst or src、dst and src,这些关键字指明了传输的方向,比如src 192.168.1.1说明数据包源地址是192.168.1.1,dst net 192.168.0.0指明目的网络地址是192.168.0.0,默认是监控主机对主机的src和dst,即默认监听本机和目标主机的所有数据。

c):协议关键字:

包括ip、arp、rarp、tcp、udp等,

d):其他关键字:

运算类型的:or、and、not、!

辅助功能型的:gateway、less、broadcast、greater

1.2:# tcpdump 默认捕获方式

#默认监听在第一块网卡上,监听所有经过此网卡通过的数据包

1.3:# tcpdump  -i eth0 监听指定网卡eth0的所有传输数据包:

1.4:#tcpdump -i eth0  host 192.168.56.1  #捕获主机192.168.56.1经过本机网卡eth0的所有数据包(也可以是主机名,但要求可以解析出来IP地址)

1.5:#tcpdump host 192.168.56.209  and \( 192.168.56.210 or 192.168.56.211 \)   #捕获主机 192.168.56.209 和主机192.168.56.210或192.168.56.211的所有通信数据包



1.6:#tcpdump ip  host node9 and not www.baidu.com  #捕获主机node9与其他主机之间(不包括www.baidu.com)通信的ip数据包

 1.7:#tcpdump ip host node9 and ! www.baidu.com  #捕获node9与其他所有主机的通信数据包(不包括www.baidu.com)

1.8:#tcpdump  -i eth0 src node10  #捕获源主机node10发送的所有的经过eth0网卡的所有数据包

 1.9:##tcpdump  -i eth0 dst  host  www.baidu.com  #捕获所有发送到主机www.baidu.com的数据包

1.9.1:监听主机192.168.56.1和192.168.56.210之间ip协议的80端口的且排除www.baidu.com通信的所有数据包:

# tcpdump  ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host  ! www.baidu.com  #也可以写成tcpdump  ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host  not  www.baidu.com,即not和!都是相同的取反的意思

1.9.2:捕获arp的协议数据包:

#tcpdump  arp  #监控指定主机的通信数据包与1.9.1方式相同

2:捕获指定主机和端口的数据包:

2.1:#tcpdump tcp  port 22  and host 192.168.56.210  #捕获主机192.168.56.210接收和发出的tcp协议的ssh的数据包:

2.2:# tcpdump  udp port 53  #监听本机udp的53端口的数据包,udp是dns协议的端口,这也是一个dns域名解析的完整过程

总结:tcpdump的语法类似于mysql查询语句,可以指定各种查询的条件进行组合,还可以进行与或非的条件判断进行更精确的数据搜集,语法如下:

#tcpdump [协议类型] [源或目标] [主机名称或IP] [or/and/not/!条件组合] [源或目标] [主机名或IP] [or/and/not/!条件组合] [端口] [端口号] …… [or/and/not/!条件组合] [条件]

#tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host ! www.baidu.com

tcpdump 抓包工具详细图文教程

一、tcpdump 常用参数的使用

tcpdump -h # 查看所有参数
在这里插入图片描述

1.1 tcpdump -i # 指定监听网络接口.

tcpdump -i ens32

默认监听在第一块网卡上(使用 ifconfig 查看网课信息),监听所有经过此网卡通过的数据包;但是我们可能关心的数据并不是 ens32 的接口,这时就需要指定端囗进行数据包的捕获。

在 tcpdump 后面加一个 -i 的参数,后面跟具体需要捕获的接口名称,就可以抓取经过这个具体接口的所有数据包。tcpdump -i any 监听所有的网卡接口、用来查看是否有网络流量。
在这里插入图片描述

1.2 tcpdump -w # 将捕获到的信息保存到文件中,且不分析和打印在屏幕.
报文打印在 shell 里会太多且不方便查看,我们可以保存成文件;然后通过 xftp 导出到本地,可以详细查看。

扩展:导出的文件可以设置为 cap 或者 pcap 的格式,可以直接用 wireshark 工具打开;可以用 wireshark 工具分析报文具体信息!

报文打印在 shell 里会太多且不方便查看,我们可以保存成文件;然后通过 xftp 导出到本地,可以详细查看。

扩展:导出的文件可以设置为 cap 或者 pcap 的格式,可以直接用 wireshark 工具打开;可以用 wireshark 工具分析报文具体信息!

1.4 tcpdump -n # 不把 ip 转化成域名
直接显示 ip,避免执行 DNS lookups 解析的过程,速度会快很多。

在这里插入图片描述

tcpdump -nn:不把协议和端口转化成名字,速度也会快很多。
在这里插入图片描述

tcpdump -N:不打印出 host 的域名部分,将会打印 ‘nic’ 而不是 ‘nic.ddn.mil’
在这里插入图片描述

1.5 tcpdump -t # 在每行的输出中不显示时间
在这里插入图片描述

tcpdump -tt:在每行的输出中会输出时间戳

tcpdump -ttt:输出每两行打印的时间间隔(以毫秒为单位)

tcpdump -tttt:在每行打印的时间戳之前添加日期的打印(此种选项,输出的时间最直观)
在这里插入图片描述

1.6 tcpdump -v # 产生详细的输出

比如包的 TTL、id 标识、数据包长度,以及 IP 包的一些选项。同时它还会打开 一些附加的包完整性检测,比如对 IP 或 ICMP 包头部的校验和。
在这里插入图片描述

tcpdump -vv:产生比 -v 更详细的输出。比如 NFS 回应包中的附加域将会被打印,SMB 数据包也会被完全解码。

tcpdump -vvv:产生比 -vv 更详细的输出。比如 telent 时所使用的 SB、SE 选项将会被打印,如果telnet 同时使用的是图形界面,其相应的图形选项将会以 16 进制的方式打印出来。

1.7 tcpdump -c # 指定收取数据包的次数

即在收到指定数量的数据包后退出 tcpdump,停止抓包。

tcpdump -c 5 -w tt.pcap

解释:抓满 5 个报文之后,就停止 tcpdump 抓包。
在这里插入图片描述

1.8 tcpdump -C # 与 -w FILE 选项配合使用

    该选项使得 tcpdump 在把原始数据包直接保存到文件中之前,检查此文件大小是否超过 file-size。如果超过了,将关闭此文件,另创一个文件继续保存原始数据包。新创建的文件名与 -w 选项指定的文件名一致,但文件名后多了一个数字,该数字会从 1 开始随着新创建文件的增多而增加。file-size 的单位是百万字节(这里指1,000,000个字节,并非1,048,576个字节)

tcpdump -C 1 -W 4 -w rr

指定一个单位后(1MB)就换文件,最多写 4 个文件,名字是 rr0、rr1、rr2、rr3:
在这里插入图片描述

.9 tcpdump -Q # 选择是入方向还是出方向的数据包

可选项有:in、out、inout,也可以使用 --direction=[options]

tcpdump -Q in
tcpdump -Q out
tcpdump -Q inout

1.10 tcpdump -q # 简洁地打印输出

即打印很少的协议相关信息,从而输出行都比较简短。

tcpdump -D:显示所有可用网络接口的列表
tcpdump -L:列出网络接口的已知数据链路。

1.11 tcpdump -s # 指定每个包捕获的长度

    单位是 byte,而不是默认的 262144 bytes;如果超过了设定的大小限制,包就会被截断 ,而在打印行出现 [lproto] 这种标识,这个 proto 就是被截断的报文的协议名字。但是抓取 len 越长,包的处理时间越长,并且会减少 tcpdump 可缓存的数据包的数量,从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下,抓取长度越小越好(tcpdump -s 0 使用默认长度 262144)。 

注意:不通的 tcpdump 版本,这个默认抓取的报文长度不一样。
在这里插入图片描述

1.12 tcpdump -A # 以 ASCII 格式打印出所有的分组并且读取此文件

这样可以使读取更加简单,方便使用 grep 等工具解析输出内容

tcpdump -A -r tt.pcap
tcpdump -A | grep baidu

在这里插入图片描述

tcpdump -X 表示同时使用十六进制和 ASCII 字符串打印报文的全部数据。注意:-X 和 -A 两个参数不能一起使用。

tcpdump -X -r tt.pcap

1.14 tcpdump -F # 指定使用哪个文件的过滤表达式抓包

此时命令行上的输入过滤规则将被忽略,只以文件里的规则为准。

#配置规则文件
[root@mysql01 ~]# vim filter_rule
tcp port 80
[root@mysql01 ~]# tcpdump -F filter_rule -c10

这种情况适用于将表达式放置在文件中长期维护。

1.15 tcpdump -l # 对标准输出进行行缓冲

在需要同时观察抓包打印以及保存抓包记录的时候很有用。比如,可通过以下命令组合来达到此抓包时保存到文件的同时查看包的内容。

tcpdump -l | tee tt.pcap

这命令是使用 tee 来把 tcpdump 的输出同时放到文件 tt.pcap 和标准输出中。

tee 功能说明:读取标准输入的数据,并将其内容输出成文件。

tcpdump -l > tt.pcap & tail -f tt.pcap

这个命令是通过重定向操作 ‘>’ 写入到文件里。

二、tcpdump 过滤规则组合——逻辑运算

逻辑运算符:add、or、not

and:所有的条件都需要满足,也可以表示为 &&
or:只要有一个条件满足就可以,也可以表示为 ||
not:取反,也可以使用 !
and 优先级大于 or

and 例子:抓一个来自 100.100.30.26 主机、80 端口的包:tcpdump src 100.100.30.26 and port 80

or 例子:抓取 UDP 53 端口或者 TCP 53 端口的包(DNS协议的报文):tcpdump tcp port 53 or udp port 53

not 例子:抓取不是 22 端口的报文:tcpdump not tcp port 22

多个过滤器进行组合:需要用到括号,而括号在 shell 中是特殊符号,因此你需要使用引号将其包含:tcpdump “src 10.0.2.4 and (dst port 3389 or 22)”

练习案例:监听主机 192.168.56.1 和 192.168.56.210 之间 ip 协议的80端口的且排除www.baidu.com 通信的所有数据包:

tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host! www.baidu.com
tcpdump ip dst 192.168.56.1 and src 192.168.56.210 and port 80 and host not www.baidu.com

即 not 和 !都是相同的取反的意思。

三、tcpdump 过滤规则——高级过滤

基于包大小进行过滤:查看指定大小的数据包

案例:抓取包大小小于 32 bytes 的数据包

tcpdump less 32

案例:抓取包大小大于 300 bytes 的数据包

tcpdump greater 300

四、tcpdump 过滤规则和参数总结

在这里插入图片描述

### 回答1: PSPICE 17.2 是一种用于电子电路仿真和分析的软件工具。下面是一份简单的 PSpice 17.2 使用初级教程: 1. 安装和启动:首先,你需要下载并安装 PSpice 17.2 软件。安装完成后,双击图标启动软件。 2. 创建电路:在软件界面上,选择“文件”>“新建”,然后在电路编辑器中创建你的电路。你可以从元件库中选择组件,并将其拖放到画布上。连接元件的引脚以构建电路。 3. 设置元件参数:双击元件以打开元件参数设置对话框。在对话框中,设置元件的值、名称和其他参数。对于电阻、电容等基本元件,可以直接输入数值。 4. 设置仿真配置:选择“仿真”>“设置和校验”,然后在仿真设置对话框中选择仿真的类型和参数。你可以选择直流分析、交流分析、暂态分析等。设置仿真参数后,点击“确定”。 5. 运行仿真:选择“仿真”>“运行”来启动仿真。在仿真过程中,软件将模拟电路的响应,并将结果输出到仿真波形窗口中。 6. 查看仿真结果:在仿真波形窗口中,你可以查看各个元件的电流、电压等参数随时间变化的波形。你还可以对波形进行放大、缩小、平移等操作,以更详细地分析电路的性能。 7. 保存和导出结果:在仿真过程中,你可以选择将结果保存为文件或导出为其他格式,如图像文件或数据文件。 以上是 PSpice 17.2 使用初级教程的基本步骤。随着实践的深入,你可以进一步了解复杂电路的建模和分析方法,并尝试更高级的功能和技术。 ### 回答2: PSPICE 17.2是一款电子电路仿真软件,用于对电路进行分析和验证。以下是PSPICE 17.2的使用初级教程: 1. 下载和安装:在官方网站上下载PSPICE 17.2并进行安装。 2. 组件库:打开PSPICE软件后,点击“Capture CIS”图标,进入组件库界面。选择适当的电子元件,如电阻、电容、二极管等,将它们拖放到画布上。 3. 电路连接:在画布上拖放所需元件后,使用导线工具连接它们。点击导线图标,选择合适的连接方式,并将其拖动到适当的端口上。 4. 参数设定:双击元件,弹出元件属性对话框。在这里设置元件的数值,例如电阻的阻值、电容的电容值等。 5. 电源设置:在画布上点击右键,选择“Power Sources”,然后选择适当的电源,如直流电源或交流电源。设置电源的电压或电流数值。 6. 仿真设置:点击画布上方的“PSpice”选项,选择“Edit Simulation Profile”打开仿真配置对话框。在仿真配置中,设置仿真参数,如仿真类型(直流、交流、脉冲等)、仿真时间等。 7. 仿真运行:在仿真配置对话框中点击“Run”按钮,开始进行电路仿真运行。仿真完成后,可以查看并分析仿真结果,如电流、电压、功率等。 8. 结果分析:通过菜单栏中的“PSpice>Probe”选项,打开特定信号的仿真结果。通过选择信号节点,可以显示该信号的波形、幅值和频谱等信息。 9. 数据输出:仿真结束后,可以通过“PSpice>Results”菜单栏选项,导出仿真结果到文本文件,以供后续分析。 10. 误差调整:如果仿真结果与预期不符,可以检查电路连接、元件参数等以找出问题。根据需要进行调整,重新运行仿真以验证改进效果。 以上就是PSPICE 17.2使用初级教程的简要介绍。在使用过程中,请参考软件的帮助文件和官方文档,以获取更详细的指导和解决方法。任何新的软件都需要不断的实践和尝试,希望这个教程能对你有所帮助。 ### 回答3: PSPICE 17.2是一款常用的电路仿真软件,用于电路设计和分析。下面是一个简要的PSPICE 17.2的初级教程: 1. 下载和安装:首先,从官方网站下载PSPICE 17.2,并按照安装向导进行安装。安装完成后,打开软件。 2. 创建新工程:在PSPICE 主界面上,点击“File”菜单,然后选择“New Project”来创建一个新的工程。给工程起一个适当的名字,并选择工程的存储位置。 3. 添加电路元件:在工程界面上,点击“Place”图标,然后选择不同的元件来构建你的电路。你可以从库中选择各种电子元件,如电阻、电容、电感等,并将它们拖放到工程界面上。 4. 连接元件:选择“Wire”图标,然后点击元件的引脚来连接它们。确保连接顺序正确,以保证电路的正确性。 5. 设置元件参数:对于每个添加的元件,你需要设置它们的参数。右键点击元件,选择“Edit Propertiess”,然后在弹出的窗口中输入适当的参数值。 6. 添加电源:在电路中添加电源,以提供电路所需的电能。选择“Place”图标,然后选择合适的电源元件并将其拖放到电路中。同样,设置电源的参数值。 7. 设置仿真配置:在工程界面上,点击“PSpice”菜单,然后选择“Edit Simulation Profile”来设置仿真配置参数。你可以选择仿真类型、仿真时间和仿真步长等。 8. 运行仿真:点击“PSpice”菜单,选择“Run”来运行仿真。PSPICE将自动运行仿真并显示结果。 9. 分析和优化:根据仿真结果,可以分析和优化电路的性能。你可以观察电流、电压和功率等参数,以评估电路的性能,并根据需要进行调整。 10. 保存和导出结果:在分析和优化完成后,可以保存你的工程并导出结果。点击“File”菜单,选择“Save Project”来保存工程,然后选择“Outut”菜单,选择“Export”来导出结果。 以上是PSPICE 17.2的初级教程的简要介绍。通过以上步骤,你可以开始使用PSPICE 17.2进行电路设计和仿真。在实践中不断探索和学习,你将成为一个熟练的PSPICE用户。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炫彩@之星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值