Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239227
  • 博文数量: 54
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 431
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-26 09:36
文章分类

全部博文(54)

分类: 网络与安全

2016-02-17 10:52:05

      Wireshark功能很强大,图形界面很友好,但在一些特殊环境如嵌入式板子上进行抓包,则显得有些力不从心。
因此,学习和了解tcpdump工具的抓包功能的使用是有必要的,下面将学习该抓包工具的使用。
       tcpdump的使用方法,在Linux上可以使用man工具进行查看,该工具包含很多可选项,这里就不一一列出了。
这里选出几个常用的进行讲解:
-i:  指定监听的接口                      样例:抓取eth0上的包:                                  tcpdump -i eth0

-w  将抓包结果写入.pcap文件        样例:抓取eth0上的包并存入文件:                    tcpdump -i eth0 -w eth0.pcap
      (#NOTE: pcap文件可用Wireshark打开分析)

-r:  读取抓包文件启动抓包工具       样例:读取eth0.pcap启动tcpdump:                  tcpdump -r eth0.pcap

-c:  监听到指定数据包数目后退出    样例:抓取eth0上的50个数据包:                      tcpdump -i eth0 -c 50

-A:  以ASCII码打印数据包信息      样例:以ASCII码的形式抓取eth0上的包:            tcpdump  -i eth0 -A
      通常用来抓取web通信数据包

-X   同时以Hex和Ascii码形式抓包   样例:以Hex和Ascii码的形式抓取eth0上的包        tcpdump -i eth0 -X     

-nn 直接以IP及port进行显示,而非使用名称    样例:以IP和port形式抓取eth0上的包  tcpdump -i eth0 -nn           


     了解了上述的常用选项之后,我们先抓取一个包进行分析:
# tcpdump -i eth0 -c 1
11:39:16.087088  IP  192.168.100.181.52017 > 239.255.255.250.1900: UDP, length 136

##解析:
时间域: 11:11:39:16.087088       表示抓取数据包的时间[时:分:秒]
协议域: IP                                    表示数据包所使用的协议
源地址:192.168.100.181.52017     表示数据包的源地址,可能为MAC地址 
通讯方向: >                                  表示数据包的流向
目标地址:239.255.255.250.1900    表示数据包的目的地址,可能为MAC地址
封包信息 UDP, length 136                表示该封包使用udp协议,包长为136字节

     抓包分析,过滤是关键,因为网卡上的大量的数据包会让你眼花缭乱,无从下手,因此掌握过滤规则是使用抓包工具的核心内容。如果都找不
到自己需要的包,抓再多的包,又有何用?
     tcpdump遵循BPF(Berkeley Packet Filter)规则,BPF使用如下四类关键字构成表达式进行过滤:
       关键字名称                              含义                                                 关键字  
       类型关键字                   用于标识后续的数字或名字的含义             host(缺省类型)、net、port
       方向关键字                   用于标识传输方向                                     src、dst、
       协议关键字                   用于标识匹配的协议                                  ether、ip、tcp、udp、http、ftp
       逻辑关键字                   用于构建表达式逻辑                                  and/&&、or/||、not/!


样例:

   类型关键字样例:       
         tcpdump -i eth0 host 192.168.100.143                         过滤eth0上源或目的地址为100.143上的包
         tcpdump -i eth0 port 1234                                            过滤eth0上源或目的端口为1234的数据包
         tcpdump -i eth0 host 192.168.100.143 and port 1234  过滤eth0上源或目的地址为100.143且源或目的端口为1234的包

   方向关键字样例:
         tcpdump -i eth0 src host 192.168.100.143                              过滤eth0上地址为100.143上的包
         tcpdump -i eth0 src host 192.168.100.143 and dst port 1234  过滤eth0上地址为100.143且目的端口为1234的包

   协议关键字样例:
         tcpdump -i eth0 ip src host 192.168.100.18      过滤eth0上IP协议包地址为100.143的包
         tcpdump -i eth0 udp and dst port 1234            过滤eth0上UDP协议包目的端口为1234的包

      常用包抓取命令:
广播包抓取:
       tcpdump -i eth0 ip broadcast
       tcpdump -i eth0 ether broadcast


阅读(1945) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~