当前位置: 首页 > news >正文

tcprewrite使用方法

1. 简介

在Linux系统中分析和测试网络流量时,tcprewrite 是一个功能强大的工具,它允许你灵活地修改pcap文件中的数据包信息,从链路层到传输层以及应用层,甚至包括VLAN标签等。本篇文章基于Ubuntu系统,想写介绍了tcprewrite的安装以及它的基本使用方法和常见应用场景。

2. tcprewrite 安装

在Ubuntu系统上,安装tcprewrite最为便捷的方式是使用apt包管理器。

2.1更新软件包列表

首先,打开终端,确保你的系统软件包列表是最新的:

sudo apt update

2.2安装tcpreplay套件

执行以下命令进行安装:

sudo apt install tcpreplay

2.3 验证安装

安装完成后,可以通过检查tcprewrite的版本来确认安装是否成功:

$ tcprewrite -v 
tcprewrite error:  The infile option is required
tcprewrite (tcprewrite) - Rewrite the packets in a pcap file.
Usage:  tcprewrite [ -<flag> [<val>] | --<name>[{=| }<val>] ]...-r, --portmap=str          Rewrite TCP/UDP ports-s, --seed=num             Randomize src/dst IPv4/v6 addresses w/ given seed-N, --pnat=str             Rewrite IPv4/v6 addresses using pseudo-NAT-S, --srcipmap=str         Rewrite source IPv4/v6 addresses using pseudo-NAT-D, --dstipmap=str         Rewrite destination IPv4/v6 addresses using pseudo-NAT-e, --endpoints=str        Rewrite IP addresses to be between two endpoints--tcp-sequence=num     Change TCP Sequence (and ACK) numbers /w given seed-b, --skipbroadcast        Skip rewriting broadcast/multicast IPv4/v6 addresses-C, --fixcsum              Force recalculation of IPv4/TCP/UDP header checksums-m, --mtu=num              Override default MTU length (1500 bytes)--mtu-trunc            Truncate packets larger then specified MTU-E, --efcs                 Remove Ethernet checksums (FCS) from end of frames--ttl=str              Modify the IPv4/v6 TTL/Hop Limit--tos=num              Set the IPv4 TOS/DiffServ/ECN byte--tclass=num           Set the IPv6 Traffic Class byte--flowlabel=num        Set the IPv6 Flow Label-F, --fixlen=str           Pad or truncate packet data to match header length--fuzz-seed=num        Fuzz 1 in X packets.  Edit bytes, length, or emulate packet drop--fuzz-factor=num      Set the Fuzz 1 in X packet ratio (default 1 in 8 packets)--skipl2broadcast      Skip rewriting broadcast/multicast Layer 2 addresses--dlt=str              Override output DLT encapsulation--enet-dmac=str        Override destination ethernet MAC addresses--enet-smac=str        Override source ethernet MAC addresses--enet-subsmac=str     Substitute MAC addresses--enet-mac-seed=num    Randomize MAC addresses--enet-mac-seed-keep-bytes=num Randomize MAC addresses--enet-vlan=str        Specify ethernet 802.1q VLAN tag mode--enet-vlan-tag=num    Specify the new ethernet 802.1q VLAN tag value--enet-vlan-cfi=num    Specify the ethernet 802.1q VLAN CFI value--enet-vlan-pri=num    Specify the ethernet 802.1q VLAN priority--hdlc-control=num     Specify HDLC control value--hdlc-address=num     Specify HDLC address--user-dlt=num         Set output file DLT type--user-dlink=str       Rewrite Data-Link layer with user specified data-d, --dbug=num             Enable debugging output-i, --infile=str           Input pcap file to be processed-o, --outfile=str          Output pcap file-c, --cachefile=str        Split traffic via tcpprep cache file-v, --verbose              Print decoded packets via tcpdump to STDOUT-A, --decode=str           Arguments passed to tcpdump decoder--skip-soft-errors     Skip writing packets with soft errors-V, --version              Print version information-h, --less-help            Display less usage information and exit-H, --help                 display extended usage information and exit-!, --more-help            extended usage information passed thru pager--save-opts[=arg]      save the option state to a config file--load-opts=str        load options from a config fileOptions are specified by doubled hyphens and their name or by a single
hyphen and the flag character.Please send bug reports to:  <tcpreplay-users@lists.sourceforge.net>

