tcpdump(tcpdump指定ip抓包命令)

用简略的话来界说tcpdump,就是:dumpthetrafficonanetwork,根据运用者的界说对网络上的数据包进行截获的包剖析东西。

tcpdump能够将网络中传送的数据包的“头”完全截获下来供给剖析。它支持针对网络层、协议、主机、网络或端口的过滤,并供给and、or、not等逻辑语句来协助你去掉无用的信息。

tcpdump根据底层libpcap库开发,运行需求root权限。

一、tcpdump安装

环境虚拟机:vmware15.5.2os:ubuntu12.04

安装tcpdump

sudoapt-getinstalltcpdump

3.版别查看

tcpdump--h

tcpdumpversion4.0。

libpcapversion1.1.1表明libpcap的版别。

二、tcpdump参数

常用参数选项阐明:

参数含义-a将网络地址和播送地址转变成名字-c在收到指定的包的数目后,tcpdump就会中止;-d将匹配信息包的代码以人们能够了解的汇编格局给出;以可阅览的格局输出。-dd将匹配信息包的代码以c语言程序段的格局给出;-ddd将匹配信息包的代码以十进制的方式给出;-e在输出行打印出数据链路层的头部信息;-f将外部的Internet地址以数字的方式打印出来;-l使规范输出变为缓冲行方式;-n直接显现IP地址,不显现称号;-nn端口称号显现为数字方式,不显现称号;-t在输出的每一行不打印时刻戳;-v输出一个略微具体的信息,例如在ip包中能够包括ttl和服务类型的信息;-vv输出具体的报文信息;-F从指定的文件中读取表达式,疏忽其它的表达式;-i指定监听的网络接口;-r从指定的文件中读取包(这些包一般经过-w选项产生);-w直接将包写入文件中,并不剖析和打印出来;-T将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(长途过程调用)和snmp(简略网络办理协议;)

三、指令选项运用举例

1.截获主机收到和宣布的一切数据包。

指令:

tcpdump

阐明:

tcpdump截取包默许显现数据包的头部。

一般情况下,直接发动tcpdump将监督第一个网络接口上一切流过的数据包。

基础格局:时刻数据包类型源IP端口/协议>方针IP端口/协议协议具体信息

按下Ctrl+C会终止tcpdump指令。且会在结尾处生成计算信息。

终止tcpdump2.指定抓包数量-c

指定抓取2个数据包。

指令:

tcpdump-c2

阐明:

最后会自动生成计算信息。

【注意,已经切换到办理员了,虚拟机中要产生数据包,能够别的开一个窗口pingbaidu.com后边不再提示】

pingbaidu.com3.将抓包信息写入文件-w

运用-w选项指定记载文件。

指令:

tcpdump-c10-wtcpdump_test.log

阐明:

保存的文件不是文本格局,不能直接查看。tcpdump保存的文件的格局是几乎一切主流的抓包东西软件都能够读取。所以能够运用更易读的图形界面东西来查看记载文件。

4.读取记载文件-r

运用-r选项读取文件。

指令:

tcpdump-rtcpdump_test.log

