文件管理 · 2022年8月8日

tcpdump指定文件大小|组播v3 怎么tcpdump抓包

❶ linux抓包如何分包

方法如下。tcpmp 是Linux系统下的一个强大的命令,可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。本教程对tcpmp命令使用进行讲解说明,通过本教程您可以学会linux系统下使用tcpmp命令进行网络抓包,实现对数据包进行捕获分析。tcpmp 命令格式介绍首先我们对Linux系统下tcpmp命令格式进行一个介绍说明,在下面的使用教程中讲到tcpmp命令示例时,您就可以参考tcpmp命令参数说明进行学习。该命令示例在CentOS release 6.10 (Final) 中tcpmp演示语法:tcpmp [ -AdDefIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ] [ -C file_size ] [ -G rotate_seconds ] [ -F file ] [ -i interface ] [ -j tstamp_type ] [ -m mole ] [ -M secret ] [ -Q|-P in|out|inout ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -E [email protected] algo:secret,… ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ expression ]命令行参数介绍:-A 以ASCII格式打印出所有分组,并将链路层的头最小化。-c 在收到指定的数量的分组后,tcpmp就会停止。-C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。-d 将匹配信息包的代码以人们能够理解的汇编格式给出。-dd 将匹配信息包的代码以c语言程序段的格式给出。-ddd 将匹配信息包的代码以十进制的形式给出。-D 打印出系统中所有可以用tcpmp截包的网络接口。-e 在输出行打印出数据链路层的头部信息。-E 用[email protected] algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。-f 将外部的Internet地址以数字的形式打印出来。-F 从指定的文件中读取表达式,忽略命令行中给出的表达式。-i 指定监听的网络接口。-l 使标准输出变为缓冲行形式。-L 列出网络接口的已知数据链路。-m 从文件mole中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。-M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。-n 不把网络地址转换成名字。-N 不输出主机名中的域名部分。例如,link.linux265.com 只输出link。-t 在输出的每一行不打印时间戳。-O 不运行分组分组匹配(packet-matching)代码优化程序。-P 不将网络接口设置成混杂模式。-q 快速输出。只输出较少的协议信息。-r 从指定的文件中读取包(这些包一般通过-w选项产生)。-S 将tcp的序列号以绝对值形式输出,而不是相对值。-s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。-t 不在每一行中输出时间戳。-tt 在每一行中输出非格式化的时间戳。-ttt 输出本行和前面一行之间的时间差。-tttt 在每一行中输出由date处理的默认格式的时间戳。-u 输出未解码的NFS句柄。-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。-vv 输出详细的报文信息。-w 直接将分组写入文件中,而不是不分析并打印出来。-x 以16进制数形式显示每一个报文 (去掉链路层报头) . 可以显示较小的完整报文, 否则只显示snaplen个字节.-xx 以16进制数形式显示每一个报文(包含链路层包头)。-X 以16进制和ASCII码形式显示每个报文(去掉链路层报头)。-XX 以16进制和ASCII吗形式显示每个报文(包含链路层报头)。-y 设置tcpmp 捕获数据链路层协议类型-Z 使tcpmp 放弃自己的超级权限(如果以root用户启动tcpmp, tcpmp将会有超级用户权限), 并把当前tcpmp的用户ID设置为user, 组ID设置为user首要所属组的IDtcpmp 命令使用示例linux系统下执行tcpmp命令需要root账号或者具备sudo权限的账号,否则执行tcpmp命令说,系统会提示tcpmp: no suitable device found。在下面的例子中,-i eth0 参数表示只抓取 eth0 接口数据包,不加-i eth0 是表示抓取所有的接口包括 lo。01、抓取所有网络包,并在terminal中显示抓取的结果,将包以十六进制的形式显示。tcpmp02、抓取所有的网络包,并存到 result.cap 文件中。tcpmp -w result.cap03、抓取所有的经过eth0网卡的网络包,并存到result.cap 文件中。tcpmp -i eth0 -w result.cap04、抓取源地址是192.168.1.100的包,并将结果保存到 result.cap 文件中。tcpmp src host 192.168.1.100 -w result.cap05、抓取地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。tcpmp host 192.168.1.100 -w result.cap06、抓取目的地址包含是192.168.1.100的包,并将结果保存到 result.cap 文件中。tcpmp dest host 192.168.1.100 -w result.cap07、抓取主机地址为 192.168.1.100 的数据包tcpmp -i eth0 -vnn host 192.168.1.10008、抓取包含192.168.1.0/24网段的数据包tcpmp -i eth0 -vnn net 192.168.1.0/2409、抓取网卡eth0上所有包含端口22的数据包tcpmp -i eth0 -vnn port 2210、抓取指定协议格式的数据包,协议格式可以是「udp,icmp,arp,ip」中的任何一种,例如以下命令:tcpmp udp -i eth0 -vnn11、抓取经过 eth0 网卡的源 ip 是 192.168.1.100 数据包,src参数表示源。tcpmp -i eth0 -vnn src host 192.168.1.10012、抓取经过 eth0 网卡目的 ip 是 192.168.1.100 数据包,dst参数表示目的。tcpmp -i eth0 -vnn dst host 192.168.1.10013、抓取源端口是22的数据包tcpmp -i eth0 -vnn src port 2214、抓取源ip是 192.168.1.100 且目的ip端口是22的数据包tcpmp -i eth0 -vnn src host 192.168.1.100 and dst port 2215、抓取源ip“192.168.1.100“22tcpmp -i eth0 -vnn src host 192.168.1.100 or port 2216、抓取源ip“192.168.1.100“22tcpmp -i eth0 -vnn src host 192.168.1.100 and not port 2217、抓取源ip是192.168.1.100且目的端口是22,或源ip是192.168.1.102且目的端口是80的数据包。tcpmp -i eth0 -vnn ( src host 192.168.1.100 and dst port 22 ) or ( src host 192.168.1.102 and dst port 80 )18、把抓取的数据包记录存到/tmp/result文件中,当抓取100个数据包后就退出程序。tcpmp _i eth0 -vnn -w /tmp/result -c 10019、从/tmp/result记录中读取tcp协议的数据包tcpmp -i eth0 tcp -vnn -r /tmp/result20、想要截获所有192.168.1.100的主机收到的和发出的所有的数据包:tcpmp host 192.168.1.10021、如果想要获取主机192.168.1.100除了和主机192.168.1.101之外所有主机通信的ip包,使用命令:tcpmp ip host 192.168.1.100 and ! 192.168.1.10122、如果想要获取主机 192.168.1.100 接收或发出的 telnet 包,使用如下命令:tcpmp tcp port 23 host 192.168.1.100