2.4 备选安装方案

如果你想体验最新的功能或者需要特定版本,也可以选择从源码编译安装。这通常涉及下载源码包,然后执行标准的./configure && make && sudo make install流程。不过对于大多数用户来说,使用apt安装已经足够。

3. 使用方法

tcprewrite 是 TCP 数据流重放工具集 Tcpreplay 中的一个重写数据包工具,主要用于重写pcap文件中的数据包头部信息 .

tcprewrite 的功能非常丰富,下面表格中列举了一些常用参数及其应用场景:

功能类别常用参数说明与示例
修改MAC地址--enet-smac / --enet-dmac修改源/目的MAC地址。示例:--enet-smac=00:11:22:33:44:55,00:66:77:88:99:00 (分别指定server和client的源MAC) 
修改IP地址--endpoints修改一对IP地址。示例:--endpoints=192.168.1.100:10.0.0.1 (将client IP改为192.168.1.100, server IP改为10.0.0.1) 
--srcipmap / --dstipmap分别修改源/目的IP地址映射。示例:--srcipmap=192.168.1.50:172.16.0.10 
--pnat不区分源目地进行IP映射。示例:--pnat=192.168.0.0/16:10.0.0.0/24 
修改端口号--portmap修改TCP/UDP端口。示例:--portmap=80:8080 (将80端口映射到8080) ,或--portmap=8000-8999:80 (将8000-8999端口范围映射到80端口) 
VLAN操作--enet-vlan添加或删除VLAN标签。示例:--enet-vlan=add (添加) 或 --enet-vlan=del (删除) 
校验和--fixcsum强烈建议在修改3层或4层头部后使用,强制重新计算IP/TCP/UDP校验和,确保数据包有效。

4. 使用案例

4.1 替换udp端口号

tcprewrite对于端口的修改是不区分源端口和目标端口的,凡是出现的端口会一股脑地全部给你替换了

$ tcprewrite --portmap="1234:5678"  -i 1234.pcap -o 5678.pcap

4.2 替换源ip地址

tcprewrite --srcipmap=192.168.1.2/12:10.10.10.1/24 --infile=input.pcap --outfile=output.pcap

4.3 替换目标ip地址

tcprewrite --dstipmap=192.168.1.2/12:10.10.10.1/24 --infile=input.pcap --outfile=output.pcap

http://www.dtcms.com/a/588919.html

相关文章:

  • Rust 练习册 :探索三角形的几何世界
  • SPT:选择性提示调优——让模型自动学习最佳提示插入策略
  • 【Linux篇】信号从哪来?到哪去?—— Linux信号的产生方式与保存机制
  • linux服务-firewalld原理及示例详解
  • 数学基础---四元数
  • 《jQuery Prettydate》深入解析与应用
  • 开发公司自己买自己的商品房西安seo外包机构
  • 【数据结构】单调栈(模板 + 练习)
  • 整体设计 全面梳理复盘 之26 九宫格框架与一体化开发 编程 之5
  • LeetCode算法学习之有效的字母异位词
  • 【算法】递归算法的深度实践:深度优先搜索(DFS)从原理到LeetCode实战
  • BFS 图论【各种题型+对应LeetCode习题练习】
  • 威联通怎么建设网站人类命运共同体
  • 【ElasticSearch实用篇-05】基于脚本script打分
  • 微前端框架选型
  • Java 17 密封类(Sealed Classes)实战:从类型安全到架构解耦的范式升级
  • 保健品网站模板wordpress简约主题分享
  • 前端低代码平台
  • 八字排盘原理
  • 40.交叉编译
  • RT-Thread Studio开发环境搭建
  • jdbc基础(连接篇)
  • 免费云服务器网站有哪些为什么手机进网站乱码
  • 从入门到精通 LlamaIndex RAG 应用开发
  • 算法基础篇:(五)基础算法之差分——以“空间”换“时间”
  • 潍坊中企动力做的网站怎么样wordpress显示摘要
  • leetcode1771.由子序列构造的最长回文串长度
  • 【JUnit实战3_31】第十九章:基于 JUnit 5 + Hibernate + Spring 的数据库单元测试
  • 双11释放新增量,淘宝闪购激活近场潜力
  • MySQL快速入门——内置函数