tcpdump是一款强大的网络抓包工具,它使用libpcap库来抓取网络数据包,这个库在几乎在所有的LinuxUnix中都有。熟悉tcpdump的使用能够帮助你分析调试网络数据,本文将通过一个个具体的示例来介绍它在不同场景下的使用方法。不管你是系统管理员,程序员,云原生工程师还是yaml工程师,掌握tcpdump的使用都能让你如虎添翼,升职加薪。1。基本语法和使用方法 tcpdump的常用参数如下:tcpdumpieth0nns0vport80复制代码i:选择要捕获的接口,通常是以太网卡或无线网卡,也可以是vlan或其他特殊接口。如果该系统上只有一个网络接口,则无需指定。nn:单个n表示不解析域名,直接显示IP;两个n表示不解析域名和端口。这样不仅方便查看IP和端口号,而且在抓取大量数据时非常高效,因为域名解析会降低抓取速度。s0:tcpdump默认只会截取前96字节的内容,要想截取所有的报文内容,可以使用snumber,number就是你要截取的报文字节数,如果是0的话,表示截取报文全部内容。v:使用v,vv和vvv来显示更多的详细信息,通常会显示更多与特定协议相关的信息。port80:这是一个常见的端口过滤器,表示仅抓取80端口上的流量,通常是HTTP。 额外再介绍几个常用参数:p:不让网络接口进入混杂模式。默认情况下使用tcpdump抓包时,会让网络接口进入混杂模式。一般计算机网卡都工作在非混杂模式下,此时网卡只接受来自网络端口的目的地址指向自己的数据。当网卡工作在混杂模式下时,网卡将来自接口的所有数据都捕获并交给相应的驱动程序。如果设备接入的交换机开启了混杂模式,使用p选项可以有效地过滤噪声。e:显示数据链路层信息。默认情况下tcpdump不会显示数据链路层信息,使用e选项可以显示源和目的MAC地址,以及VLANtag信息。例如:tcpdumpnec5notip6tcpdump:verboseoutputsuppressed,usevorvvforfullprotocoldecodelisteningonbrlan,linktypeEN10MB(Ethernet),capturesize262144bytes18:27:53。61986524:5e:be:0c:17:af00:e2:69:23:d3:3b,ethertypeIPv4(0x0800),length1162:192。168。100。20。51410180。176。26。193。58695:Flags〔。〕,seq2045333376:2045334484,ack3398690514,win751,length110818:27:53。62649000:e2:69:23:d3:3b24:5e:be:0c:17:af,ethertypeIPv4(0x0800),length68:220。173。179。66。36017192。168。100。20。51410:UDP,length2618:27:53。62689324:5e:be:0c:17:af00:e2:69:23:d3:3b,ethertypeIPv4(0x0800),length1444:192。168。100。20。51410220。173。179。66。36017:UDP,length140218:27:53。62883700:e2:69:23:d3:3b24:5e:be:0c:17:af,ethertypeIPv4(0x0800),length1324:46。97。169。182。6881192。168。100。20。59145:Flags〔P。〕,seq3058450381:3058451651,ack14349180,win502,length127018:27:53。62909624:5e:be:0c:17:af00:e2:69:23:d3:3b,ethertypeIPv4(0x0800),length54:192。168。100。20。59145192。168。100。1。12345:Flags〔。〕,ack3058451651,win6350,length05packetscaptured复制代码显示ASCII字符串 A表示使用ASCII字符串打印报文的全部数据,这样可以使读取更加简单,方便使用grep等工具解析输出内容。X表示同时使用十六进制和ASCII字符串打印报文的全部数据。这两个参数不能一起使用。例如:tcpdumpAs0port80复制代码抓取特定协议的数据 后面可以跟上协议名称来过滤特定协议的流量,以UDP为例,可以加上参数udp或protocol17,这两个命令意思相同。tcpdumpieth0udptcpdumpieth0proto17复制代码 同理,tcp与protocol6意思相同。抓取特定主机的数据 使用过滤器host可以抓取特定目的地和源IP地址的流量。tcpdumpieth0host10。10。1。1复制代码 也可以使用src或dst只抓取源或目的地:tcpdumpieth0dst10。10。1。20复制代码将抓取的数据写入文件 使用tcpdump截取数据报文的时候,默认会打印到屏幕的默认输出,你会看到按照顺序和格式,很多的数据一行行快速闪过,根本来不及看清楚所有的内容。不过,tcpdump提供了把截取的数据保存到文件的功能,以便后面使用其他图形工具(比如wireshark,Snort)来分析。 w选项用来把数据报文输出到文件:tcpdumpieth0s0wtest。pcap复制代码行缓冲模式 如果想实时将抓取到的数据通过管道传递给其他工具来处理,需要使用l选项来开启行缓冲模式(或使用c选项来开启数据包缓冲模式)。使用l选项可以将输出通过立即发送给其他命令,其他命令会立即响应。tcpdumpieth0s0lport80grepServer:复制代码组合过滤器 过滤的真正强大之处在于你可以随意组合它们,而连接它们的逻辑就是常用的与AND、或OR和非not!。andororornotor!复制代码2。过滤器 关于tcpdump的过滤器,这里有必要单独介绍一下。 机器上的网络报文数量异常的多,很多时候我们只关系和具体问题有关的数据报(比如访问某个网站的数据,或者icmp超时的报文等等),而这些数据只占到很小的一部分。把所有的数据截取下来,从里面找到想要的信息无疑是一件很费时费力的工作。而tcpdump提供了灵活的语法可以精确地截取关心的数据报,简化分析的工作量。这些选择数据包的语句就是过滤器(filter)!Host过滤器 Host过滤器用来过滤某个主机的数据报文。例如:tcpdumphost1。2。3。4复制代码 该命令会抓取所有发往主机1。2。3。4或者从主机1。2。3。4发出的流量。如果想只抓取从该主机发出的流量,可以使用下面的命令:tcpdumpsrchost1。2。3。4复制代码Network过滤器 Network过滤器用来过滤某个网段的数据,使用的是CIDR模式。可以使用四元组(x。x。x。x)、三元组(x。x。x)、二元组(x。x)和一元组(x)。四元组就是指定某个主机,三元组表示子网掩码为255。255。255。0,二元组表示子网掩码为255。255。0。0,一元组表示子网掩码为255。0。0。0。例如, 抓取所有发往网段192。168。1。x或从网段192。168。1。x发出的流量:tcpdumpnet192。168。1复制代码 抓取所有发往网段10。x。x。x或从网段10。x。x。x发出的流量:tcpdumpnet10复制代码 和Host过滤器一样,这里也可以指定源和目的:tcpdumpsrcnet10复制代码 也可以使用CIDR格式:tcpdumpsrcnet172。16。0。012复制代码Proto过滤器 Proto过滤器用来过滤某个协议的数据,关键字为proto,可省略。proto后面可以跟上协议号或协议名称,支持icmp,igmp,igrp,pim,ah,esp,carp,vrrp,udp和tcp。因为通常的协议名称是保留字段,所以在于proto指令一起使用时,必须根据shell类型使用一个或两个反斜杠()来转义。Linux中的shell需要使用两个反斜杠来转义,MacOS只需要一个。 例如,抓取icmp协议的报文:tcpdumpnprotoicmp或者tcpdumpnicmp复制代码Port过滤器 Port过滤器用来过滤通过某个端口的数据报文,关键字为port。例如:tcpdumpport389复制代码3。理解tcpdump的输出 截取数据只是第一步,第二步就是理解这些数据,下面就解释一下tcpdump命令输出各部分的意义。21:27:06。995846IP(tos0x0,ttl64,id45646,offset0,flags〔DF〕,protoTCP(6),length64)192。168。1。106。56166124。192。132。54。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)124。192。132。54。80192。168。1。106。56166:Flags〔S。〕,cksum0xedc0(correct),seq2147006684,ack992042667,win14600,options〔mss1440〕,length021:27:07。030527IP(tos0x0,ttl64,id59119,offset0,flags〔DF〕,protoTCP(6),length40)192。168。1。106。56166124。192。132。54。80:Flags〔。〕,cksum0x3e72(correct),ack2147006685,win65535,length0复制代码 最基本也是最重要的信息就是数据报的源地址端口和目的地址端口,上面的例子第一条数据报中,源地址ip是192。168。1。106,源端口是56166,目的地址是124。192。132。54,目的端口是80。符号代表数据的方向。 此外,上面的三条数据还是tcp协议的三次握手过程,第一条就是SYN报文,这个可以通过Flags〔S〕看出。下面是常见的TCP报文的Flags:〔S〕:SYN(开始连接)〔。〕:没有Flag〔P〕:PSH(推送数据)〔F〕:FIN(结束连接)〔R〕:RST(重置连接) 而第二条数据的〔S。〕表示SYNACK,就是SYN报文的应答报文。4。例子 下面给出一些具体的例子,每个例子都可以使用多种方法来获得相同的输出,你使用的方法取决于所需的输出和网络上的流量。我们在排障时,通常只想获取自己想要的内容,可以通过过滤器和ASCII输出并结合管道与grep、cut、awk等工具来实现此目的。 例如,在抓取HTTP请求和响应数据包时,可以通过删除标志SYNACKFIN来过滤噪声,但还有更简单的方法,那就是通过管道传递给grep。在达到目的的同时,我们要选择最简单最高效的方法。下面来看例子。提取HTTP用户代理 从HTTP请求头中提取HTTP用户代理:tcpdumpnnAs1500lgrepUserAgent:复制代码 通过egrep可以同时提取用户代理和主机名(或其他头文件):tcpdumpnnAs1500legrepiUserAgent:Host:复制代码只抓取HTTPGET和POST流量 抓取HTTPGET流量:tcpdumps0Avvtcp〔((tcp〔12:1〕0xf0)2):4〕0x47455420复制代码 也可以抓取HTTPPOST请求流量:tcpdumps0Avvtcp〔((tcp〔12:1〕0xf0)2):4〕0x504f5354复制代码 注意:该方法不能保证抓取到HTTPPOST有效数据流量,因为一个POST请求会被分割为多个TCP数据包。 上述两个表达式中的十六进制将会与GET和POST请求的ASCII字符串匹配。例如,tcp〔((tcp〔12:1〕0xf0)2):4〕首先会确定我们感兴趣的字节的位置(在TCPheader之后),然后选择我们希望匹配的4个字节。提取HTTP请求的URL 提取HTTP请求的主机名和路径:tcpdumps0vnlegrepiPOSTGETHost:tcpdump:listeningonenp7s0,linktypeEN10MB(Ethernet),capturesize262144bytesPOSTwplogin。phpHTTP1。1Host:dev。example。comGETwplogin。phpHTTP1。1Host:dev。example。comGETfavicon。icoHTTP1。1Host:dev。example。comGETHTTP1。1Host:dev。example。com复制代码提取HTTPPOST请求中的密码 从HTTPPOST请求中提取密码和主机名:tcpdumps0AnlegrepiPOSTpwdpasswdpasswordHost:tcpdump:verboseoutputsuppressed,usevorvvforfullprotocoldecodelisteningonenp7s0,linktypeEN10MB(Ethernet),capturesize262144bytes11:25:54。799014IP10。10。1。30。3922410。10。1。125。80:Flags〔P。〕,seq1458768667:1458770008,ack2440130792,win704,options〔nop,nop,TSval461552632ecr208900561〕,length1341:HTTP:POSTwplogin。phpHTTP1。1。。。。。s。。POSTwplogin。phpHTTP1。1Host:dev。example。com。。。。。s。。logadminpwdnotmypasswordwpsubmitLogInredirecttohttp3A2F2Fdev。example。com2Fwpadmin2Ftestcookie1复制代码提取Cookies 提取SetCookie(服务端的Cookie)和Cookie(客户端的Cookie):tcpdumpnnAs0legrepiSetCookieHost:Cookie:tcpdump:verboseoutputsuppressed,usevorvvforfullprotocoldecodelisteningonwlp58s0,linktypeEN10MB(Ethernet),capturesize262144bytesHost:dev。example。comCookie:wordpress86be02xxxxxxxxxxxxxxxxxxxc43admin7C152xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfb3e15c744fdd6;gaGA1。2。21343434343421934;gidGA1。2。927343434349426;wordpresstestcookieWPCookiecheck;wordpressloggedin86be654654645645645654645653fc43admin7C15275102testtesttesttestab7a61e;wpsettingstime11527337439复制代码抓取ICMP数据包 查看网络上的所有ICMP数据包:tcpdumpnicmptcpdump:verboseoutputsuppressed,usevorvvforfullprotocoldecodelisteningonenp7s0,linktypeEN10MB(Ethernet),capturesize262144bytes11:34:21。590380IP10。10。1。21710。10。1。30:ICMPechorequest,id27948,seq1,length6411:34:21。590434IP10。10。1。3010。10。1。217:ICMPechoreply,id27948,seq1,length6411:34:27。680307IP10。10。1。15910。10。1。1:ICMP10。10。1。189udpport59619unreachable,length115复制代码抓取非ECHOREPLY类型的ICMP数据包 通过排除echo和reply类型的数据包使抓取到的数据包不包括标准的ping包:tcpdumpicmp〔icmptype〕!icmpechoandicmp〔icmptype〕!icmpechoreplytcpdump:verboseoutputsuppressed,usevorvvforfullprotocoldecodelisteningonenp7s0,linktypeEN10MB(Ethernet),capturesize262144bytes11:37:04。041037IP10。10。1。18910。10。1。20:ICMP10。10。1。189udpport36078unreachable,length156复制代码抓取SMTPPOP3协议的邮件 可以提取电子邮件的正文和其他数据。例如,只提取电子邮件的收件人:tcpdumpnnlport25grepiMAILFROMRCPTTO复制代码抓取NTP服务的查询和响应tcpdumpdstport123tcpdump:verboseoutputsuppressed,usevorvvforfullprotocoldecodelisteningoneth0,linktypeEN10MB(Ethernet),capturesize65535bytes21:02:19。112502IPtest33。ntp199。30。140。74。ntp:NTPv4,Client,length4821:02:19。113888IP216。239。35。0。ntptest33。ntp:NTPv4,Server,length4821:02:20。150347IPtest33。ntp216。239。35。0。ntp:NTPv4,Client,length4821:02:20。150991IP216。239。35。0。ntptest33。ntp:NTPv4,Server,length48复制代码抓取SNMP服务的查询和响应 通过SNMP服务,渗透测试人员可以获取大量的设备和系统信息。在这些信息中,系统信息最为关键,如操作系统版本、内核版本等。使用SNMP协议快速扫描程序onesixtyone,可以看到目标系统的信息:onesixtyone10。10。1。10publicScanning1hosts,1communities10。10。1。10〔public〕Linuxtest334。15。020generic21UbuntuSMPTueApr2406:16:15UTC2018x8664复制代码 可以通过tcpdump抓取GetRequest和GetResponse:tcpdumpns0port161andudptcpdump:verboseoutputsuppressed,usevorvvforfullprotocoldecodelisteningonwlp58s0,linktypeEN10MB(Ethernet),capturesize262144bytes23:39:13。725522IP10。10。1。159。3682610。10。1。20。161:GetRequest(28)。1。3。6。1。2。1。1。1。023:39:13。728789IP10。10。1。20。16110。10。1。159。36826:GetResponse(109)。1。3。6。1。2。1。1。1。0Linuxtestmachine4。15。020generic21UbuntuSMPTueApr2406:16:15UTC2018x8664复制代码切割pcap文件 当抓取大量数据并写入文件时,可以自动切割为多个大小相同的文件。例如,下面的命令表示每3600秒创建一个新文件capture(hour)。pcap,每个文件大小不超过2001000000字节:tcpdumpwtmpcaptureH。pcapG3600C200复制代码 这些文件的命名为capture{124}。pcap,24小时之后,之前的文件就会被覆盖。抓取IPv6流量 可以通过过滤器ip6来抓取IPv6流量,同时可以指定协议如TCP:tcpdumpnnip6proto6复制代码 从之前保存的文件中读取IPv6UDP数据报文:tcpdumpnripv6test。pcapip6proto17复制代码检测端口扫描 在下面的例子中,你会发现抓取到的报文的源和目的一直不变,且带有标志位〔S〕和〔R〕,它们与一系列看似随机的目标端口进行匹配。当发送SYN之后,如果目标主机的端口没有打开,就会返回一个RESET。这是Nmap等端口扫描工具的标准做法。tcpdumpnn21:46:19。693601IP10。10。1。10。6046010。10。1。199。5432:Flags〔S〕,seq116466344,win29200,options〔mss1460,sackOK,TSval3547090332ecr0,nop,wscale7〕,length021:46:19。693626IP10。10。1。10。3547010。10。1。199。513:Flags〔S〕,seq3400074709,win29200,options〔mss1460,sackOK,TSval3547090332ecr0,nop,wscale7〕,length021:46:19。693762IP10。10。1。10。4424410。10。1。199。389:Flags〔S〕,seq2214070267,win29200,options〔mss1460,sackOK,TSval3547090333ecr0,nop,wscale7〕,length021:46:19。693772IP10。10。1。199。38910。10。1。10。44244:Flags〔R。〕,seq0,ack2214070268,win0,length021:46:19。693783IP10。10。1。10。3517210。10。1。199。1433:Flags〔S〕,seq2358257571,win29200,options〔mss1460,sackOK,TSval3547090333ecr0,nop,wscale7〕,length021:46:19。693826IP10。10。1。10。3302210。10。1。199。49153:Flags〔S〕,seq2406028551,win29200,options〔mss1460,sackOK,TSval3547090333ecr0,nop,wscale7〕,length021:46:19。695567IP10。10。1。10。5513010。10。1。199。49154:Flags〔S〕,seq3230403372,win29200,options〔mss1460,sackOK,TSval3547090334ecr0,nop,wscale7〕,length021:46:19。695590IP10。10。1。199。4915410。10。1。10。55130:Flags〔R。〕,seq0,ack3230403373,win0,length021:46:19。695608IP10。10。1。10。3346010。10。1。199。49152:Flags〔S〕,seq3289070068,win29200,options〔mss1460,sackOK,TSval3547090335ecr0,nop,wscale7〕,length021:46:19。695622IP10。10。1。199。4915210。10。1。10。33460:Flags〔R。〕,seq0,ack3289070069,win0,length021:46:19。695637IP10。10。1。10。3494010。10。1。199。1029:Flags〔S〕,seq140319147,win29200,options〔mss1460,sackOK,TSval3547090335ecr0,nop,wscale7〕,length021:46:19。695650IP10。10。1。199。102910。10。1。10。34940:Flags〔R。〕,seq0,ack140319148,win0,length021:46:19。695664IP10。10。1。10。4564810。10。1。199。5060:Flags〔S〕,seq2203629201,win29200,options〔mss1460,sackOK,TSval3547090335ecr0,nop,wscale7〕,length021:46:19。695775IP10。10。1。10。4902810。10。1。199。2000:Flags〔S〕,seq635990431,win29200,options〔mss1460,sackOK,TSval3547090335ecr0,nop,wscale7〕,length021:46:19。695790IP10。10。1。199。200010。10。1。10。49028:Flags〔R。〕,seq0,ack635990432,win0,length0复制代码过滤NmapNSE脚本测试结果 本例中NmapNSE测试脚本httpenum。nse用来检测HTTP服务的合法URL。 在执行脚本测试的主机上:nmapp80scripthttpenum。nsetargetip复制代码 在目标主机上:tcpdumpnnport80grepGETGETw3perlHTTP1。1GETwagoraHTTP1。1GETwayboardHTTP1。1GETweb800foHTTP1。1GETwebaccessHTTP1。1GETwebadminHTTP1。1GETwebAdminHTTP1。1复制代码抓取DNS请求和响应 向Google公共DNS发起的出站DNS请求和A记录响应可以通过tcpdump抓取到:tcpdumpiwlp58s0s0port53tcpdump:verboseoutputsuppressed,usevorvvforfullprotocoldecodelisteningonwlp58s0,linktypeEN10MB(Ethernet),capturesize262144bytes14:19:06。879799IPtest。53852googlepublicdnsa。google。com。domain:26977〔1au〕A?play。google。com。(44)14:19:07。022618IPgooglepublicdnsa。google。com。domaintest。53852:26977101A216。58。203。110(60)复制代码抓取HTTP有效数据包 抓取80端口的HTTP有效数据包,排除TCP连接建立过程的数据包(SYNFINACK):tcpdumptcpport80and(((ip〔2:2〕((ip〔0〕0xf)2))((tcp〔12〕0xf0)2))!0)复制代码将输出内容重定向到Wireshark 通常Wireshark(或tshark)比tcpdump更容易分析应用层协议。一般的做法是在远程服务器上先使用tcpdump抓取数据并写入文件,然后再将文件拷贝到本地工作站上用Wireshark分析。 还有一种更高效的方法,可以通过ssh连接将抓取到的数据实时发送给Wireshark进行分析。以MacOS系统为例,可以通过brewcaskinstallwireshark来安装,然后通过下面的命令来分析:sshrootremotesystemtcpdumps0c1000nnwnotport22ApplicationsWireshark。appContentsMacOSWiresharkki复制代码 例如,如果想分析DNS协议,可以使用下面的命令:sshrootremotesystemtcpdumps0c1000nnwport53ApplicationsWireshark。appContentsMacOSWiresharkki复制代码 抓取到的数据: c选项用来限制抓取数据的大小。如果不限制大小,就只能通过ctrlc来停止抓取,这样一来不仅关闭了tcpdump,也关闭了wireshark。找出发包最多的IP 找出一段时间内发包最多的IP,或者从一堆报文中找出发包最多的IP,可以使用下面的命令:tcpdumpnnntc200cutf1,2,3,4d。sortuniqcsortnrheadn20tcpdump:verboseoutputsuppressed,usevorvvforfullprotocoldecodelisteningonenp7s0,linktypeEN10MB(Ethernet),capturesize262144bytes200packetscaptured261packetsreceivedbyfilter0packetsdroppedbykernel108IP10。10。211。18191IP10。10。1。301IP10。10。1。50复制代码cutf1,2,3,4d。:以。为分隔符,打印出每行的前四列。即IP地址。sortuniqc:排序并计数sortnr:按照数值大小逆向排序抓取用户名和密码 本例将重点放在标准纯文本协议上,过滤出于用户名和密码相关的报文:tcpdumpporthttporportftporportsmtporportimaporportpop3orporttelnetlAegrepiB5passpwdlogloginuserusernamepwpasswpasswdpasswordpass:user:username:password:login:passuser复制代码抓取DHCP报文 最后一个例子,抓取DHCP服务的请求和响应报文,67为DHCP端口,68为客户机端口。tcpdumpvnport67or68tcpdump:listeningonenp7s0,linktypeEN10MB(Ethernet),capturesize262144bytes14:37:50。059662IP(tos0x10,ttl128,id0,offset0,flags〔none〕,protoUDP(17),length328)0。0。0。0。68255。255。255。255。67:BOOTPDHCP,Requestfrom00:0c:xx:xx:xx:d5,length300,xid0xc9779c2a,Flags〔none〕ClientEthernetAddress00:0c:xx:xx:xx:d5Vendorrfc1048ExtensionsMagicCookie0x63825363DHCPMessageOption53,length1:RequestRequestedIPOption50,length4:10。10。1。163HostnameOption12,length14:testubuntuParameterRequestOption55,length16:SubnetMask,BR,TimeZone,DefaultGatewayDomainName,DomainNameServer,Option119,HostnameNetbiosNameServer,NetbiosScope,MTU,ClasslessStaticRouteNTP,ClasslessStaticRouteMicrosoft,StaticRoute,Option25214:37:50。059667IP(tos0x10,ttl128,id0,offset0,flags〔none〕,protoUDP(17),length328)0。0。0。0。68255。255。255。255。67:BOOTPDHCP,Requestfrom00:0c:xx:xx:xx:d5,length300,xid0xc9779c2a,Flags〔none〕ClientEthernetAddress00:0c:xx:xx:xx:d5Vendorrfc1048ExtensionsMagicCookie0x63825363DHCPMessageOption53,length1:RequestRequestedIPOption50,length4:10。10。1。163HostnameOption12,length14:testubuntuParameterRequestOption55,length16:SubnetMask,BR,TimeZone,DefaultGatewayDomainName,DomainNameServer,Option119,HostnameNetbiosNameServer,NetbiosScope,MTU,ClasslessStaticRouteNTP,ClasslessStaticRouteMicrosoft,StaticRoute,Option25214:37:50。060780IP(tos0x0,ttl64,id53564,offset0,flags〔none〕,protoUDP(17),length339)10。10。1。1。6710。10。1。163。68:BOOTPDHCP,Reply,length311,xid0xc9779c2a,Flags〔none〕YourIP10。10。1。163ServerIP10。10。1。1ClientEthernetAddress00:0c:xx:xx:xx:d5Vendorrfc1048ExtensionsMagicCookie0x63825363DHCPMessageOption53,length1:ACKServerIDOption54,length4:10。10。1。1LeaseTimeOption51,length4:86400RNOption58,length4:43200RBOption59,length4:75600SubnetMaskOption1,length4:255。255。255。0BROption28,length4:10。10。1。255DomainNameServerOption6,length4:10。10。1。1HostnameOption12,length14:testubuntuT252Option252,length1:10DefaultGatewayOption3,length4:10。10。1。1复制代码5。总结 本文主要介绍了tcpdump的基本语法和使用方法,并通过一些示例来展示它强大的过滤功能。将tcpdump与wireshark进行组合可以发挥更强大的功效,本文也展示了如何优雅顺滑地结合tcpdump和wireshark。如果你想了解更多的细节,可以查看tcpdump的man手册。 作者:米开朗基杨 链接:https:juejin。impost5e64571bf265da57104393a1 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。