tcpdump

tcpdump是一个UNIX工具,用于网络流量抓取、过滤和分析,Windows系统下的叫做WinDump。tcpdump和WinDump这两个工具并非完全一样,但是它们的抓包文件一般是可以彼此通用的。

tcpdump:http://www.tcpdump.org/

WinDump:http://www.winpcap.org/windump/default.htm

由于tcpdump是基于libpcap的,所以它是在第二层(数据链路层)上进行获取的。但是在默认情况下,tcpdump只显示第三层或者更高协议的详细数据,使用“-e”参数可以让它把第二层的数据也显示出来。

除了抓包之外,tcpdump还能对常见的第二到第四层协议进行解码(以及一些更高层的协议),并把相关信息显示给用户看。解码后的包可以以十六进制的形式或与之相对应的ASCII字符的形式(也就是把数据当成文本显示)展示给用户,也可以同时以这两种形式展示数据。

保真度

tcpdump抓包的质量会受到硬件本身和系统配置的限制,比如CPU和磁盘空间。使用tcpdump抓取流量的一个关键配置选项是snapshot长度,也就是“snaplen”。snaplen表示的是tcpdump将要记录每个帧中多少个字节。它是从数据链路层的第0个字节偏移起算的。

设定较大的snapshot既增加了处理包所需的实际,实际上又减小了包缓冲区的大小,这可能导致包被丢弃,你应该在包装你所关心的协议信息能被完整抓取的前提下,设定一个最小的snapleng。

用tcpdump过滤数据包

由于我是win7系统,就使用WinDump进行测试。通过上面的链接进行下载WinDump,但运行它之前是要安装WinPcap库。WinDump.exe直接运行没有用处,一般通过控制台去通过命令附带参数去启动。下面是参数列表:

-a               将网络地址解析为名字
-B size        设置网络数据接收缓冲区大小
-c count      只抓取count数目个包
-D               显示当前系统中所有可用的网卡
-e                输出链路层信息
-F file          从file文件中读取过滤的限制条件
-i interface  监视指定网卡
-n               不将网络地址解析为名字
-N               不打印全称域名信息
-q               Print quick(less) packet infomation
-r file          从file文件中读取数据
-S               Prints absolute TCP sequence numbers
s snaplen   Captures snaplen bytes from the packet; the default value is 68
-t                不打印时间戳
-w file         将输出写入file文件
-X               用十六进制和ASCII码输出捕获的包
-x               用十六进制输出捕获的数据

使用实例如下,此句表示捕获每个包的前200个字节,用十六进制输出,并将其写入testcap文件中:

C:/monitor>windump -s 200 -x -w testcap

查看网络上所有IP: windump ip

查看与指定ip交流的所有数据:  windump ip host 192.168.1.6(指定ip)

查看所有从指定ip发到本机来的所有数据:   windump ip src 192.168.1.6(指定ip)

捕获从指定网段发到本机的所有数据:   windump ip host 192.168.1(指定ip网段)

 

你可能感兴趣的:(tcpdump)