![读取记载文件

5.打印出一切可工作的接口-D

指令:

tcpdump-D

其中网卡为eth0。

6.指定监控的网卡-i

指令:

tcpdump-ieth0

假如不指定网卡,默许tcpdump只会监督第一个网络接口,一般是eth0。

7.显现更具体的数据包信息-v-vv

选项-v,-vv能够显现更具体的抓包信息。

tcpdump-v

tcpdump-vv8.不运用域名反解-n

运用-n后,tcpdump会直接显现IP地址,不会显现域名(与netstat指令相似)。

9.增加抓包时刻戳-tttt选项

tcpdump的一切输出打印行中都会默许包括时刻戳信息;时刻戳信息的显现格局如下

hh:mm:ss.frac(nt:小时:分钟:秒.)

此时刻戳的精度与内核时刻精度一致,反映的是内核第一次看到对应数据包的时刻;

而数据包从物理线路传递到内核的时刻,以及内核花费在此包上的中止处理时刻都没有算进来;

运用-tttt选项,抓包结果中将包括抓包日期:

指令:

tcpdump-tttt

增加抓包时刻戳

四、条件过滤

1.过滤:指定需求抓取的协议

tcpdump能够只抓某种协议的包,支持指定以下协议:「ip,ip6,arp,tcp,udp,wlan」等。

指令:

tcpdumpudp

tcpdumpicmp

tcpdumptcp

tcpdumparp

2.过滤:指定协议的端口号

运用port参数,用于指定端口号。

指令:tcpdumptcpport80

运用portrange参数,用于指定端口范围。

指令:tcpdumptcpportrange1-1024

3.过滤:指定源与方针

src表明源。

dst表明方针。

指令:

tcpdumpsrcport8080

tcpdumpdstport80

4.过滤:指定特定主机的消息包

运用host指定需求监听的主机。

指令:

tcpdumphost192.168.1.113

注意:若运用了host参数运用了计算机名或域名。例tcpdumphostshi-pc,则无法再运用-n选项。

5.过滤:指定数据包巨细

运用greater(大于)与less(小于)能够指定数据包巨细的范围。

「例:只抓取大于1000字节的数据包。」

指令:

tcpdumpgreater1000

「例:只抓取小于10字节的数据包。」

指令:

tcpdumpless10
图片[1]-tcpdump(tcpdump指定ip抓包命令)-宏启网络科技丨崇尚专注-追求极致

五、逻辑表达式

运用根本逻辑组合拼装出更精细的过滤条件。

1.逻辑与

逻辑与联系,运用and。

指令:

tcpdumptcpandhost192.168.1.112

tcpdumptcpandsrc192.168.1.112andport8080

2.逻辑或

逻辑或联系,运用or。

指令:

tcpdumphost192.168.1.112or192.168.1.113

3.逻辑非

逻辑非联系,运用not,也能够运用!。

若运用!有必要与其后边的字符隔开一个空格。

例:当经过ssh协议长途运用tcpdump时,为了防止ssh的数据包的输出,所以一般需求制止ssh数据包的输出。

指令:

tcpdumpnottcpport22

tcpdump!tcpport22

4.括号

括号需求运用在引号内,或转意运用。否则会报错。

例:抓取非22端口,且主机为192.168.1.112和192.168.1.113的TCP数据包。

指令:

tcpdumpnottcpport22andhost192.168.1.112or192.168.1.113

tcpdump"nottcpport22andhost(192.168.1.112or192.168.1.113)"

tcpdumpnottcpport22andhost"(192.168.1.112or192.168.1.113)"

六、其他实例

1.打印一切进入或离开sundown的数据包.tcpdumphostsundown

2.截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通讯tcpdumphost210.27.48.1and(210.27.48.2or210.27.48.3)

3.假如想要获取主机210.27.48.1除了和主机210.27.48.2之外一切主机通讯的ip包,运用指令:tcpdumpiphost210.27.48.1and!210.27.48.2

4.监督一切送到主机hostname的数据包tcpdump-ieth0dsthosthostname

5.获取主机210.27.48.1接收或宣布的telnet包

23为telnet的端口

tcpdumptcpport23andhost210.27.48.1

6.监督本机的udp123端口

123为ntp的服务端口

tcpdumpudpport123

7.运用tcpdump抓取HTTP包tcpdump-XvvennSs0-ieth0tcp[20:2]=0x4745ortcp[20:2]=0x4854

0x4745为"GET"前两个字母"GE",0x4854为"HTTP"前两个字母"HT"。

tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是运用十六进制的方式直接打印输出的。

显然这不利于剖析网络故障,一般的解决办法是先运用带**-w参数的tcpdump截获数据并保存到文件中**,然后再运用其他程序(如Wireshark)进行解码剖析。当然也应该界说过滤规则,以防止捕获的数据包填满整个硬盘。

六、查看数据包完好内容

tcpdump默许不显现数据包的具体内容。

办法一:

运用-A参数能以ASCII码显现数据包。

例:只抓取1个数据包,并显现其内容。

指令:

tcpdump-c1-A

办法二:

运用-X参数能16进制数与ASCII码共同显现数据包。

例:只抓取1个数据包,并显现其内容。

指令:

tcpdump-c1-X

七、tcpdump与wireshark

Wireshark(曾经是ethereal)是Windows下非常简略易用的抓包东西,现在也有Linux版别。

经过Tcpdump抓取的数据包剖析比较麻烦,要想很便利的剖析数据包,咱们能够用Tcpdump+Wireshark的完美组合实现:在Linux里抓包,然后在Windows里剖析包。

保存数据包为wireshark能识别的文件:

tcpdumptcp-ieth1-t-s0-c100anddstport!22andsrcnet192.168.1.0/24-w./target.cap

参数含义tcpipicmparprarp和tcp、udp、icmp这些选项等都要放到第一个参数的方位,用来过滤数据报的类型-ieth1只抓经过接口eth1的包-t不显现时刻戳-s0抓取数据包时默许抓取长度为68字节。加上-S0后能够抓到完好的数据包-c100只抓取100个数据包dstport!22不抓取方针端口是22的数据包srcnet192.168.1.0/24数据包的源网络地址为192.168.1.0/24-w./target.cap保存成cap文件,便利用ethereal(即wireshark)剖析,tcpdump指定ip抓包命令,用简略的话来界说tcpdump,就是:dumpthetrafficonanetwork,根据运用者的界说对网络上的数据包进行截获的包剖析东西。

tcpdump能够将网络中传送的数据包的“头”完全截获下来供给剖析。它支撑针对网络层、协议、主机、网络或端口的过滤,并供给and、or、not等逻辑语句来协助你去掉无用的信息。

tcpdump基于底层libpcap库开发,运转需求root权限。

一、tcpdump装置

环境

虚拟机:vmware15.5.2

os:ubuntu12.04

装置tcpdump

sudoapt-getinstalltcpdump

装置tcpdump

3.版别检查

tcpdump–h

版别检查tcpdumpversion4.0。

libpcapversion1.1.1表明libpcap的版别。

二、tcpdump参数

常用参数选项阐明:

参数意义

-a将网络地址和播送地址转变成姓名

-c在收到指定的包的数目后,tcpdump就会中止;

-d将匹配信息包的代码以人们能够了解的汇编格局给出;以可阅览的格局输出。

-dd将匹配信息包的代码以c言语程序段的格局给出;

-ddd将匹配信息包的代码以十进制的办法给出;

-e在输出行打印出数据链路层的头部信息;

-f将外部的Internet地址以数字的办法打印出来;

-l使规范输出变为缓冲行办法;

-n直接显现IP地址,不现实称号;

-nn端口称号显现为数字办法,不现实称号;

-t在输出的每一行不打印时刻戳;

-v输出一个略微具体的信息,例如在ip包中能够包括ttl和服务类型的信息;

-vv输出具体的报文信息;

-F从指定的文件中读取表达式,疏忽其它的表达式;

-i指定监听的网络接口;

-r从指定的文件中读取包(这些包一般经过-w选项发生);

-w直接将包写入文件中,并不剖析和打印出来;

-T将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简略网络办理协议;)

