Tcpreplay3.x的安装、使用和源码分析

tcpreplay的安装与使用 阅读详情
 

整理记录

版本

时间

内容

整理人

V1.0

2008-05-21

Tcpreplay的安装、使用和源码分析

彭令鹏

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tcpreplay3.x的安装、使用和源码分析

第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  /* 检查系统的配置,自动生成Makefile */

$make       /* 编译、连接并安装Tcpreplay */

$make install  /* 安装Tcpreplay手册等 */

上面是最简化的安装。如果你还有其它安装和配置需求,请查看安装包中的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) ) '  /* 如果不能同时开多个shell 窗口,可以让它后台运行 */

-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包了。

第5章.     Tcpreplay的源码分析

由于时间和精力有限,源码分析是以后的任务。tcpreplay-3.3.0的源码,稍微瞄了下,发现很大,大概有1M多。它的源码分析的资料少,如果真要分析它的源码的话,还是要费很大功夫的。我的分析思路大致是先抓住Tcpreplay.c、tcprewrite.c和Tcpprep.c等文件,然后从这些文件顺藤摸瓜,分析它的具体实现。另外,可以通过阅读Tcpreplay的最初版本(代码量应该是小多了),来帮助我们理解Tcpreplay的实现;

Tcpreplay的使用手册 Tcpreplay是一系列工具的总称,包括tcpreplay、tcprewrite和tcpprep等工具,这也是Tcpreplay的第一个字母大写的原因。它用来在Unix系统或类Unix系统上重放网络包。这些包是由tcpdump、ethereal和wireshark等软件抓取到的,即pcap格式的数据包。正因为Tcpreplay有重放数据包的功能,所以它常被用来模拟IDS攻击等测试环境,被广泛地用来测试防火墙和IDS工具的安全性。tcpprep用于将pcap数据包分解为客户端和服务器端。 阅读详情

相关推荐

tcprewrite批量修改报文ip地址一

简单的说,tcpreplay是一种pcap包的重放工具, 它可以将用ethreal, wireshark工具抓下来的包原样或经过任意修改后重放回去. 它允许你对报文做任意的修改(主要是指对2层, 3层, 4层报文头), 指定重放报文的速度等, 这样tcpreplay就可以用来复现抓包的情景以定位bug, 以极快的速度重放从而实现压力测试。一、安装指南由于tcpreplay依赖libpcap库,所以安装tcpreplay之前必须先安装libpcap(在windows下为winpcap)否则 ./configu

悦分享 2684

tcpreplay 回放工具

随笔记录tcpreplay是一种pcap包的重放工具, 包括(tcpprep、tcprewrite、tcpreplay和tcpbridge),它可以将用ethreal, wireshark工具抓下来的包原样或经过任意修改后重放回去. 它允许你对报文做任意的修改(主要是指对2层, 3层, 4层报文头), 指定重放报文的速度等, 这样tcpreplay就可以用来复现抓包的情景以定位bug。

weixin_57632548的博客 2368

VSCode+Keil高效开发STM32:Keil Assistant插件配置全攻略

本文详细介绍了如何通过VSCode的Keil Assistant插件,将Keil MDK的编译调试能力与VSCode的现代编辑体验相结合,打造高效的STM32开发环境。文章涵盖了从环境配置、工程导入、智能提示设置到与STM32CubeMX协同工作的全流程攻略,旨在解决Keil编辑器效率低下的痛点,大幅提升嵌入式开发的编码与项目管理效率。

gold的博客 507

Tcpreplay教程

第1章. 说明 本文档只适用于Tcpreplay3.x。 第2章. Tcpreplay系列工具 2.1. 概述 首先推荐一个网站:http://tcpreplay.synfin.net/,上面有Tcpreplay的安装包和很多文档,包括手册、man页和FAQ等。本文也是在参考这个网站的基础上,通过一些实验而得出的。 Tcpreplay是一系列工具的总称,包括tcpreplay、tcprewrite

nuoline的专栏 4191

Claude Skills 深度讲解

阶段 1:Function Call(2023)├─ 大模型可以调用外部工具├─ 问题:缺乏对任务的深度理解└─ 局限:工具调用简单线性阶段 2:MCP 上下文工程(2024)├─ 大模型有了更丰富的上下文和工具├─ 问题:仍然需要手动编写复杂的 Prompt└─ 局限:每次对话都需要重新加载上下文阶段 3:Claude Skills(2025)├─ 大模型有了「能力模块」的概念├─ 可以动态加载、组合、执行专门的工作流├─ 真正实现了「知识的模块化和复用」

