第1章.     说明

本文档只适用于Tcpreplay3.x。

第2章.     Tcpreplay系列工具

2.1. 概述

首先推荐一个网站:http://tcpreplay.synfin.net/,上面有Tcpreplay的安装包和很多文档,包括手册、man页和FAQ等。本文也是在参考这个网站的基础上,通过一些实验而得出的。

Tcpreplay是一系列工具的总称,包括tcpreplay、tcprewrite和tcpprep等工具,这也是Tcpreplay的第一个字母大写的原因。它用来在Unix系统或类Unix系统上重放网络包。这些包是由tcpdump、ethereal和wireshark等软件抓取到的,即pcap格式的数据包。

正因为Tcpreplay有重放数据包的功能,所以它常被用来模拟IDS攻击等测试环境,被广泛地用来测试防火墙和IDS工具的安全性。

2.2. 功能

安装Tcpreplay包时,默认情况下是安装了如表1所示的这些工具的。表 1还给出了各个工具的功能。

工具

功能

tcpreplay

重发pcap文件中的数据包。

tcprewrite

改写pcap数据包的2-4层的头部信息,即MAC地址、IP地址和PORT等。

tcpprep

区分pcap数据包的流向,即区分出客户端和服务器。

表 1 Tcpreplay系列工具的功能

2.3. 各工具的组合

从表1可以看出tcpreplay负责发送数据包,tcprewrite用来改写数据包,tcpprep用来区分客户端和服务器。

1)        因为数据包中的内容都是双向的(客户端->服务器,服务器->客户端),tcprewrite改写数据,tcpreplay发送数据包时都应该区分方向(即区分客户端和服务器),因此这两个工具一般是工作在tcpprep的基础上的。

2)        tcpreplay可以发送任意pcap数据包,如果它想改变发送内容,就必须先用tcprewrite来改写数据包,然后再发送改写后的数据包。

2.4. 补充说明

Tcpreplay2.x中的tcpreplay将区分客户端和服务器、改写数据包,发送数据包等功能都集成在一起。Tcpreplay3.x为了设计的简单和使用的方便性而做了上述的改进。

第3章.     Tcpreplay的安装、配置

3.1. 相关的准备

Tcpreplay要实现它的功能要用到其它一些库。

1)        libpcap库。libpcap库是推荐而且几乎是必须的。Tcpreplay用它来发送数据包。请下载安装libpcap0.7.2及以上版本。

2)        tcpdump。强烈推荐但不是必需的一个工具。Tcpreplay用它来解码数据包,而且我们也可以用它的抓包功能来配合Tcpreplay的使用。当然,ethereal等软件也可以实现这样的功能,但tcpdump无疑是性价比最高的。

3)        libnet库。不推荐的一个库。Tcpreplay也可用它来发送数据包,但由于libnet自身的bug比较多且已不再有人维护,Tcpreplay未来版本有可能取消对它的支持。

更详细的说明请参看http://tcpreplay.synfin.net/上的相关内容

3.2. 安装步骤

首先,下载安装包。Tcpreplay的源码安装包可以在http://tcpreplay.synfin.net/上下载到。

然后解压安装包。假设安装包名字为tcpreplay-3.3.0.tar.gz,所在的目录为/urs/local/src,所用的操作系统为redhat9,解压安装包可以直接输入“tar –xzvf tcpreplay-3.3.0.tar.gz”。

进入解压后的文件夹。输入指令“cd tcpreplay-3.3.0”。

遵循一般的软件安装步骤,如下所示。

$./configure

$make

$make install

上面是最简化的安装。如果你还有其它安装和配置需求,请查看安装包中的INSTALL和README文档。

第4章.     Tcpreplay的使用

本部分将结合一个实例来讲解。先说明一下这个实例的运行环境和测试思路。本实例采用的是tcpreplay-3.3.0,运行在远程linux服务器上,用来发送http.pcap中的内容,同时在服务器上我用tcpdump来抓取tcpreplay发出的包;在本地windows中我用wireshark(ethereal的增强版本)来观察从服务器上下载过来的各种数据包(即tcpdump抓取到的包、tcprewrite修改后的包,这些包是通过ftp或ssh下载过来的)。

4.1. 指令风格简介

Tcpreplay系列工具的指令风格一致,都比较简洁。你可以键入“man tcpreplay”或“tcpreplay -h”类似指令来查得相关帮助。下面的讲述以tcpreplay为例。