高阶参数运用阐明:

-A以ASCII码办法显现每一个数据包(不会显现数据包中链路层头部信息).在抓取包括网页数据的数据包时,可便利检查数据(nt:即Handyforcapturingwebpages).

-ccount

tcpdump将在接受到count个数据包后退出.

-Cfile-size(nt:此选项用于配合-wfile选项运用)

该选项使得tcpdump在把原始数据包直接保存到文件中之前,检查此文件巨细是否超越file-size.假如超越了,将关闭此文件,另创一个文件继续用于原始数据包的记载.新创建的文件名与-w选项指定的文件名共同,但文件名后多了一个数字.该数字会从1开始随着新创建文件的增多而添加.file-size的单位是百万字节(nt:这儿指1,000,000个字节,并非1,048,576个字节,后者是以1024字节为1k,1024k字节为1M计算所得,即1M=1024*1024=1,048,576)

-d以容易阅览的办法,在规范输出上打印出编列过的包匹配码,随后tcpdump中止.(nt|rt:humanreadable,容易阅览的,一般是指以ascii码来打印一些信息.compiled,编列过的.packet-matchingcode,包匹配码,意义不知道,需弥补)

-dd以C言语的办法打印出包匹配码.

-ddd以十进制数的办法打印出包匹配码(会在包匹配码之前有一个附加的’count’前缀).

