tcpdump 过滤数据包

来源:互联网 发布:unity3d中文版本下载 编辑:程序博客网 时间:2024/05/22 17:01

好不容易下定了决心 开始写技术博客 写的不对的地方还请大家指教
我用的是centos6.5 原带的tcpdump抓包工具(unbuntu12.04下同样有效) 可以拥有和wireshark一样的数据包过滤功能
若想以更细化的粒度来抓取自己需要的数据包,可采用以下形式(前提是必须要熟悉各种协议的数据包格式,这样才能熟悉每个字段的含义,甚至每个bit的含义,便于过滤)
在tcpdump中同样可以使用>,>=,<,<=,=,!=这些比较符,以及&,|,!逻辑运算符(此处!优先级最高,&和|优先级相同,左结合性)
1)tcpdump proto[expr:size]
其中proto:协议名如tcp,udp
expr:相对与特定协议数据包起始点的字节位移
size:从expr出开始的字节数,可以为1,2,4,默认为1
例子:
1 tcpdump 'ip[2:2]>576' 抓取总长度大于576bytes的ip数据包  (因为IP数据包头部第三个和第四个字节表示数据包的总长度)
2 tcpdump 'ip[0]&0xf !=5' 抓取选项部分不为空的ip数据包 (因为IP数据包头部的第一个字节的低四位代表头部长度,值为5表示头部长度为20bytes此时选项部分为空)
2)也可以使用名称而不是数字去指定特定数据包的特定字段,如icmptype,icmpcode,tcpflags
例子:
tcpdump 'tcp[tcpflags] = tcp-syn' 抓取tcp的syn包

0 0