指令的选项分简短的和完整两种形式。如查询版本的简短选项是“-V”,完整形式则是“--version”。

有的选项带有参数,而且两种选项的输入参数的形式不同。如以缓存文件选项为例,对于简短选项,形式是“-c pathname”;对于完整选项,形式是“--cachefile=pathname”。pathname是缓存文件的路径。

4.2. 区分客户端和服务器

输入如下指令。

$tcpprep –-port –cachefile=cache_test.cache --pcap=http.pcap

tcpprep的详细使用请参看相关手册(如man手册)。

--port是指tcpprep用port-split模式来区分客户端和服务器。在这种模式下,所有目的端口<1024的,将被视作客户端->服务器的包,否则视为服务器->客户端的包。tcppgrep有auto,cidr,regex,port和mac等多种模式,各种模式的详细情况请查看相关手册(如man手册)。

--pcap=http.pcap是指tcpprep处理的是http.pcap这个文件。

--cachefile=cache_test_cache是指tcpgrep处理后的信息存放在cache_test_cahe这个文件中。这个文件在tcprewrite和tcpreplay中将用到。

整个指令的意思就是采用port-spllit模式来处理http.pcap文件(区分http.pcap中的客户端和服务器),然后将处理结果存到cache_test_cache文件中。

4.3. 改写数据包的的内容

输入如下指令。

$tcprewrite --endpoints=192.168.0.1:192.168.0.2 --cachefile=cache_test.cache \

--infile=http.pcap --outfile=http_rewrite.pcap

tcprewrite的详细使用请参看相关手册(如man手册)。

--endpoints=192.168.0.1:192.168.0.2是指将客户端ip修改为192.168.0.1,将服务器ip修改为192.168.88.0.2,注意3.x版本的Tcpreplay自动地将IP的校验和修改好。用wireshark查看http_rewrite.pcap可以得到这个修改结果。

--cachefile=cache_test_cache是指tcprewrite用tcpprep 上步的处理结果——cache_test.cache来区分方向。

--infile=http.pcap是指要处理的pcap文件是http.pcap。

--outfile=http_rewrite_pcap是指处理结果存在http_rewrite_pcap文件中。这个文件将是tcpreplay发送数据包的来源。

4.4. 发送数据包

输入如下指令。

$tcpreplay –intf1=eth0 –intf2=eth0 –t –cachefile=cache_test.cache http_rewrite_pcap

tcpreplay的详细使用请参看相关手册(如man手册)。

--intf1=eth0是指主接口是eth0,客户端->服务器的数据包通过这个接口发送。服务器和客户端的区分是从tcpprep的处理结果cache_test.cache中得到的。

--intf2=eth0是指从接口是eth0,服务器->客户端的数据包通过这个接口发送。

--cachefile=cache_test_cache是指tcpreplay用tcpprep 上步的处理结果——cache_test.cache来区分方向。

http_rewrite.pcap是指tcpreplay发送的是来自http_rewrite.pcap这个文件中的数据包。

4.5. 合理使用tcpdump

我们可以合理地使用tcpdump来配合tcpreplay的使用。举两个例子。

4.5.1. 抓包

用tcpdump 抓取tcpreplay在eth0端口发出的tcp包,并要求这些包的目的地址是192.168.0.2,可输入如下的指令。

tcpdump –i eth0 –w tcpdump.pcap –s 0 '(tcp and (dst host 192.168.0.2) ) '

-w tcpdump.pcap是指将抓取到的包存到tcpdump.pcap这个文件中,-s 0是指尽可能大的抓取每个包(尽量不截断),最后面的单引号里的内容是过滤规则。

4.5.2. 选包

又如你只想把test.pcap文件中端口号为80的tcp包(http包)提取出来,再转交给tcpreplay去发送,可以这样做。

$ tcpdump -r test.pcap -w http_only.pcap –s 0 tcp port 80

-r test.pcap是指从test.pcap中读包。这个指令的意思是从test.pcap中读包后,根据“tcp port 80”这个过滤规则筛选出满足要求的包,将这些包存到http_only.pcap这个文件中去。

此后我们就可以用tcpreplay来发送http_only.pcap中的http包了。