-D打印体系中一切tcpdump能够在其上进行抓包的网络接口.每一个接口会打印出数字编号,相应的接口姓名,以及或许的一个网络接口描绘.其间网络接口姓名和数字编号能够用在tcpdump的-iflag选项(nt:把姓名或数字代替flag),来指定要在其上抓包的网络接口.

此选项在不支撑接口列表指令的体系上很有用(nt:比方,Windows体系,或缺少ifconfig-a的UNIX体系);接口的数字编号在windows2000或这以后的体系中很有用,因为这些体系上的接口姓名比较复杂,而不易运用.

假如tcpdump编译时所依靠的libpcap库太老,-D选项不会被支撑,因为其间缺少pcap_findalldevs()函数.

-e每行的打印输出中将包括数据包的数据链路层头部信息

-Espi@ipaddralgo:secret,…

可经过spi@ipaddralgo:secret来解密IPsecESP包(nt|rt:IPsecEncapsulatingSecurityPayload,IPsec封装安全负载,IPsec可了解为,一整套对ip数据包的加密协议,ESP为整个IP数据包或其间上层协议部分被加密后的数据,前者的作业方式称为隧道方式;后者的作业方式称为传输方式.作业原理,另需弥补).

需求留意的是,在终端发动tcpdump时,能够为IPv4ESPpackets设置密钥(secret).

可用于加密的算法包括des-cbc,3des-cbc,blowfish-cbc,rc3-cbc,cast128-cbc,或许没有(none).默许的是des-cbc(nt:des,DataEncryptionStandard,数据加密规范,加密算法不知道,另需弥补).secret为用于ESP的密钥,运用ASCII字符串办法表达.假如以0x最初,该密钥将以16进制办法读入.

该选项中ESP的界说遵从RFC2406,而不是RFC1827.而且,此选项仅仅用来调试的,不引荐以真实密钥(secret)来运用该选项,因为这样不安全:在指令行中输入的secret能够被其他人经过ps等指令检查到.

除了以上的语法格局(nt:指spi@ipaddralgo:secret),还能够在后边添加一个语法输入文件姓名供tcpdump运用(nt:即把spi@ipaddralgo:secret,…中…换成一个语法文件名).此文件在接受到第一个ESP包时会打开此文件,所以最好此刻把赋予tcpdump的一些特权取消(nt:可了解为,这样防备之后,当该文件为恶意编写时,不至于造成过大危害).

-f显现外部的IPv4地址时(nt:foreignIPv4addresses,可了解为,非本机ip地址),选用数字办法而不是姓名.(此选项是用来抵挡Sun公司的NIS服务器的缺陷(nt:NIS,网络信息服务,tcpdump显现外部地址的姓名时会用到她供给的称号服务):此NIS服务器在查询非本地地址姓名时,常常会陷入无尽的查询循环).

因为对外部(foreign)IPv4地址的测试需求用到本地网络接口(nt:tcpdump抓包时用到的接口)及其IPv4地址和网络掩码.假如此地址或网络掩码不可用,或许此接口根本就没有设置相应网络地址和网络掩码(nt:linux下的’any’网络接口就不需求设置地址和掩码,不过此’any’接口能够收到体系中一切接口的数据包),该选项不能正常作业.

-Ffile

运用file文件作为过滤条件表达式的输入,此刻指令行上的输入将被疏忽.

-iinterface

指定tcpdump需求监听的接口.假如没有指定,tcpdump会从体系接口列表中搜寻编号最小的已配置好的接口(不包括loopback接口).一但找到第一个符合条件的接口,搜寻立刻完毕.

在选用2.2版别或之后版别内核的Linux操作体系上,’any’这个虚拟网络接口可被用来接纳一切网络接口上的数据包(nt:这会包括意图是该网络接口的,也包括意图不是该网络接口的).需求留意的是假如真实网络接口不能作业在’稠浊’方式(promiscuous)下,则无法在’any’这个虚拟的网络接口上抓取其数据包.

