当前位置: 首页 > Linux

Linux抓包神器tcpdump

时间:2023-04-06 05:44:05 Linux

tcpdump介绍tcpdump是一款运行在Linux平台上的强大的网络抓包工具。熟悉使用tcpdump可以帮助你分析和调试网络数据。tcpdump语法tcpdump[-adeflnNOpqStvx][-c<数据包数量>][-dd][-ddd][-F<表达式文件>][-i<网络接口>][-r<数据包文件>][-s][-tt][-T][-vv][-w][outputdatafield]tcpdump参数-a   将网络地址和广播地址转化为一个名字;-d   将匹配信息包的代码以人们可以理解的汇编格式给出;-dd  将以c语言程序段的格式给出匹配信息包的编码;-ddd  给出十进制形式的匹配信息包编码;-e   在输出行打印数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议;-f   将以形式打印出外部互联网地址数字;-l   将标准输出变成缓冲行;-n   指定数据包中监听的每个域名都转换为IP地址显示后,不将网络地址转换为名称;-nn:指定将每个监控数据包中的域名转换为IP,端口由应用名转换为端口号,然后在每行输出中显示-t   不打印时间戳;-v   输出稍微详细的信息,例如ip包中可以包含ttl和服务类型信息;-vv  输出详细的消息信息;-c   收到的数据包达到指定数量后,tcpdump将停止;-F   从指定文件中读取表达式,忽略其他表达式;-i   指定要监控的网络接口;-p:连接网卡设置为非混杂模式,不能与主机或广播一起使用-r   从指定文件中读取包(这些包一般由-w选项生成);-w   直接把包写入文件,不解析打印出来;-ssnaplensnaplen表示从数据包中截获的字节数。0表示不截断数据包,抓取完整的数据包。默认情况下,tcpdump只显示部分数据包,默认为68字节。-T   直接将监控包解释为指定类型的报文,常见类型有rpc(远程过程调用)和snmp(简单网络管理协议;)-X告诉tcpdump命令协议头和包内容需要保持完整显示(tcpdump会以十六进制和ASCII显示),这是分析协议的绝对利器。监控所有端口,直接显示ip地址>tcpdump-nS显示更详细的数据包,包括tos,ttl,checksum等.>tcpdump-nnvvXShost:过滤某台主机的数据包>tcpdumphost1.2.3.4src,dst:过滤源地址和目的地址>tcpdumpsrc1.2.3.4>tcpdumpdst1.2.3.4net:过滤某网段的数据>tcpdumpnet1.2.3.0/24过滤某种协议的数据,支持tcp、udp和icmp>tcpdumpicmp过滤通过某个端口的数据报>tcpdumpport3306src/dst,port,protocol:三者结合>tcpdumpsrcport22和tcp>tcpdumpudpandsrcport25捕获指定范围的端口>tcpdumpportrange21-23按数据包大小、数据报大小过滤请求,单位是字节>tcpdumpless32>tcpdumpgreater128>tcpdump>32>tcpdump<=128Capturepacketsandoutputtofile>tcpdump-wrumenz.pcapport80从文件读取数据包并显示在屏幕上>tcpdump-nXrrumenz.pcaphostwebsourceaddressis192.168.1.110,destinationportis3306datagram>tcpdump-nnvSsrc192.168.1.110和dst端口3306数据报从192.168网段到10网段或172.31>;tcpdump-nvXsrcnet192.168.0.0/16anddatnet10.0.0.0/8or172.31.0.0/16tcpdump输出解释21:27:06.995846IP(tos0x0,ttl64,id45646,offset0,flags[DF],protoTCP(6),length64)192.168.1.110.40411>192.168.1.123.80:Flags[S],cksum0xa730(correct),seq992042666,win65535,options[mss1460,nop,wscale4,nop,nop,TSval663433143ecr0,sackOK,eol],length021:27:07.030487IP(tos0x0,ttl51,id0,offset0,flags[DF],protoTCP(6),length44)192.168。1.123.80>192.168.1.110.40411:标志[S.],cksum0xedc0(正确),seq2147006684,ack992042667,win14600,选项[mss1440],长度021:27:07tl,IP,长度021:27:07.03tos264,id59119,offset0,flags[DF],protoTCP(6),length40)192.168.1.110.40411>192.168.1.123.80:Flags[.],cksum0x3e72(correct),ack2147006685,5win65,长度为0的最基本也是最重要的信息就是数据报的源地址/端口和目的地址/端口。上例中的第一个数据报,源地址ip为192.168.1.110,源端口为40411,目的地址为192.168.1.123,目的端口为80。>符号代表数据的方向。以上三个数据也是就是tcp协议的三次握手过程。第一个是SYN报文,可以通过Flags[S]看到。下面是常见的TCP数据包的Flags:[S]:SYN(开始连接)[.]:NoneFlag[P]:PSH(推送数据)[F]:FIN(结束连接)[R]:RST(重复connection),第二条数据的[S.]表示SYN-ACK,即SYN报文的响应报文。原文链接:https://rumenz.com/rumenbiji/...微信公众号:入门站