❷ 求tcpmp高手解惑!tcpmp -X -s 0 -i any port 8123 -w ./tcpmp/xdrout.pcap 这条命令的作用

-X的官房说明是: “分析和打印时,打印的每个数据包的报头,打印十六进制和ASCII的数据,每一个数据包(减去其链路层报头)”说白了,就是以十六进制打印数据报文,但是不显示以太网祯的报头,只显示IP层的内容。-s 抓报长度,一般设置为0,即65535字节-i 就是监听的网络接口,是eth0,eth1 还是什么,any 表示所有的网络接口。port 8123 就是只监听8123 端口的信息。-w 就是将记录保存在一个指定的文件中,后面自然就是这个文件的地址了。大概的意思就是如上。 、补充一下,可以优化一下: tcpmp -nxxi any port 8123 -w ./tcpmp/xdrout.pcap 这样抓到的包信息更详细

❸ TCPDUMP 抓包 怎么查看 抓的包的内容

1、tcpmp检测登录linux系统输入tcpmp,如果找不到表示没有安装。也可以用rpm查询。

❹ tcpmp是什么意思.干什么用的.哪里有详细的资料,

TCPDUMP简介在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的技术之一。sniffer工具首先是为网络管理员和网络程序员进行网络分析而设计的。对于网络管理人员来说,使用嗅探器可以随时掌握网络的实际情况,在网络性能急剧下降的时候,可以通过sniffer工具来分析原因,找出造成网络阻塞的来源。对于网络程序员来说,通过sniffer工具来调试程序。 用过windows平台上的sniffer工具(例如,netxray和sniffer pro软件)的朋友可能都知道,在共享式的局域网中,采用sniffer工具简直可以对网络中的所有流量一览无余!Sniffer工具实际上就是一个网络上的抓包工具,同时还可以对抓到的包进行分析。由于在共享式的网络中,信息包是会广播到网络中所有主机的网络接口,只不过在没有使用sniffer工具之前,主机的网络设备会判断该信息包是否应该接收,这样它就会抛弃不应该接收的信息包,sniffer工具却使主机的网络设备接收所有到达的信息包,这样就达到了网络监听的效果。Linux作为网络服务器,特别是作为路由器和网关时,数据的采集和分析是必不可少的。所以,今天我们就来看看Linux中强大的网络数据采集分析工具——TcpDump。 用简单的话来定义tcpmp,就是:mp the traffice on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 作为互联网上经典的的系统管理员必备工具,tcpmp以其强大的功能,灵活的截取策略,成为每个高级的系统管理员分析网络,排查问题等所必备的东东之一。 顾名思义,TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 tcpmp提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpmp存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。 普通情况下,直接启动tcpmp将监视第一个网络界面上所有流过的数据包。 ----------------------- bash-2.02# tcpmp tcpmp: listening on eth0 11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50 11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43 0000 0000 0080 0000 1007 cf08 0900 0000 0e80 0000 902b 4695 0980 8701 0014 0002 000f 0000 902b 4695 0008 00 11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97 ffff 0060 0004 ffff ffff ffff ffff ffff 0452 ffff ffff 0000 e85b 6d85 4008 0002 0640 4d41 5354 4552 5f57 4542 0000 0000 0000 00 ^C ------------------------ 首先我们注意一下,从上面的输出结果上可以看出来,基本上tcpmp总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数 TcpDump的参数化支持 tcpmp支持相当多的不同参数,如使用-i参数指定tcpmp监听的网络界面,这在计算机具有多个网络界面时非常有用,使用-c参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存,等等。 然而更复杂的tcpmp参数是用于过滤目的,这是因为网络中流量很大,如果不加分辨将所有的数据包都截留下来,数据量太大,反而不容易发现需要的数据包。使用这些参数定义的过滤规则可以截留特定的数据包,以缩小目标,才能更好的分析网络中存在的问题。tcpmp使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,充分利用这些过滤规则就能达到迅速定位故障的目的。请使用man tcpmp查看这些过滤规则的具体用法。 显然为了安全起见,不用作网络管理用途的计算机上不应该运行这一类的网络分析软件,为了屏蔽它们,可以屏蔽内核中的bpfilter伪设备。一般情况下网络硬件和TCP/IP堆栈不支持接收或发送与本计算机无关的数据包,为了接收这些数据包,就必须使用网卡的混杂模式,并绕过标准的TCP/IP堆栈才行。在FreeBSD下,这就需要内核支持伪设备bpfilter。因此,在内核中取消bpfilter支持,就能屏蔽tcpmp之类的网络分析工具。 并且当网卡被设置为混杂模式时,系统会在控制台和日志文件中留下记录,提醒管理员留意这台系统是否被用作攻击同网络的其他计算机的跳板。 May 15 16:27:20 host1 /kernel: fxp0: promiscuous mode enabled 虽然网络分析工具能将网络中传送的数据记录下来,但是网络中的数据流量相当大,如何对这些数据进行分析、分类统计、发现并报告错误却是更关键的问题。网络中的数据包属于不同的协议,而不同协议数据包的格式也不同。因此对捕获的数据进行解码,将包中的信息尽可能的展示出来,对于协议分析工具来讲更为重要。昂贵的商业分析工具的优势就在于它们能支持很多种类的应用层协议,而不仅仅只支持tcp、udp等低层协议。 从上面tcpmp的输出可以看出,tcpmp对截获的数据并没有进行彻底解码,数据包内的大部分内容是使用十六进制的形式直接打印输出的。显然这不利于分析网络故障,通常的解决办法是先使用带-w参数的tcpmp 截获数据并保存到文件中,然后再使用其他程序进行解码分析。当然也应该定义过滤规则,以避免捕获的数据包填满整个硬盘。 TCP功能 数据过滤 不带任何参数的TcpDump将搜索系统中所有的网络接口,并显示它截获的所有数据,这些数据对我们不一定全都需要,而且数据太多不利于分析。所以,我们应当先想好需要哪些数据,TcpDump提供以下参数供我们选择数据: -b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。 例如:tcpmp -b arp 将只显示网络中的arp即地址转换协议信息。 -i 选择过滤的网络接口,如果是作为路由器至少有两个网络接口,通过这个选项,就可以只过滤指定的接口上通过的数据。例如: tcpmp -i eth0 只显示通过eth0接口上的所有报头。 src、dst、port、host、net、ether、gateway这几个选项又分别包含src、dst 、port、host、net、ehost等附加选项。他们用来分辨数据包的来源和去向,src host 192.168.0.1指定源主机IP地址是192.168.0.1,dst net 192.168.0.0/24指定目标是网络192.168.0.0。以此类推,host是与其指定主机相关无论它是源还是目的,net是与其指定网络相关的,ether后面跟的不是IP地址而是物理地址,而gateway则用于网关主机。可能有点复杂,看下面例子就知道了: tcpmp src host 192.168.0.1 and dst net 192.168.0.0/24 过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头。 tcpmp ether src 00:50:04:BA:9B and dst…… 过滤源主机物理地址为XXX的报头(为什么ether src后面没有host或者net?物理地址当然不可能有网络喽)。 Tcpmp src host 192.168.0.1 and dst port not telnet 过滤源主机192.168.0.1和目的端口不是telnet的报头。 ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。 例如: tcpmp ip src…… 只过滤数据-链路层上的IP报头。 tcpmp udp and src host 192.168.0.1 只过滤源主机192.168.0.1的所有udp报头。 数据显示/输入输出 TcpDump提供了足够的参数来让我们选择如何处理得到的数据,如下所示: -l 可以将数据重定向。 如tcpmp -l >tcpcap.txt将得到的数据存入tcpcap.txt文件中。 -n 不进行IP地址到主机名的转换。 如果不使用这一项,当系统中存在某一主机的主机名时,TcpDump会把IP地址转换为主机名显示,就像这样:eth0 < ntc9.1165> router.domain.net.telnet,使用-n后变成了:eth0 < 192.168.0.9.1165 > 192.168.0.1.telnet。 -nn 不进行端口名称的转换。 上面这条信息使用-nn后就变成了:eth0 < ntc9.1165 > router.domain.net.23。 -N 不打印出默认的域名。 还是这条信息-N 后就是:eth0 < ntc9.1165 > router.telnet。 -O 不进行匹配代码的优化。 -t 不打印UNIX时间戳,也就是不显示时间。 -tt 打印原始的、未格式化过的时间。 -v 详细的输出,也就比普通的多了个TTL和服务类型。 TCPDUMP的安装 在linux下tcpmp的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。 1. rpm包的形式安装 #rpm -ivh tcpmp-3_4a5.rpm 这样tcpmp就顺利地安装到你的linux系统中。怎么样,很简单吧。 2. 源程序的安装 #tar xvfz tcpmp-3_4a5.tar.Z rpm的包可以使用如下命令安装: #rpm -ivh tcpmp-3_4a5.src.rpm 这样就把tcpmp的源代码解压到/usr/src/redhat/SOURCES目录下. 第二步 做好编译源程序前的准备活动 在编译源程序之前,最好已经确定库文件libpcap已经安装完毕,这个库文件是tcpmp软件所需的库文件 。同样,你同时还要有一个标准的c语言编译器。在linux下标准的c 语言编译器一般是gcc。 在tcpmp的源程序目录中。有一个文件是Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文件。在Makefile.in文件中,可以根据系统的配置来修改BINDEST 和 MANDEST 这两个宏定义,缺省值是 BINDEST = @[email protected] MANDEST = @[email protected] 第一个宏值表明安装tcpmp的二进制文件的路径名,第二个表明tcpmp的man 帮助页的路径名,你可以修改它们来满足系统的需求。 第三步 编译源程序 使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。并且根据Makefile.in文件自动生成Makefile文件,以便编译使用.make 命令则根据Makefile文件中的规则编译tcpmp的源程序。使用make install命令安装编译好的tcpmp的二进制文件。 总结一下就是: # tar xvfz tcpmp-3_4a5.tar.Z # vi Makefile.in # . /configure # make # make install 关于tcpmp更详细的信息,请查看Man tcpmp。

