tcprewrite man手册翻译
TCPREWRITE(1) Programmer's Manual TCPREWRITE(1)
NAME
tcprewrite - 改写pcap文件中的报文
SYNOPSIS
tcprewrite [-flag [value]]... [--opt-name [[=| ]value]]...
所有参数均为选项。
DESCRIPTION
该手册简要介绍了tcprewrite的用法。 Tcprewrite是一个改写pcap文件(tcpdump、and ethereal)报文的工具。可以将修改后的报文通过 tcpreplay(1) 重新发送回去。
tcprewrite 当前支持读如下的DLT(Data Link Types)类型:
DLT_C_HDLC aka Cisco HDLC
DLT_EN10MB aka Ethernet
DLT_LINUX_SLL aka Linux Cooked Socket
DLT_RAW aka RAW IP
DLT_NULL aka BSD Loopback
DLT_LOOP aka OpenBSD Loopback
DLT_IEEE802_11 aka 802.11a/b/g
DLT_IEEE802_11_RADIO aka 802.11a/b/g with Radiotap headers
为了区分客户端、服务器的报文需要tcpprep(1)生成的cache文件支持。
更多详细信息,请访问 : https://tcpreplay.appneta.com/
OPTIONS
-r string, --portmap=string
修改TCP/UDP端口号,该选项可重复出现多次。
指定端口修改规则 ,将匹配端口修改成指定端口,匹配的端口之间由逗号分割,冒号后边跟着要修改成的指定端口号。
示例:
--portmap=80:8000 --portmap=8080:80 # 80->8000 and 8080->80
--portmap=8000,8080,88888:80 # 3 different ports become 80
--portmap=8000-8999:80 # ports 8000 to 8999 become 80
-s number, --seed=number
通过给定的seed随机化 src/dst IPv4/v6 地址,该选项只能出现一次。该选项参数为整型。
伪随机化IPv4/v6地址,随机化的地址仍然保持客户端/服务器之间的关系。因为基于相同seed的随机关系是确定的,所以通过相同的seed创造相同的流量。
-N string, --pnat=string
改写 IPv4/v6 地址,该选项最多能重复出现2次,该选项不能跟 srcipmap 选项混合使用。
IPv4 示例:
--pnat=192.168.0.0/16:10.77.0.0/16,172.16.0.0/12:10.1.0.0/24
IPv6 示例:
--pnat=[2001:db8::/32]:[dead::/16],[2001:db8::/32]:[::ffff:0:0/96]
-S string, --srcipmap=string
改写 IPv4/v6 源 IP 地址,该选该项只能出现一次,该选项不能同 pnat 选项混合使用。
工作原理跟 --pnat 选项类似,但是只影响IPv4/v6 源IP地址。
-D string, --dstipmap=string
改写 IPv4/v6 目的地址,该选项只能出现一次, 该选项不能同 pnat 选项联合使用。
工作原理跟 --pnat 类型,但是只影响 IPv4/v6 的目的 IP 地址。
-e string, --endpoints=string
点对点修改IP地址,该选项只能出现一次。该选项必须跟 --cachefile 选项联合使用。
[实例操作发现就是指定了servier address : client address,将pcap文件中的所有客户端、服务器都改成这一对IP地址]
IPv4 示例:
--endpoints=172.16.0.1:172.16.0.2
IPv6 示例:
--endpoints=[2001:db8::dead:beef]:[::ffff:0:0:ac:f:0:2]
-b, --skipbroadcast
跳过广播/组播地址改写。
默认情况下, --seed, --pnat and --endpoints 会修改 IPv4/v6 的组播广播地址以及 MAC 地址。设置该选项可以保持组播、广播数据包IP及MAC地址不变。
-C, --fixcsum
强制重新计算 IPv4/TCP/UDP 头部校验和,选项 --seed, --pnat, --endpoints,--fixlen 自动使能。
-m number, --mtu=number
修改默认的MTU长度(1500字节),该选项只能出现一次,该选项为 1 through MAXPACKET的整数。
修改默认的1500字节MTU长度能决定最大的补全长度(--fixlen=pad)或者截取(--mtu-trunc)
--mtu-trunc
Truncate packets larger then specified MTU. This option may appear up to 1 times.
截取报文到指定的MTU,该选项只能出现一次。
跟 --fixlen 类似,该选项丢弃数据包中长于MTU的部分。
-E, --efcs
丢弃位于报文尾部的 Ethernet checksums (FCS) 部分。
声明,该选项有些危险!我们并不检查FCS是否真正存在,而是盲目的删掉最后两个字节数据。因此,必须在确保你的系统在读raw报文时候提供 FCS 时候才用该选项。
--ttl=string
修改IPv4/v6 TTL。
示例:
--ttl=10
--ttl=+7
--ttl=-64
--tos=number
Set the IPv4 TOS/DiffServ/ECN byte. This option may appear up to 1 times. This option takes
an integer number as its argument. The value of number is constrained to being:
in the range 0 through 255
修改 IPv4 TOS/DiffServ/ECN 位,该选项只能出现一次。该选项参数为 0-255 的整数。
--tclass=number
设置 IPv6 Traffic Class 位。该选项只能出现一次,该选项参数为 0-255的整数。
--flowlabel=number
设置IPv6 Flow Label,参数为 0 - 1048575 整数。
-F string, --fixlen=string
补充或者截断报文数据,使得跟头部长度匹配。该选该项只能出现一次。
当捕获报文时候,如果 snaplen 小于实际的报文长度,报文会被截断。该选项允许通过补全、修改报文长度的方式使得报文数据长度跟头部长度相匹配。
pad : 补全截断的报文
trunc :重写IPv4头部长度来匹配实际报文长度。
del : 删除报文
--skipl2broadcast
跳过修改广播、组播二层地址。
默认情况下,修改二层地址会修改广播、组播MAC地址,设置该选项会保持广播、组播MAC地址不变。
--dlt=string
修改的输出的 LDT 封装,该选项只能出现一次。
默认情况下不会修改DLT封装。改变输出报文的DLT类型可以选取下边几个值:
enet Ethernet aka DLT_EN10MB
hdlc Cisco HDLC aka DLT_C_HDLC
user User specified Layer 2 header and DLT type
--enet-dmac=string
修改以太网目的地址。该选该项只能出现一次。
第一个mac地址用于服务器到客户端,第二个mac地址用于客户端到服务器。
示例:
--enet-dmac=00:12:13:14:15:16,00:22:33:44:55:66
--enet-smac=string
修改源mac地址。该选项只能出现一次。
第一个mac地址用于服务器到客户端,第二个mac地址用于客户端到服务器。
示例:
--enet-smac=00:12:13:14:15:16,00:22:33:44:55:66
--enet-vlan=string
修改以太网 802.1q VLAN tag,该选项只能出现一次。
add : 给以太网头添加802.1q VLAN 头部
del : 删除 vlan tags
--enet-vlan-tag=number
指定新的 vlan tag 值,该选项只能出现一次。该选型必须跟 enet-vlan 联合使用。该选项参数为 0-4095 整数。
--enet-vlan-cfi=number
指定 vlan tag 的 CFI 值,该选项只能出现一次,该选项必须跟 enet-vlan 联合使用。该选项参数为 0-1 的整型。
--enet-vlan-pri=number
指定 vlan tag 的优先级。该选项只能出现一次,该选项参数为 0-7 整型。
--hdlc-control=number
指定 HDLC control 值,该选项只能出现一次,该选项参数为整数。
Cisco HDLC 头部有 1 位为“控制”域,通常情况下该值为 0, 你可以给这个域制定 1 字节的数值。
--hdlc-address=number
指定 HDLC 地址,该选项只能出现一次,该选项参数为整数。
Cisco HDLC头部有 1 字节的地址,有两个有效数值:
0x0F Unicast
0xBF Broadcast
可以指定任意的单字节数值。
--user-dlt=number
设置输出的DLT类型。该选项只能出现一次,该选项参数为整数。
设置输出 pcap 文件的 DLT 值。
--user-dlink=string
设置用户定义的 Data-Link layer 数据,该选项最多出现 2 次。
该选项第一个参数会用户修改客户端、服务器,但是如果指定了第二个参数,第一个参数会被用于客户端。
示例:
--user-dlink=01,02,03,04,05,06,00,1A,2B,3C,4D,5E,6F,08,00
-d number, --dbug=number
参见 tcpreplay man手册翻译
-i string, --infile=string
指定要处理的 pcap 文件,改选项只能出现一次。
-o string, --outfile=string
输出 pcap 文件,该选项只能出现一次。
-c string, --cachefile=string
Split traffic via tcpprep cache file. This option may appear up to 1 times.
通过 tcpprep 的 cache 文件划分流量,该选项只能出现一次。
Use tcpprep cache file to split traffic based upon client/server relationships.
通过 tcpprep 的cache 文件区分客户端。
-v, --verbose
参见 tcpreplay man手册翻译
-A string, --decode=string
参见 tcpreplay man手册翻译
--fragroute=string
解析 fragroute 配置文件(配置文件中说明如何修改报文)。
--fragdir=string
必须与 cachefile 联合使用,可选参数为:c2s(客户端到服务器), s2c(服务器到客户端), both(双向)。
--skip-soft-errors
跳过不能修改的报文,该选项只能出现一次。
某些情况下,报文不能被解码获取不能被修改,正常情况下报文会被原封不动的写到输出文件中,所以tcpprep file 仍然可用。
但是如果你愿意,可以丢球该类报文。
一个例子是没有数据的 802.11 管理报文。
-V, --version
参见 tcpreplay man手册翻译
-h, --less-help
参见 tcpreplay man手册翻译
-H, --help
参见 tcpreplay man手册翻译
-!, --more-help
参见 tcpreplay man手册翻译
--save-opts[=rcfile]
参见 tcpreplay man手册翻译
--load-opts=rcfile, --no-load-opts
参见 tcpreplay man手册翻译
OPTION PRESETS
Any option that is not marked as not presettable may be preset by loading values from configuration
("RC" or ".INI") file(s). The homerc file is "$$/", unless that is a directory. In that case, the
file ".tcprewriterc" is searched for within that directory.
SEE ALSO
tcpdump(1), tcpprep(1), tcpreplay(1)
AUTHOR
Copyright 2000-2010 Aaron Turner
For support please use the tcpreplay-users@lists.sourceforge.net mailing list.
The latest version of this software is always available from: http://tcpreplay.synfin.net/
Released under the Free BSD License.
This manual page was AutoGen-erated from the tcprewrite option definitions.
(tcprewrite ) 2010-04-04 TCPREWRITE(1)
参考资料:
- fragroute的使用和规则:
https://blog.51cto.com/yanwang/367740