一 Tcpdump简介1.1 简介tcpdump可根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句去掉无用的信息。
1.2 命令解释命令格式:tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c count ] [ -C file_size ] [ -F file ] [ -i interface ] [ -m module ] [ -M secret ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E spi@ipaddr algo:secret,... ] [ -y datalinktype ] [ -Z user ] [ expression ]命令选项:-A #以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息),在抓取包含网页数据的数据包时, 可方便查看数据;-c count #tcpdump将在接受到count个数据包后退出;-C file-size #此选项用于配合-w file 选项使用,该选项使得tcpdump 在把原始数据包直接保存到文件中之前, 检查此文件大小是否超过file-size. 如果超过了, 将关闭此文件,另创一个文件继续用于原始数据包的记录,新创建的文件名与-w 选项指定的文件名一致, 但文件名后多了一个数字,该数字会从1开始随着新创建文件的增多而增加。file-size的单位是百万字节。
提示:这里指1,000,000个字节,并非1,048,576个字节, 后者是以1024字节为1k, 1024k字节为1M计算所得, 即1M=1024 * 1024 = 1,048,576。
-d #以容易阅读的形式,在标准输出上打印出编排过的包匹配码, 随后tcpdump停止;
提示:容易阅读的,通常是指以ascii码来打印一些经过编排的信息。
-dd #以C语言的形式打印出包匹配码;-ddd #以十进制数的形式打印出包匹配码;-D #打印系统中所有tcpdump可以在其上进行抓包的网络接口. 每一个接口会打印出数字编号, 相应的接口名字, 以及可能的一个网络接口描述. 其中网络接口名字和数字编号可以用在tcpdump 的-i flag 选项(nt: 把名字或数字代替flag), 来指定要在其上抓包的网络接口;提示:此选项在不支持接口列表命令的系统上很有用(如Windows 系统, 或缺乏 ifconfig -a 的UNIX系统); 接口的数字编号在windows 2000 或其后的系统中很有用, 因为这些系统上的接口名字比较复杂, 而不易使用。注意:如果tcpdump编译时所依赖的libpcap库太老,-D 选项不会被支持, 因为其中缺乏 pcap_findalldevs()函数。
-e #每行的打印输出中将包括数据包的数据链路层头部信息;-E #spi@ipaddr algo:secret,可通过spi@ipaddr algo:secret 来解密IPsec ESP包(IPsec Encapsulating Security Payload,IPsec 封装安全负载, IPsec可理解为, 一整套对ip数据包的加密协议, ESP 为整个IP 数据包或其中上层协议部分被加密后的数据,前者的工作模式称为隧道模式; 后者的工作模式称为传输模式);-f #显示外部的IPv4 地址时,即非本机ip地址, 采用数字方式而不是名字;(此选项是用来对付Sun公司的NIS服务器的缺陷(NIS, 网络信息服务, tcpdump 显示外部地址的名字时会用到她提供的名称服务): 此NIS服务器在查询非本地地址名字时,常常会陷入无尽的查询循环);提示:由于对外部(foreign)IPv4地址的测试需要用到本地网络接口(tcpdump 抓包时用到的接口)及其IPv4 地址和网络掩码. 如果此地址或网络掩码不可用, 或者此接口根本就没有设置相应网络地址和网络掩码(linux 下的 'any' 网络接口就不需要设置地址和掩码, 不过此'any'接口可以收到系统中所有接口的数据包), |