❺ 怎样设置tcpmp抓包的缓冲大小值

你好,你可以试试我这个:sec=300while [ 1 ]dokillall tcpmpmv ip.packet ip.packet.1tcpmp -w ip.packet -s 0 tcp or udp &rrd_data=""traffic=`tcpmp -r ip.packet.1 src 192.168.0.1 and dst 192.168.0.2 -v | sed -e 's/.*, length: \(.*\))/\1/g' | awk -F " " '{print $1}'| sed -e 's/)//g'| tr '\n' '+'`traffic=`echo ${traffic}0 | bc`traffic=`expr $traffic / $sec`rrd_data=$trafficecho $rrd_data >1.txtecho $rrd_data >>2.txtsleep $secdone

❻ win10 怎么使用tcpmp命令

tcpmp -i: 后跟网卡名;host:后跟主机IP;-a —— 将网络地址和广播地址转变成名字;-c —— 指定抓取的数据包数量;-n:不把主机IP转为主机名;-r:指定从某个文件中读取数据包;-e:指定将监听到的数据包链路层的信息打印出来,包括源mac和目的mac,以及网络层的协议;-nn:不把ip、协议、端口等转为名字;-T —— 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议);-w —— 直接将包写入文件中,并不分析和打印出来;and:条件筛选,包含两个地址;or:条件筛选,两个之中的一个;src:后跟起始地址;dst:后跟目的地址;