u013134676的博客 1464

国产PHY芯片YT8512H替代LAN8742A的实战指南(STM32F407平台)

本文详细介绍了在STM32F407平台上,使用国产PHY芯片YT8512H替代LAN8742A的完整实战过程。文章深入剖析了硬件设计中的关键信号连接差异(如CRS_DV与RXDV复用)、时钟布线要点,并提供了软件驱动修改、PHY配置及调试排错的系统指南,旨在帮助工程师高效完成国产化替代,规避常见陷阱。

defi6farmer的博客 857

tcpdump源码分析(4)——使用详细

最后我们来看下tcpdump的使用详细,不过这个就是使用指南了,其实使用tcpdump –help看到的内容更加的官方和专家,此处不过是罗列一些常用的仅当参考罢了。 1.1.1.1 过滤关键字 第一种:关于类型,主要包括host,net,port等。 第二种:关于传输方向,主要包括src , dst ,dst or src, dst and sr...

weixin_34319374的博客 443

YOLOv12改进策略【Neck】| CGA Fusion:内容引导的注意力融合模块,空间权重引导的多模态特征自适应融合

本文记录的是利用CGA Fusion 模块改进 YOLOv12 的多模态融合部分。(Content-Guided Attention Fusion)通过内容引导注意力生成空间权重,引导高低层特征的自适应融合。本文利用模块,通过内容引导注意力生成空间权重,自适应地融合两个模态的特征,在特征融合阶段实现跨模态语义对齐与噪声抑制,增强对不同模态互补特征的利用能力,从而提升模型在多模态场景下的检测鲁棒性与准确性。DEA-Net: Single image dehazing based on detail-enhan

Limiiiing的博客 433

tcpreplay 学习与使用经验(持续更新)

记录 tcpreplay 3剑客的使用,简要分析使用的一些心得与配套设置;后续将持续补充

记录工作的点滴收获 1956

