tcpdump是Linux中强大的网络数据采集分析工具之一。tcpdump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息

1. 常用的参数

$ tcpdump              	    # 默认情况下,直接启动tcpdump将监视第一个网络接口(非lo口)上所有流通的数据包。
$ tcpdump -i eth1      	    # 【参数】-i,指定网卡,如eth0、eth1。 
$ tcpdump -Q out            # 【参数】-Q,指定输出还是输出,如in、out、inout
$ tcpdump -c 10			   # 【参数】-c,指定抓取包的数量
$ tcpdump -X     		   # 【参数】-X, 打印出抓取数据的内容,会以16进制和ASCII两种方式同时输出。-XX,更加详细内容
$ tcpdump -v			  # 【参数】-v,显示详细的包头信息。-vv,-vvv更加详细
$ tcpdump -s 1024          # 【参数】-s, 指定截取包的长度。默认65535。如果包的长度超过截取的长度,
						 #	发生截取时,输出行会输出[|proto]的标志。但是设置的长度越长,包的处理时间也会变长
$ tcpdump -w test		  # 【参数】-w, 将抓取的数据存到文件test中
$ tcpdump -r test          # 【参数】-r ,从test中读取数据,显示出来

注意: 以上参数可以搭配使用。也可以与后面的关键字搭配使用

2. 常用的关键字

$ tcpdump dst 192.216.20.66	     # 【关键字】dir  抓取 指定接收端ID的包
$ tcpdump src 192.216.20.144     # 【关键字】src  抓取 指定发送端IP的包
$ tcpdump host 192.216.20.66	# 【关键字】host  抓取 指定主机发送和接收的数据包
$ tcpdump port 22			   # 【关键字】port  抓取 指定端口的IP的包
$ tcpdump udp				  #  【关键字】 udp tcp 指定抓取协议类型。
$ tcpdump tcp

注意:关键字在使用过程中需要用逻辑运算符或者逻辑运算语句进行连接,这点区别上面提到的参数的用法。

常用的逻辑运算语句有:and、or &&、 ||

取非运算符: not 、 ! (实测在使用取非运算符时,也需要用与或运算符进行连接,否则报语法错误)

例子:

$ tcpdump -i eth0 dst 192.216.20.141 and not port 22 and udp -X -c 10
# -i eth0  指定网卡 etho
# dir  指定抓取发给192.216.20.141的包
# not port  排除端口 22  不接受端口为22的包
# udp 指定协议为udp
# -X  打印出内容 12进制和ASCII的方式
# -c  只抓取10个包

此外:tcpdump可以与grep指定配合使用,来对数据进行过滤。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