❼ 组播v3 怎么tcpmp抓包

你好,我使用的是ubuntu 14.04(虚拟机),可以打开终端输入tcpmp命令抓包。我经常使用的命令是tcpmp -i eth0 -w web.pcap。i参数表示网卡,w参数表示将抓包结果保存到pcap文件中,这样接下来可以使用wireshark查看。如果还想明白别的参数的意义的话,可以输入tcpmp -h,就显示帮助信息了。还有,要使用tcpmp,最好切换到root用户(sudo命令)。再复制一部分别的的用法,也可以自己再搜索一下:-A 以ASCII码方式显示每一个数据包(不会显示数据包中链路层头部信息). 在抓取包含网页数据的数据包时, 可方便查看数据(nt: 即Handy for capturing web pages).-c count tcpmp将在接受到count个数据包后退出.-C file-size (nt: 此选项用于配合-w file 选项使用) 该选项使得tcpmp 在把原始数据包直接保存到文件中之前, 检查此文件大小是否超过file-size. 如果超过了, 将关闭此文件,另创一个文件继续用于原始数据包的记录. 新创建的文件名与-w 选项指定的文件名一致, 但文件名后多了一个数字.该数字会从1开始随着新创建文件的增多而增加. file-size的单位是百万字节(nt: 这里指1,000,000个字节,并非1,048,576个字节, 后者是以1024字节为1k, 1024k字节为1M计算所得, 即1M=1024 * 1024 = 1,048,576)-d 以容易阅读的形式,在标准输出上打印出编排过的包匹配码, 随后tcpmp停止.(nt | rt: human readable, 容易阅读的,通常是指以ascii码来打印一些信息. compiled, 编排过的. packet-matching code, 包匹配码,含义未知, 需补充)-dd 以C语言的形式打印出包匹配码.-ddd 以十进制数的形式打印出包匹配码(会在包匹配码之前有一个附加的'count'前缀).-D 打印系统中所有tcpmp可以在其上进行抓包的网络接口. 每一个接口会打印出数字编号, 相应的接口名字, 以及可能的一个网络接口描述. 其中网络接口名字和数字编号可以用在tcpmp 的-i flag 选项(nt: 把名字或数字代替flag), 来指定要在其上抓包的网络接口. 此选项在不支持接口列表命令的系统上很有用(nt: 比如, Windows 系统, 或缺乏 ifconfig -a 的UNIX系统); 接口的数字编号在windows 2000 或其后的系统中很有用, 因为这些系统上的接口名字比较复杂, 而不易使用. 如果tcpmp编译时所依赖的libpcap库太老,-D 选项不会被支持, 因为其中缺乏 pcap_findalldevs()函数.-e 每行的打印输出中将包括数据包的数据链路层头部信息

