胆囊息肉

注册

 

发新话题 回复该主题

linux之抓包神器tcpdump [复制链接]

1#
得白癜风怎么治 http://pf.39.net/bdfyy/bdfzg/140808/4443995.html

tcpdump介绍

tcpdump是一款强大的网络抓包工具,运行在linux平台上。熟悉tcpdump的使用能够帮助你分析、调试网络数据。

tcpdump语法

tcpdump[-adeflnNOpqStvx][-c数据包数目][-dd][-ddd][-F表达文件][-i网络界面][-r数据包文件][-s数据包大小][-tt][-T数据包类型][-vv][-w数据包文件][输出数据栏位]

tcpdump参数

-a
   将网络地址和广播地址转变成名字;-d
   将匹配信息包的代码以人们能够理解的汇编格式给出;-dd
  将匹配信息包的代码以c语言程序段的格式给出;-ddd
  将匹配信息包的代码以十进制的形式给出;-e
   在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议;-f
   将外部的Internet地址以数字的形式打印出来;-l
   使标准输出变为缓冲行形式;-n
   指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字;-nn:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示-t
   在输出的每一行不打印时间戳;-v
   输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;-vv
  输出详细的报文信息;-c
   在收到指定的包的数目后,tcpdump就会停止;-F
   从指定的文件中读取表达式,忽略其它的表达式;-i
   指定监听的网络接口;-p:将网卡设置为非混杂模式,不能与host或broadcast一起使用-r
   从指定的文件中读取包(这些包一般通过-w选项产生);-w
   直接将包写入文件中,并不分析和打印出来;-ssnaplensnaplen表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话tcpdump只显示部分数据包,默认68字节。-T
   将监听到的包直接解释为指定的类型的报文,常见的类型有rpc(远程过程调用)和snmp(简单网络管理协议;)-X告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。

监听所有端口,直接显示ip地址

tcpdump-nS

显示更详细的数据报文,包括tos,ttl,checksum等。

tcpdump-nnvvS

显示数据报的全部数据信息,用hex和ascii两列对比输出。

tcpdump-nnvvXS

host:过滤某个主机的数据报文

tcpdumphost1.2.3.4

src,dst:过滤源地址和目的地址

tcpdumpsrc1.2.3.4tcpdumpdst1.2.3.4

net:过滤某个网段的数据

tcpdumpnet1.2.3.0/24

过滤某个协议的数据,支持tcp,udp和icmp

tcpdumpicmp

过滤通过某个端口的数据报

tcpdumpport

src/dst,port,protocol:结合三者

tcpdumpsrcport22andtcptcpdumpudpandsrcport25

抓取指定范围的端口

tcpdumpportrange21-23

通过报文大小过滤请求,数据报大小,单位是字节

tcpdumpless32tcpdumpgreatertcpdump32tcpdump=

抓包输出到文件

tcpdump-wrumenz.pcapport80

从文件读取报文显示到屏幕

tcpdump-nXrrumenz.pcaphostweb

源地址是..1.,目的端口是的数据报

tcpdump-nnvSsrc..1.anddstport

从.网段到10或者.31网段的数据报

tcpdump-nvXsrcnet..0.0/16anddatnet10.0.0.0/8or.31.0.0/16

tcpdump的输出解读

21:27:06.IP(tos0x0,ttl64,id,offset0,flags[DF],protoTCP(6),length64)..1....1..80:Flags[S],cksum0xa(correct),seq,win,options[mss,nop,wscale4,nop,nop,TSvalecr0,sackOK,eol],length:27:07.IP(tos0x0,ttl51,id0,offset0,flags[DF],protoTCP(6),length44)..1..80..1..:Flags[S.],cksum0xedc0(correct),seq,ack,win0,options[mss],length:27:07.IP(tos0x0,ttl64,id,offset0,flags[DF],protoTCP(6),length40)..1....1..80:Flags[.],cksum0x3e72(correct),ack,win,length0

最基本也是最重要的信息就是数据报的源地址/端口和目的地址/端口,上面的例子第一条数据报中,源地址ip是..1.,源端口是,目的地址是..1.,目的端口是80。符号代表数据的方向。

上面的三条数据还是tcp协议的三次握手过程,第一条就是SYN报文,这个可以通过Flags[S]看出。下面是常见的TCP报文的Flags/p>

[S]:SYN(开始连接)[.]:没有Flag[P]SH(推送数据)[F]:FIN(结束连接)[R]:RST(重置连接)

而第二条数据的[S.]表示SYN-ACK,就是SYN报文的应答报文。

分享 转发
TOP
发新话题 回复该主题