假如-D标志被指定,tcpdump会打印体系中的接口编号,而该编号就可用于此处的interface参数.

-l对规范输出进行行缓冲(nt:使规范输出设备遇到一个换行符就立刻把这行的内容打印出来).在需求一起观察抓包打印以及保存抓包记载的时候很有用.比方,可经过以下指令组合来达到此意图:

“tcpdump-l|teedat”或许“tcpdump-l>dat&tail-fdat”.(nt:前者运用tee来把tcpdump的输出一起放到文件dat和规范输出中,而后者经过重定向操作’>’,把tcpdump的输出放到dat文件中,一起经过tail把dat文件中的内容放到规范输出中)

-L列出指定网络接口所支撑的数据链路层的类型后退出.(nt:指定接口经过-i来指定)

-mmodule

经过module指定的file装载SMIMIB模块(nt:SMI,StructureofManagementInformation,办理信息结构MIB,ManagementInformationBase,办理信息库.可了解为,这两者用于SNMP(SimpleNetworkManagementProtoco)协议数据包的抓取.具体SNMP的作业原理不知道,另需弥补).

此选项可屡次运用,然后为tcpdump装载不同的MIB模块.

-Msecret假如TCP数据包(TCPsegments)有TCP-MD5选项(在RFC2385有相关描绘),则为其摘要的验证指定一个公共的密钥secret.

-n不对地址(比方,主机地址,端口号)进行数字表明到姓名表明的转换.

-N不打印出host的域名部分.比方,假如设置了此选现,tcpdump将会打印’nic’而不是’nic.ddn.mil’.

-O不启用进行包匹配时所用的优化代码.当怀疑某些bug是由优化代码引起的,此选项将很有用.

-p一般状况下,把网络接口设置为非’稠浊’方式.但有必要留意,在特殊状况下此网络接口还是会以’稠浊’方式来作业;然后,’-p’的设与不设,不能作为以下选现的代名词:’etherhost{local-hw-add}’或’etherbroadcast'(nt:前者表明只匹配以太网地址为host的包,后者表明匹配以太网地址为播送地址的数据包).

-q快速(也许用’安静’更好?)打印输出.即打印很少的协议相关信息,然后输出行都比较简短.

-R设定tcpdump对ESP/AH数据包的解析按照RFC1825而不是RFC1829(nt:AH,认证头,ESP,安全负载封装,这两者会用在IP包的安全传输机制中).假如此选项被设置,tcpdump将不会打印出’制止中继’域(nt:relaypreventionfield).别的,因为ESP/AH规范中没有规定ESP/AH数据包有必要具有协议版别号域,所以tcpdump不能从收到的ESP/AH数据包中推导出协议版别号.

-rfile

从文件file中读取包数据.假如file字段为’-‘符号,则tcpdump会从规范输入中读取包数据.

-S打印TCP数据包的次序号时,运用绝对的次序号,而不是相对的次序号.(nt:相对次序号可了解为,相对第一个TCP包次序号的距离,比方,接受方收到第一个数据包的绝对次序号为232323,关于后来接纳到的第2个,第3个数据包,tcpdump会打印其序列号为1,2别离表明与第一个数据包的距离为1和2.而假如此刻-S选项被设置,关于后来接纳到的第2个,第3个数据包会打印出其绝对次序号:232324,232325).

-ssnaplen

设置tcpdump的数据包抓取长度为snaplen,假如不设置默许将会是68字节(而支撑网络接口分接头(nt:NIT,上文已有描绘,可查找’网络接口分接头’关键字找到那里)的SunOS系列操作体系中默许的也是最小值是96).68字节关于IP,ICMP(nt:InternetControlMessageProtocol,因特网控制报文协议),TCP以及UDP协议的报文已足够,但关于称号服务(nt:可了解为dns,nis等服务),NFS服务相关的数据包会发生包截短.假如发生包截短这种状况,tcpdump的相应打印输出行中会出现”[|proto]”的标志(proto实际会显现为被截短的数据包的相关协议层次).需求留意的是,选用长的抓取长度(nt:snaplen比较大),会添加包的处理时刻,而且会削减tcpdump可缓存的数据包的数量,然后会导致数据包的丢失.所以,在能抓取咱们想要的包的前提下,抓取长度越小越好.把snaplen设置为0意味着让tcpdump自动挑选合适的长度来抓取数据包.