❽ tcpmp数据过大有1G,导致Wireshark无法打开tcpmp包分析,有哪位专家可以解答下,谢谢了

实验一下 tshark.exe" -r test.pcap -R "frame.number <20" -w test1.acp这样这个test1就只包含序号为1-19的包。通过制定包数来输出不同序号到不同的文件。当然,如果你只想看某种类型的包,用表示式直接过滤出来更好

❾ 如何读懂tcpmp的输出

tcpmp 是 Linux 下的抓包工具,使用参数比较多,输出条目比较细。tcpmp的命令行格式tcpmp [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ][ -T 类型 ] [ -w 文件名 ] [表达式 ]tcpmp的参数选项-A:以ASCII编码打印每个报文(不包括链路层的头),这对分析网页来说很方便;-a:将网络地址和广播地址转变成名字; -c<数据包数目>:在收到指定的包的数目后,tcpmp就会停止;-C:用于判断用 -w 选项将报文写入的文件的大小是否超过这个值,如果超过了就新建文件(文件名后缀是1、2、3依次增加);-d:将匹配信息包的代码以人们能够理解的汇编格式给出; -dd:将匹配信息包的代码以c语言程序段的格式给出; -ddd:将匹配信息包的代码以十进制的形式给出;-D:列出当前主机的所有网卡编号和名称,可以用于选项 -i;-e:在输出行打印出数据链路层的头部信息; -f:将外部的Internet地址以数字的形式打印出来; -F<表达文件>:从指定的文件中读取表达式,忽略其它的表达式; -i<网络界面>:监听主机的该网卡上的数据流,如果没有指定,就会使用最小网卡编号的网卡(在选项-D可知道,但是不包括环路接口),linux 2.2 内核及之后的版本支持 any 网卡,用于指代任意网卡; -l:如果没有使用 -w 选项,就可以将报文打印到 标准输出终端(此时这是默认); -n:显示ip,而不是主机名; -N:不列出域名; -O:不将数据包编码最佳化; -p:不让网络界面进入混杂模式; -q:快速输出,仅列出少数的传输协议信息; -r<数据包文件>:从指定的文件中读取包(这些包一般通过-w选项产生); -s<数据包大小>:指定抓包显示一行的宽度,-s0表示可按包长显示完整的包,经常和-A一起用,默认截取长度为60个字节,但一般ethernetMTU都是1500字节。所以,要抓取大于60字节的包时,使用默认参数就会导致包数据丢失; -S:用绝对而非相对数值列出TCP关联数; -t:在输出的每一行不打印时间戳; -tt:在输出的每一行显示未经格式化的时间戳记; -T<数据包类型>:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议); -v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息; -vv:输出详细的报文信息; -x/-xx/-X/-XX:以十六进制显示包内容,几个选项只有细微的差别,详见man手册; -w<数据包文件>:直接将包写入文件中,并不分析和打印出来;expression:用于筛选的逻辑表达式;tcpmp的表达式表达式是一个逻辑表达式,tcpmp利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。在表达式中一般如下几种类型的关键字:关于类型的关键字,主要包括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,udpFddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和e ther具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpmp将会监听所有协议的信息包。逻辑运算符关键字非运算 'not ' '! '与运算 'and','&&'或运算 'or' ,'||'这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。其他重要关键字除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater。案例想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:tcpmp host 210.27.48.1想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令tcpmp host 210.27.48.1 and \(210.27.48.2 or 210.27.48.3\)如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:tcpmp ip host 210.27.48.1 and ! 210.27.48.2如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:tcpmp tcp port 23 host 210.27.48.1输出结果介绍下面我们介绍几种典型的tcpmp命令的输出信息数据链路层头信息使用命令tcpmp –e host iceice 是一台装有linux的主机,她的MAC地址是0:90:27:58:af:1aH219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5b:46命令的输出结果如下所示:21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telnet 0:0(0) ack 22535 win 8760 (DF)分析:21:50:12 是显示的时间847509 是ID号eth0 < 表示从网络接口eth0 接受该数据包eth0 > 表示从网络接口设备发送数据包8:0:20:79:5b:46 是主机H219的MAC地址,它表明是从源地址H219发来的数据包0:90:27:58:af:1a 是主机ICE的MAC地址,表示该数据包的目的地址是ICEip 是表明该数据包是IP数据包,60 是数据包的长度,h219.33357 > ice.telnet 表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口ack 22535 表明对序列号是222535的包进行响应win 8760 表明发送窗口的大小是8760ARP包的TCPDUMP输出信息使用命令#tcpmp arp得到的输出结果是:22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)分析:22:32:42 时间戳802509 ID号eth0 > 表明从主机发出该数据包arp 表明是ARP请求包who-has route tell ice 表明是主机ICE请求主机ROUTE的MAC地址0:90:27:58:af:1a 是主机ICE的MAC地址。TCP包的输出信息用TCPDUMP捕获的TCP包的一般输出信息是:src > dst: flagsdata-seqnoackwindowurgentoptionssrc > dst 表明从源地址到目的地址flags 是TCP包中的标志信息,S 是SYN标志, F(FIN), P(PUSH) , R(RST) "."(没有标记)data-seqno 是数据包中的数据的顺序号ack 是下次期望的顺序号window 是接收缓存的窗口大小urgent 表明数据包中是否有紧急指针options 是选项用TCPDUMP捕获的UDP包的一般输出信息是:route.port1 > ice.port2: udplenthUDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenthwireshark查看要让wireshark能分析tcpmp的包,关键的地方是 -s 参数, 还有要保存为-w文件,例如下面的例子:./tcpmp -i eth0 -s 0 -w SuccessC2Server.pcaphost 192.168.1.20 # 抓该主机的所有包,在wireshark中过滤./tcpmp -i eth0 'dst host 239.33.24.212' -w raw.pcap # 抓包的时候就进行过滤wireshark的过滤,很简单的,比如:tcp.port eq 5541ip.addr eq 192.168.2.1过滤出来后, 用fllow tcp 查看包的内容。其他device eth0/eth1 entered promiscuous modemessage日志中提示:kernel: device eth0 entered promiscuous modekernel: device eth0 left promiscuous mode网卡进入了混杂模式。一般对通信进行抓包分析时进入混杂模式(tcpmp)。(默认网卡启用了混杂模式的)关闭混杂模式:ifconfig eth0 -promisc启用混杂模式:ifconfig eth0 promiscTCP协议的KeepAlive机制与HeartBeat心跳包:http://www.nowamagic.net/academy/detail/23350382TCP Keepalive HOWTO:http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/