tcpdump用法总结

来源:互联网 发布:瓦尔特磨床软件 编辑:程序博客网 时间:2024/06/06 11:38

1、常用的选项

-C  file-size   在把一个未加工的数据包写入文件保存之前,先检查当前的文件是否大于file_size。如果是则关闭当前的保存文件然后 

      再打开一个新的文件用于保存包。与-w合作可以实现自动保存抓的包。例如:tcpdump -C 100 -w  /tcp1

-D  列出系统上可用tcpdump在该接口抓包的接口。

-l   使tcpdump标准输出行到缓冲。即可以实现在屏幕观看同时又可以将抓包写入文件中。例如:tcpdump -l | tee  tcpdump.out

     众所周知,Linux/UNIX的标准I/O提供了全缓冲、行缓冲和无缓冲三种缓冲方式。标准错误是不带缓冲的,终端设备常为行缓冲

     而其他情况默认都是全缓冲的。-l选项的作用就是将tcpdump的输出变为“行缓冲”方式,这样可以确保tcpdump遇到的内容一

     旦是换行符即将缓冲的内容输出到标准输出,以便于利用管道或重定向方式来进行后续处理。

-n  显示ip地址而不是名称。

-nn 显示协议类型、端口类型用数字显示而不是名称。

-N  不用域名显示主机,而是只用主机名显示主机。

-q  简短输出信息。

-t   不打印时间戳

-tt   打印一个没有格式化的时间戳

-ttt  打印一个微妙级的当前时间与前一个的时间差

-tttt 打印一个格式化后的时间戳

-A 以ASCLL码打印包但不包括链路层头部

-e 打印链路层头部信息

-c 指定一次抓包的个数。例如只抓5个包:tcpdump -c 5

-r   file  从文件中读取。即用tcpdump读取保存了抓包的文件

-F  file  从文件中读取过滤规则

-S 打印tcp包的绝对序列号

-X 使用16进制和ASCII输出,方便分析。

-s  snaplen   设置tcpdump的数据包抓取长度为snaplen。默认是96字节

-w file 把包数据直接写入文件而不进行分析和打印输出

2、创建表达式常用的关键字

i、host 、net 、port 、portrange  用于指定抓包的类型,默认是host

ii、src 、dst 、src or dst 、src and dst  用于指定抓包的方向,默认是src and dst

iii、arp 、rarp 、ip 、icmp 、tcp 、udp 用于指定抓包的协议类型,默认是所有类型

iv、gateway(网关), broadcast(广播),less(小于),greater(大于) 其他类型的关键字,

     gateway后必须跟网关地址的名字形式,网关地址是指以太网地址, 而不是IP 地址

     这个一般很少用到,试了一下出现:tcpdump: 'gateway' not supported in this configuration。

     广播有arp广播和ip广播。

v、and(&&) 、or(||) 、not(!)  逻辑关键字

vi、expr relop expr
     如果relop 两侧的操作数(expr)满足relop 指定的关系, 则与此对应的条件表达式为真.
     relop 可以是以下关系操作符之一: >, <, <=, =, !=.

     expr 是一个算术表达式。二进制操作符(+, -, *, /, &, |,<<, >>)

vii、 如果要引用数据包中的数据, 可采用以下表达方式:proto [expr:size]

     proto 常用的值:arp 、rarp 、ppp 、ip 、icmp 、tcp 、udp

     对于指定协议的所需数据, 其在包数据中的偏移字节由expr 来指定.size为可选的,

     用来指明抓取的长度,可以是1、2或4字节。不给定size时,默认是1字节。

     如果size为关键字len时,代表抓取整个数据包。

     一些偏移(式中的expr)以及域(式中的size)的取值除了可以用数字也可用名字来表达.

     以下为可用的一些域(协议头中的域)的名字:icmptype (指ICMP 协议头
     中type域), icmpcode (指ICMP 协议头code 域), 以及tcpflags(指TCP协议头的flags 域)
     以下为ICMP 协议头中type 域的可用取值:
     icmp-echoreply, icmp-unreach, icmp-sourcequench,icmp-redirect,icmp-echo, icmp-routeradvert,
     icmp-routersolicit, icmp-timx-ceed, icmp-paramprob, icmp-tstamp, icmp-tstampreply,
     icmp-ireq, icmp-ireqreply, icmp-maskreq, icmp-maskreply.
     以下为TCP 协议头中flags 域的可用取值:tcp-fin, tcp-syn, tcp-rst, tcp-push,
     tcp-ack, tcp-urg.

     注意:偏移量是从1开始的,但包都是从0字节开始的。例如取arp头的操作类型字段:arp[7]=1(或2)

     arp头的操作类型字段为2字节0001表示请求,0010表示应答。所以我们只需要取第8字节,偏移字段

     取7长度为1字节,即达到了我们的目的。

原创粉丝点击