tcpreplay-tcprewrite

2023-11-12

1、介绍 

参考链接:https://www.cnblogs.com/zlslch/p/7325599.html?utm_source=itdadao&utm_medium=referral

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

tcpreplay本身包含了几个辅助工具(tcpprep、tcprewrite、tcpreplay和tcpbridge), 用于准备发包的cache, 重写报文等。这也是 Tcpreplay 的第一个字母大写T的原因 。

      * tcpprep - 简单的说就是划分哪些包是client的, 哪些是server的, 一会发包的时候client的包从一个网卡发, server的包可能从另一个网卡发。

        即区分pcap数据包的流向,即区分出客户端和服务器。
      * tcprewrite - 简单的说就是修改2层, 3层, 4层报文头部。

        即改写pcap数据包的2-4层的头部信息,即MAC地址、IP地址和PORT等。
      * tcpreplay - 真正发包, 可以选择主、从网卡, 发包速度等。

        即回放pcap文件中的数据包。

   * tcpreplay-edit-更写pcap数据并回放,将tcprewrite和tcpreplat一条命令实现。
      * tcpbridge - bridge two network segments with the power of tcprewrite。

2、tcpreplay用法

不同版本的tcpreplay的使用方法区别还有点大,使用前使用tcpreplay -h查看下用法。

常用通用参数:

-p             pps                 指定速度

-M        Mbps                  指定速度

-i            指定网卡

-l            loop        指定回放次数

-L              限制回放包的个数

-t          topspeed     以最快的速度回放

--oneatatime              一次回放一个,按Enter后回放下一个

--listnics        获取机器的发包接口

3、tcprewrite用法

tcprewrite 就是改写 pcap 包里的报文头部, 包括 2 层, 3 层, 4 层,即 MAC 地址、IP 地址和PORT 等

-r          重写tcp/udp端口

-s            随机改写ip地址

-i             指定输入pcap

-o           指定输出pcap

修改示例1:

tcprewrite --enet-smac=11:22:22:22:22:22,22:22:22:22:22:22  \
--enet-dmac=FF:FF:FF:FF:FF:FF   \
--endpoints=192.168.0.1:192.168.0.11    \
--portmap=5070:5061,9060:5060    \
-i success.pcap -o out.pcap -c success.cach

  该命令将修改后的包的

  主机端的二层, 三层, 四层头分别为: 11:22:22:22:22:22,192.168.0.1,5061,

  客户端包的二层, 三层, 四层头分别为: 22:22:22:22:22:22,192.168.0.11, 5060。

success.cach文件指定哪些包是主机包, 哪些包是客户端包,这个参数可以不要。

修改示例2:

tcprewrite --seed=6 -i success.pcap -o out.pcap -c success.cach

  该命令将根据数字 6 按特征算法生成一个新的 server_ip 和 client_ip。

修改示例3:

tcprewrite --pmap=192.168.0.0/16:10.77.0.0/16,172.16.0.0/12:10.1.0.0/24    \
-i success.pcap -o out.pcap -c success.cach

  该命令将把主机端和客户端 192.168.0.0/16、172.16.0.0/12 网段的 ip 地址分别改为 10.77.0.0/16、10.1.0.0/24。

cpwrite对5-7层的修改非常有限, 顶多也就是抓包没有抓全, 中间的应用层数据丢了。tcpwrite将没有抓到的数据补成全0, 或者修改tcp/udp的长度字节, 或者将该包丢弃.。

4、tcpprep

tcpprep 是一个在 tcprewrite 和 tcpreplay 之前使用的 pcap 文件的处理程序。使用 tcpprep 的目的就是建立一个 cach 文件,用于分离通信流量中的两方(通常叫做 主要的/次要的 或者 客户端/服务器),为 tcprewrite 和 tcpreplay 处理与发送报文做准备。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tcpreplay-tcprewrite 的相关文章