inux下网络发包工具 Tcpreplay3.x。的更多相关文章

  1. xcap发包工具的简单使用1(构造报文)

    xcap是一个免费的网络发包工具,可以构造和发送常用的网络报文,如arp,ip,icmp,udp等,支持构造报文和发送报文等. 报文隶属于报文组,每个报文组包含多个报文,因此,创建报文首先要创建报文组 ...

  2. [No00006B]方便的网络下载工具wget 可下载网站目录下的所有文件(可下载整个网站)

    wget是linux下命令行的下载工具,功能很强大,它能完成某些下载软件所不能做的,比如如果你想下载一个网页目录下的所有文件,如何做呢?网络用户有时候会遇到需要下载一批文件的情况,有时甚至需要把整个网 ...

  3. [转]Linux下网络常用命令和工具

    转自:http://int32bit.me/2016/05/04/Linux%E5%B8%B8%E7%94%A8%E7%BD%91%E7%BB%9C%E5%B7%A5%E5%85%B7%E6%80%B ...

  4. [原创]Linux下网络性能测试Netperf工具介绍及安装

    [原创]Linux下网络性能测试Netperf工具介绍及安装 1 官方网站 http://www.netperf.org/netperf/ 2 Netperf介绍 Netperf是一种网络性能的测试工 ...

  5. 三款经常使用IP发包工具介绍

    AntPower 版权全部© 2003 技术文章http://www.antpower.org 第1 页共14 页AntPower-技术文章三款经常使用IP 发包工具介绍小蚁雄心成员郎国军著lgj@q ...

  6. CentOS下性能监测工具 dstat

    原文链接:http://www.bkjia.com/Linuxjc/935113.html 参考链接:https://linux.cn/article-3215-1.html,http://lhfli ...

  7. Linux下网络流量实时监控工具

    Linux下网络流量实时监控工具大全 在工作中发现,经常因为业务的原因,需要即时了解某台服务器网卡的流量,虽然公司也部署了cacti软件,但cacti是五分钟统计的,没有即时性,并且有时候打开监控页面 ...

  8. 网络性能测试工具iperf详细使用图文教程

      Iperf是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽,具有多种参数和UDP特性. Iperf可以报告带宽,延迟抖动和数据包丢失.利用Iper ...

  9. 网络性能测试工具iperf详细使用图文教程【转载】

    原文:http://blog.163.com/hlz_2599/blog/static/142378474201341341339314/ 参考:http://man.linuxde.net/iper ...

随机推荐

  1. [问题]编译报错:clang: error: linker command failed with exit code 1及duplicate symbol xxxx in错误解决方法之一

    今天添加了一个新类(包括m,h,xib文件),还没有调用,-编译遇到如下错误,根据错误提示, duplicate symbol param1 in: /Users/xxxx/Library/Devel ...

  2. BZOJ 1574: [Usaco2009 Jan]地震损坏Damage

    Description 农夫John的农场遭受了一场地震.有一些牛棚遭到了损坏,但幸运地,所有牛棚间的路经都还能使用. FJ的农场有P(1 <= P <= 30,000)个牛棚,编号1.. ...

  3. [wikioi]关押罪犯

    错误半天还是因为并查集写错了.写错的地方是合并X和Y的时候,应该把FX挂到FY上去,而不是把X挂到Y上或FY上去,因为FX和FY下面有一树别的节点. http://www.nocow.cn/index ...

  4. [OJ] Find Minimum in Rotated Sorted Array II

    LintCode 160. Find Minimum in Rotated Sorted Array II (Medium) LeetCode 154. Find Minimum in Rotated ...

  5. on the wane

    从文章PHP, Once The Web's Favorite Programming Language, Is On The Wane看到on the wane的说法. becoming less; ...

  6. MySQL5.6 基于db的并行复制

    slave的几个类结构:      Master_info:用于IO线程的参数,包括连接master实例的信息.      Relay_log_info:用于sql线程,表示relay log相关的信 ...

  7. mybatis源码分析(3)——SqlSessionManager类

    从上图可能看出,在 mybatis中,SqlSession的实现类有两个,其中SqlSessionManager类不但实现了SqlSession接口,同时也实现了SqlSessionFactory接口 ...

  8. WordPress Platinum SEO插件跨站脚本漏洞

    漏洞名称: WordPress Platinum SEO插件跨站脚本漏洞 CNNVD编号: CNNVD-201309-398 发布时间: 2013-09-24 更新时间: 2013-09-24 危害等 ...

  9. 老的acm & oj学习站点

    1.网易小鱼博客 http://gisyhy.blog.163.com/blog/#m=0&t=1&c=fks_087069086082087064085081082095085084 ...

  10. 【转】如何单独编译Android源代码中的模块--不错

    原文网址:http://blog.csdn.net//article/details/6566662/ 第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命 ...