tcpdump简单总结

tcpdump指令功能强大,参数繁多。本篇作一简单的总结归纳。

 

tcpdump指令形式:
tcpdump [选项] [过滤规则]

选项包括-i -x 等,主要用来满足不同的显示需要
过滤规则:用于过滤目的,截留特定的数据包,使网络分析更加精准简便。


tcpdump的过滤规则表达式还可以指定逻辑运算关键字:包括非运算not (或!),与运算(and &&) ,
或运算(or ||)

通常都是需要用这些逻辑关键字来组合不同类型的规则表达式的。


下面直接通过例子来讲解:

tcpdump -i eth1 -x -s0 host 123.23.0.46 and port 4545 and tcp  | more

---选项

-i:指定网卡端口
   如果要抓的包源地址和目的地址都是本机,要用-i lo

-x: 可以列出十六进制以及ASCII的封包内容。默认情况下是不会显示封包内容的。

-s0:完整显示包的内容。默认情况下tcpdump只显示96个字节的包内容。
     其实-s是tcpdump的一个选项,-s snaplen 可以将显示的包长度设为snaplen

  tcpdump支持的选项还有很多,此处不一一列举。

---规则表达式

host:
   指定类型:说明123.23.0.46是一台主机。另外net也是用来指定类型的。

src 或dst:
   指明源地址or目的地址,可以使用组合 dst or src,  dst and src。
   缺省是dst or src

port:
   指定端口号

tcp:指定抓取包的协议,当然,你也可以指定udp 等其他协议

以上代表了tcpdump支持的四种规则类型。不同类型的规则可以使用逻辑关键字连接。

另外,补充一个很有用的选项功能。
-F filename:
   从filename里面读取规则表达式。指令中的规则表达式会被忽略。
   这样,你就可以将规则写在filename里面保存下来了。


tcpdump还可以抓取特定包内容的数据包,用法是:

sudo tcpdump -Xlps0  -iany 'ip[35:2]=0x60' and dst port 10928 and 'ip[102:4]=10095530'

注意单引号''里面的内容,ip[35:2]=0x60表示从ip层第35个字节开始取2个字节,值是0x60


有的同学用-w filename将抓包的结果存到filename里面。这时要用tcpdump -r filename才能打开,否则会显示乱码。其实执行tcpdump的时候用重定向就可以了吧?



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章