-Ttype

强制tcpdump按type指定的协议所描绘的包结构来剖析收到的数据包.目前已知的type可取的协议为:

aodv(Ad-hocOn-demandDistanceVectorprotocol,按需距离向量路由协议,在Adhoc(点对点方式)网络中运用),

cnfp(CiscoNetFlowprotocol),rpc(RemoteProcedureCall),rtp(Real-TimeApplicationsprotocol),

rtcp(Real-TimeApplicationscon-trolprotocol),snmp(SimpleNetworkManagementProtocol),

tftp(TrivialFileTransferProtocol,碎文件协议),vat(VisualAudioTool,可用于在internet上进行电

视电话会议的应用层协议),以及wb(distributedWhiteBoard,可用于网络会议的应用层协议).

-t在每行输出中不打印时刻戳

-tt不对每行输出的时刻进行格局处理(nt:这种格局一眼或许看不出其意义,如时刻戳打印成1261798315)

-ttttcpdump输出时,每两行打印之间会延迟一个段时刻(以毫秒为单位)

-tttt在每行打印的时刻戳之前添加日期的打印

-u打印出未加密的NFS句柄(nt:handle可了解为NFS中运用的文件句柄,这将包括文件夹和文件夹中的文件)

-U使得当tcpdump在运用-w选项时,其文件写入与包的保存同步.(nt:即,当每个数据包被保存时,它将及时被写入文件中,而不是等文件的输出缓冲已满时才真正写入此文件)

-U标志在老版别的libcap库(nt:tcpdump所依靠的报文捕获库)上不起作用,因为其间缺少pcap_cump_flush()函数.

-v当剖析和打印的时候,发生具体的输出.比方,包的生存时刻,标识,总长度以及IP包的一些选项.这也会打开一些附加的包完好性检测,比方对IP或ICMP包头部的校验和.

-vv发生比-v更具体的输出.比方,NFS回应包中的附加域将会被打印,SMB数据包也会被完全解码.

-vvv发生比-vv更具体的输出.比方,telent时所运用的SB,SE选项将会被打印,假如telnet一起运用的是图形界面,

其相应的图形选项将会以16进制的办法打印出来(nt:telnet的SB,SE选项意义不知道,另需弥补).

-w把包数据直接写入文件而不进行剖析和打印输出.这些包数据可在随后经过-r选项来重新读入并进行剖析和打印.

-Wfilecount

此选项与-C选项配合运用,这将约束可打开的文件数目,而且当文件数据超越这儿设置的约束时,顺次循环代替之前的文件,这相当于一个具有filecount个文件的文件缓冲池.一起,该选项会使得每个文件名的最初会出现足够多并用来占位的0,这能够便利这些文件被正确的排序.

-x当剖析和打印时,tcpdump会打印每个包的头部数据,一起会以16进制打印出每个包的数据(但不包括连接层的头部).一共打印的数据巨细不会超越整个数据包的巨细与snaplen中的最小值.有必要要留意的是,假如高层协议数据没有snaplen这么长,而且数据链路层(比方,Ethernet层)有填充数据,则这些填充数据也会被打印.(nt:soforlinklayersthatpad,未能衔接了解和翻译,需弥补)

-xxtcpdump会打印每个包的头部数据,一起会以16进制打印出每个包的数据,其间包括数据链路层的头部.

-X当剖析和打印时,tcpdump会打印每个包的头部数据,一起会以16进制和ASCII码办法打印出每个包的数据(但不包括连接层的头部).这关于剖析一些新协议的数据包很便利.

-XX当剖析和打印时,tcpdump会打印每个包的头部数据,一起会以16进制和ASCII码办法打印出每个包的数据,其间包括数据链路层的头部.这关于剖析一些新协议的数据包很便利.

-ydatalinktype