随机推荐

  • Kubernets之Node、Pod和容器的关系

    Pod根据调度配置分布在Node上 一个Pod可以包含多个容器 Pod中最少存在一个容器 Pause 且Pod内任何容器端口不能冲突 Pod中 所有容器共享网络栈和存储卷 因此可以通过localhost访问同一个Pod中的其他不同容器的资源
  • A类、B类、AB类、C类、D类功率放大电路的区别与基本定义

    总述 功率放大电路常用于多级放大电路的末级 集成功率放大器 集成运算放大器等模拟集成电路的输出级 功率放大电路主要应用于要求具有较高的输出功率或要求具有较大的输出动态范围的情况下 功率放大器可以分为A类 B类 AB类 C类 D类等 A类功率
  • 安装DirectX SDK时出现Error Code:s1023 的解决方案

    今天安装DXSDK Jun10时 下载地址 http download microsoft com download A E 7 AE743F1F 632B 4809 87A9 AA1BB3458E31 DXSDK Jun10 exe 出现
  • 网络排查汇总: traceroute 、mtr、ping、nslookup、dig

    最近很多时候都遇到玩家访问服务器失败的情况 这里整理了一下相关linux命令 还有一些测试网站 工具等 traceroute 实现原理 1 从源地址发出一个UDP探测包到目的地址 并将TTL设置为1 2 到达路由器时 将TTL减1 3 当T
  • 链表和数组的排序---持续更新

    链表的排序 1 对链表使用插入排序 第一步 判断链表是否为空 如果为空 不需要进行排序 直接返回 第二步 数组的排序 1 快速排序 第一步 选定中心轴 pivot 第二步 小于中心轴的放左边 第三步 大于中心轴的放右边 第四步 递归调用 p
  • Tomcat部署项目中含有中文文件访问404解决方法

    背景 Tomcat部署了Axure UI设计原型文件 很多中文菜单 访问英文网页正常 访问中文菜单网页报404 尝试了很多方法 最终通过配置Tomcat conf文件夹下的server xml解决问题 解决方法 修改server xml文件
  • Shell:查看进程与对应的线程

    1 通过 ps efL grep 进程ID或名字 UID PID PPID LWP C NLWP STIME TTY TIME CMD user 228298 201990 228298 0 2 00 14 pts 0 00 00 00 t
  • HDU 1042 N!大数乘法

    N Time Limit 10000 5000ms Java Other Memory Limit 262144 262144K Java Other Total Submission s 69 Accepted Submission s
  • linux-redis设置密码

    redis设置密码 linux版 到redis cli命令所在目录 cd usr local redis bin 打开客户端 redis cli 查看密码 config get requirepass 设置密码 config set req
  • 玩转树莓派4B之Uboot移植

    此文参考了以下文章 https blog csdn net weixin 42233878 article details 84980951 个人使用的编译环境为ubuntu1904 64位 我的目的是修改树莓派的uboot代码并且看下深入
  • 30 个 Python 的最佳实践、小贴士和技巧

    以下为译文 想借本文为大家献上 Python 语言的30个最佳实践 小贴士和技巧 希望能对各位勤劳的程序员有所帮助 并希望大家工作顺利 1 Python 版本 在此想提醒各位 自2020年1月1日起 Python 官方不再支持 Python
  • 现场总线和工业以太网

    随着传统制造企业正在加快智能制造转型的进程 工业互联网迅速在全世界范围内兴起 在工业互联网的技术构架中 通过各类通讯方式接入不同设备 系统和产品 来采集海量数据是其重要的一环 本文将介绍工业底层设备的两种通讯方式 现场总线和工业以太网 一
  • 容器集群k8s从入门到精通之 Pod详解(第五章)

    第五章 Pod详解 本章节将详细介绍Pod资源的各种配置 yaml 和原理 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器 这些容器可以分为两类 用户程序所在的容器 数量可多可少 Pause容器 这是每个Pod都会有的一个根
  • 12款AI代码生成工具,都很能打

    1 Anania Anania 是一个机器人数据分析师 可以通过简单 自然的英语对话来分析您的数据 连接数据源并以简单的英语提问 无需任何设置或配置 在幕后 Anania 正在使用一个 AI 系统 该系统将文本转换为 SQL 和 Pytho
  • 数值分析与matlab学习笔记——多项式插值法

    文章目录 多项式插值 一点背景 多项式插值的存在唯一性 Lagrange插值法 n次插值基函数 拉格朗日插值函数 matlab代码及效果 Newton插值 均差 差商 均差的三种理解 N 基函数 牛顿插值函数 matlab代码及效果 误差分
  • openGL之API学习(一零六)wglGetProcAddress

    获取当前显卡中OpenGL函数的指针地址 PROC wglGetProcAddress LPCSTR Arg1 Arg1 Points to a null terminated string that is the name of the
  • 学习Linux命令的正确姿势

    大家好 我是良许 大家应该注意到了 最近我的公众号文章末尾都挂着自己录制的 Linux命令从小白到大神 课程 这个课程我从开始录制到制作完成 足足花了一个半月 如果加上前期的资料收集与教案准备 肯定有将近三个月 首先跟大家讲讲我为什么要开发
  • 电器元件——LM7805

    LM7805是一款常用的线性三端稳压IC 其外形封装虽然有多种 但输出电压皆为5V 区别就是封装不同 最大输出电流可能不一样 最常用的是如下图所示的TO 220封装的7805 TO 220封装的7805 上图所示的这种封装的7805 最高输
  • 设计模式 - Provider Pattern(提供者模式)

    设计模式 Provider Pattern 提供者模式 作者 webabcd 介绍 为一个API进行定义和实现的分离 示例 有一个Message实体类 对它的操作有Insert 和Get 方法 持久化数据在SqlServer数据库中或Xml
  • tcpreplay-tcprewrite

    1 介绍 参考链接 https www cnblogs com zlslch p 7325599 html utm source itdadao utm medium referral tcpreplay是一种pcap包的重放工具 它可以将