【报错解决】OpenClaw 报错 FetchError: request to [https://registry.npmjs.org/](https://registry.npmjs.or

在国产基础软件与云原生生态逐步成熟的背景下,越来越多的开发者开始尝试将 Web 前端、AI 推理、系统服务等组件部署到国产操作系统与国产云环境中。我所在的项目正是这样一个场景: 我们基于 OpenClaw 构建一套云端 AI 管理平台,用于统一管理模型服务、前端控制台与后台 API。

博客 1753

AI人工智能 Agent:在仓储物流中的应用

AI人工智能 Agent:在仓储物流中的应用 1. 背景介绍 1.1 问题的由来 仓储物流行业是全球经济运行的基石之一,涉及商品的存储、运输、分拣和配送等多个环节。随着电子商务的普及和消费者对物流速度和精确性的要求不断提高,仓储物流

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 863

tcpreplay,tcprewrite

安装指南 tcpreplay官方提供的下载地址为: http://tcpreplay.synfin.net/trac/wiki/Download, 由于tcpreplay依赖libpcap库, 所以安装tcpreplay之前必须先安装libpcap(在windows下为winpcap), 否则 ./configure的时候你会得到提示说libpcap库没有安装. ...

weixin_34296641的博客 1269

2022年华为ICT大赛 全球总决赛!中文综合任务书-网络赛道真题!

2022年华为ICT大赛 全球总决赛!综合任务书-网络赛道真题-中文翻译版

君逍遥o 2404

常用tcpdump、tcpreplay命令

tcpdump 1.从所有网卡中获取数据包 $tcpdump -i any 2.从指定网卡中获取数据包 $tcpdump -i eth1 -w packets_file 3.读取之前产生的tcpdump文件 $tcpdump -r packets_file 4.获取更多包信息,并且以可读形式显示时间戳 $tcpdump -ttttnnvvS 5.查看整个网络数据包 $tcpdump net 192...

captain 1083

【深度学习|Transformer模型学习】什么是前馈神经网络(Feed-Forward Neural Network)?将前馈神经网络中的全连接层变成1*1卷积层会有什么样的效果?

【深度学习|Transformer模型学习】什么是前馈神经网络(Feed-Forward Neural Network)?将前馈神经网络中的全连接层变成1*1卷积层会有什么样的效果?

985小水博的摸鱼日常 1376

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

tcpreplay工具的安装与使用

tcpreplay是一种pcap包的重放工具, 包括(tcpprep、tcprewrite、tcpreplay和tcpbridge),它可以将用ethreal, wireshark工具抓下来的包原样或经过任意修改后重放回去. 它允许你对报文做任意的修改(主要是指对2层, 3层, 4层报文头), 指定重放报文的速度等, 这样tcpreplay就可以用来复现抓包的情景以定位bug, 以极快的速度重放从而实现压力测试。官网: http://tcpreplay.appneta.com/

qq_52424738的博客 4063

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

tcpreplay的使用方法

Tcpreplay 是一系列工具的总称,包括 Tcpreplay ,Tcprewrite 和Tcpprep ,是用来在Unix 或linux 系统上重放数据包的软件。实现数据报文回放分为三步: 用Tcpprep 对报文的通信流量的两方(服务器/ 客户端)进行分离 Tcpprep 的作用是划分客户端和服务器,区分PCAP 数据包的流向,即划分哪些包是客户端的,哪些包是服务器的。在回放包...

新雪兰 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Linux 下Tcpreplay 回放、tcprewrite改包、Tcpdump抓包 使用记录

tcreplay回放、tcprewrite修改报文、tcpdump抓包使用记录

Reality 5417

基于CentOS6.5下如何正确安装和使用Tcpreplay来重放数据(图文详解)

      前期博客 基于CentOS6.5下snort+barnyard2+base的入侵检测系统的搭建(图文详解)(博主推荐)         tcpreplay是什么?   简单的说, tcpreplay是一种pcap包的重放工具, 它可以将用ethreal, wireshark工具抓下来的包原样或经过任意修改后重放回去. 它允许你对报文做任意的修改(主要是指对2层, 3层...

weixin_33850890的博客 2427

tcpreplay 命令介绍和使用案例

tcpreplay是一种 pcap 包的重放工具,可以将tcpdump和Wireshark等工具捕获的网络流量包进行编辑修改和重放. 它可以将用 Ethereal、wireshark 工具抓下来的包原样或经过任意修改后重放回去.tcpreplay允许用户对报文做任意的修改 (主要是指对2层、3层、4层报文头), 指定重放报文的速度等. 这样tcpreplay就可以用来复现抓包的情景以定位bug, 也可以以极快的速度重放从而实现压力测试.

1451

tcpreplay发包工具的简单介绍

一.Tcpreplay简介 网站:http://tcpreplay.synfin.net/,上面有Tcpreplay的安装包和很多文档 Tcpreplay是一系列工具的总称,包括tcpreplay、tcprewrite和tcpprep等工具,它可以用来在Unix系统或者linux系统上重放网络包。这些包是由tcpdump、ethereal和wireshark等软件抓取到的,即pcap格式的数据...

heguangsui123的博客 4564

Tcpreplay安装使用(转)

一.Tcpreplay功能简介 首先推荐一个网站:Syn Fin dot Net | Streaming Thoughts from Syn to Fin,上面有Tcpreplay的安装包和很多文档,包括手册、man页和FAQ等。 Tcpreplay是一系列工具的总称,包括tcpreplay、tcprewrite和tcpprep等工具,它可以用来在Unix系统或者linux系统上重放网络包。这些包是由tcpdump、ethereal和wireshark等软件抓取到的,即pcap格式的数据包。 安装T.

qq_37451326的博客 7578

TcpReplay

TcpReplay 第1章.  说明 本文档只适用于Tcpreplay3.x。 第2章.  Tcpreplay系列工具 2.1. 概述 首先推荐一个网站:http://tcpreplay.synfin.net/,上面有Tcpreplay的安装包和很多文档,包括手册、man页和FAQ等。本文也是在参考这个网站的基础上,通过一些实验而得出的。 Tcpreplay是一系列工具的总称,包括tc

晴空慕码的博客 2576

tcpreplay介绍以及源码分析

tcpreplay介绍tcpreplay主要用于重放pcap数据包,还可以对pcap文件进行修改,比如修改ip地址和端口号等,其中主要包含了一下几个模块:tcpreplay:pcap重放模块,其中提供了包重放速度控制,循环控制,重放模式等功能。tcpreweite: 修改网络中mac,IP地址,端口信息。tcpbrige:利用tcprewrite的功能实现两个网络部分的桥tcpreplay的作者在...

zhongyoubing的博客 4913
上一篇: 同步/异步&阻塞/非阻塞总结
下一篇: 想写一本书——《深入浅出C》
彭令鹏
博客等级 码龄20年 225粉丝 39原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值