设置tcpdump只捕获数据链路层协议类型是datalinktype的数据包

-Zuser

使tcpdump抛弃自己的超级权限(假如以root用户发动tcpdump,tcpdump将会有超级用户权限),并把当前tcpdump的用户ID设置为user,组ID设置为user首要所属组的ID(nt:tcpdump此处可了解为tcpdump运转之后对应的进程)

此选项也可在编译的时候被设置为默许打开.(nt:此刻user的取值不知道,需弥补)

三、指令选项运用举例

1.截获主机收到和宣布的一切数据包。

指令:

tcpdump

阐明:

tcpdump截取包默许显现数据包的头部。

普通状况下,直接发动tcpdump将监督第一个网络接口上一切流过的数据包。

基础格局:时刻数据包类型源IP端口/协议>方针IP端口/协议协议具体信息

tcpdump

按下Ctrl+C会停止tcpdump指令。且会在结尾处生成计算信息。

停止tcpdump

2.指定抓包数量-c

指定抓取2个数据包。

指令:

tcpdump-c2

阐明:

最后会自动生成计算信息。

指定抓包数量

【留意,现已切换到办理员了,虚拟机中要发生数据包,能够别的开一个窗口pingbaidu.com后边不再提示】

pingbaidu.com

3.将抓包信息写入文件-w

运用-w选项指定记载文件。

指令:

tcpdump-c10-wtcpdump_test.log

阐明:

保存的文件不是文本格局,不能直接检查。tcpdump保存的文件的格局是几乎一切干流的抓包东西软件都能够读取。所以能够运用更易读的图形界面东西来检查记载文件。

将抓包信息写入文件

4.读取记载文件-r

运用-r选项读取文件。

指令:

tcpdump-rtcpdump_test.log

