常见网络抓包工具和抓包分析( 二 )


来源 IP:任意;
目的IP:除了10.4.5.6 以外任意
ip.src != 10.1.2.3 and ip.dst != 10.4.5.6//显示来源不为10.1.2.3 并且目的IP 不为 10.4.5.6 的 封包 。
换句话说,显示的封包将会为:
来源 IP:除了10.1.2.3 以外任意;同时须满足,目的IP:除了10.4.5.6 以外任意
tcp.port == 25// 显示来源或目的TCP 端口号为25 的封包 。tcp.dstport == 25// 显示目的TCP 端口号为25 的封包 。tcp.flags // 显示包含TCP 标志的封包 。
tcp.flags.syn == 0× 02 // 显示包含TCP SYN 标志的封包 。如果过滤器的语法是正确的,表达式的背景呈绿色 。如果呈红色,说明表达式有误 。
 
2.2 、TCPDUMP
tcpdump是一个运行在命令行 下的 嗅探工具 。它允许用户拦截和显示发送或收到过网络 连 接到该计算机的TCP/IP 和其他数据包。
tcpdump 采用命令行方式,它的命令格式为:
tcpdump [ -adeflnNOpqStvx ] [ -c数量] [ -F文件名]
[ -i网络接口] [ -r文件名 ] [ -s snaplen ] [ -T 类型] [ -w文件名] [ 表达式]
 
1、tcpdump 的选项介绍
-a将网络地址和广播地址转变成名字;
-d将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd将匹配信息包的代码以c 语言程序段的格式给出;
-ddd将匹配信息包的代码以十进制的形式给出;
-e在输出行打印出数据链路层的头部信息;
-f将外部的Internet 地址以数字的形式打印出来;
-l使标准输出变为缓冲行形式;
-n不把网络地址转换成名字;
-t在输出的每一行不打印时间戳;
-v输出一个稍微详细的信息,例如在ip 包中可以包括ttl 和服务类型的信息;
-vv输出详细的报文信息;
-c在收到指定的包的数目后,tcpdump 就会停止;
-F从指定的文件中读取表达式,忽略其它的表达式;
-i指定监听的网络接口;
-r从指定的文件中读取包(这些包一般通过-w 选项产生 );
-w直接将包写入文件中,并不分析和打印出来;
-T将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议; )
 
2、tcpdump 的表达式介绍
表达式是一个正则表达式,tcpdump 利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获 。如果没有给出任何条件,则网络上所有的信息包将会被截获 。
在表达式中一般如下几种类型的关键字,一种是关于类型的关键字,主要包括host,net,port, 例如host 210.27.48.2 ,指明210.27.48.2 是一台主机,net 202.0.0.0 指明202.0.0.0 是一个网络地址,port 23指明端口号是23 。如果没有指定类型,缺省的类型是host 。
第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向 。举例说明,src 210.27.48.2 , 指明 ip 包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0。如果没有指明方向关键字,则缺省是src or dst 关键字 。
第三种是协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型 。Fddi指明是在FDDI( 分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether" 的别名,fddi 和 ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether 的包进行处理和分析 。其他的几个关键字就是指明了监听的包的协议内容 。如果没有指定任何协议,则tcpdump 将会监听所有协议的信息包 。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less, greater,还有三种逻辑运算,取非运算是'not ' '! ',与运算是 'and','&&'; 或运算是'or' ,'||';
说明 。
这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来
(1)想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
#tcpdump host 210.27.48.1
(2) 想要截获主机210.27.48.1 和主机210.27.48.2 或 210.27.48.3 的通信,使用命令:(在命令行中适用括号时,一定要#tcpdump host 210.27.48.1 and(210.27.48.2 or 210.27.48.3 )
(3) 如果想要获取主机210.27.48.1 除了和主机210.27.48.2 之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
(4)如果想要获取主机210.27.48.1 接收或发出的telnet 包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
3、tcpdump 的输出结果介绍
【常见网络抓包工具和抓包分析】下面我们介绍几种典型的tcpdump命令的输出信息


推荐阅读