![读取记载文件在这儿插入图片描绘

5.打印出一切可作业的接口-D

指令:

tcpdump-D

打印出一切可作业的接口

其间网卡为eth0。

6.指定监控的网卡-i

指令:

tcpdump-ieth0

假如不指定网卡,默许tcpdump只会监督第一个网络接口,一般是eth0。

7.显现更具体的数据包信息-v-vv

选项-v,-vv能够显现更具体的抓包信息。

tcpdump-v

tcpdump-vv

8.不运用域名反解-n

运用-n后,tcpdump会直接显现IP地址,不会显现域名(与netstat指令相似)。

9.添加抓包时刻戳-tttt选项

tcpdump的一切输出打印行中都会默许包括时刻戳信息;

时刻戳信息的显现格局如下

hh:mm:ss.frac(nt:小时:分钟:秒.)

此刻间戳的精度与内核时刻精度共同,反映的是内核第一次看到对应数据包的时刻;

而数据包从物理线路传递到内核的时刻,以及内核花费在此包上的中断处理时刻都没有算进来;

运用-tttt选项,抓包成果中将包括抓包日期:

指令:

tcpdump-tttt

添加抓包时刻戳

四、条件过滤

1.过滤:指定需求抓取的协议

tcpdump能够只抓某种协议的包,支撑指定以下协议:ip,ip6,arp,tcp,udp,wlan等。

指令:

tcpdumpudp

tcpdumpicmp

tcpdumptcp

tcpdumparp

2.过滤:指定协议的端口号

运用port参数,用于指定端口号。

指令:tcpdumptcpport80

运用portrange参数,用于指定端口规模。

指令:tcpdumptcpportrange1-1024

3.过滤:指定源与方针

src表明源。

dst表明方针。

指令:

tcpdumpsrcport8080

tcpdumpdstport80

4.过滤:指定特定主机的音讯包

运用host指定需求监听的主机。

指令:

tcpdumphost192.168.1.113

留意:若运用了host参数运用了计算机名或域名。例tcpdumphostshi-pc,则无法再运用-n选项。

5.过滤:指定数据包巨细

运用greater(大于)与less(小于)能够指定数据包巨细的规模。

例:只抓取大于1000字节的数据包。

指令:

tcpdumpgreater1000

例:只抓取小于10字节的数据包。

指令:

tcpdumpless10

五、逻辑表达式

运用基本逻辑组合拼装出更精密的过滤条件。

1.逻辑与

逻辑与联系,运用and。

指令:

tcpdumptcpandhost192.168.1.112tcpdumptcpandsrc192.168.1.112andport8080

2.逻辑或

逻辑或联系,运用or。

指令:

tcpdumphost192.168.1.112or192.168.1.113

3.逻辑非

逻辑非联系,运用not,也能够运用!。

若运用!有必要与这以后边的字符隔开一个空格。

例:当经过ssh协议远程运用tcpdump时,为了防止ssh的数据包的输出,所以一般需求制止ssh数据包的输出。

指令:

tcpdumpnottcpport22tcpdump!tcpport22

4.括号

括号需求运用在引号内,或转意运用。不然会报错。

例:抓取非22端口,且主机为192.168.1.112和192.168.1.113的TCP数据包。

指令:

tcpdumpnottcpport22andhost192.168.1.112or192.168.1.113tcpdump”nottcpport22andhost(192.168.1.112or192.168.1.113)”tcpdumpnottcpport22andhost”(192.168.1.112or192.168.1.113)”

六、其他实例

1.打印一切进入或脱离sundown的数据包.

tcpdumphostsundown

2.截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通讯

tcpdumphost210.27.48.1and\(210.27.48.2or210.27.48.3\)

3.假如想要获取主机210.27.48.1除了和主机210.27.48.2之外一切主机通讯的ip包,运用指令:

tcpdumpiphost210.27.48.1and!210.27.48.2

4.监督一切送到主机hostname的数据包

tcpdump-ieth0dsthosthostname

5.获取主机210.27.48.1接纳或宣布的telnet包

23为telnet的端口

tcpdumptcpport23andhost210.27.48.1

6.监督本机的udp123端口

123为ntp的服务端口

tcpdumpudpport123

7.运用tcpdump抓取HTTP包

tcpdump-XvvennSs0-ieth0tcp[20:2]=0x4745ortcp[20:2]=0x4854

0x4745为”GET”前两个字母”GE”,

0x4854为”HTTP”前两个字母”HT”。

tcpdump对截获的数据并没有进行彻底解码,数据包内的大部分内容是运用十六进制的办法直接打印输出的。

显然这不利于剖析网络故障,一般的解决办法是先运用带-w参数的tcpdump截获数据并保存到文件中,然后再运用其他程序(如Wireshark)进行解码剖析。当然也应该界说过滤规则,以防止捕获的数据包填满整个硬盘。

六、检查数据包完好内容

tcpdump默许不显现数据包的具体内容。

办法一:

运用-A参数能以ASCII码显现数据包。

例:只抓取1个数据包,并显现其内容。

指令:

tcpdump-c1-A

办法二:

运用-X参数能16进制数与ASCII码共同显现数据包。

例:只抓取1个数据包,并显现其内容。

指令:

tcpdump-c1-X

七、tcpdump与wireshark

Wireshark(曾经是ethereal)是Windows下十分简略易用的抓包东西,现在也有Linux版别。

经过Tcpdump抓取的数据包剖析比较麻烦,要想很便利的剖析数据包,咱们能够用Tcpdump+Wireshark的完美组合完成:在Linux里抓包,然后在Windows里剖析包。

保存数据包为wireshark能辨认的文件:

tcpdumptcp-ieth1-t-s0-c100anddstport!22andsrcnet192.168.1.0/24-w./target.cap

参数意义

tcpipicmparprarp和tcp、udp、icmp这些选项等都要放到第一个参数的方位,用来过滤数据报的类型

-ieth1只抓经过接口eth1的包

-t不显现时刻戳

-s0抓取数据包时默许抓取长度为68字节。加上-S0后能够抓到完好的数据包

-c100只抓取100个数据包

dstport!22不抓取方针端口是22的数据包

srcnet192.168.1.0/24数据包的源网络地址为192.168.1.0/24

-w./target.cap保存成cap文件,便利用ethereal(即wireshark)剖析

© 版权声明
THE END
喜欢就支持一下吧
点赞90赞赏 分享
评论 抢沙发

请登录后发表评论