- 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
- Please see the --dlt option for supported DLT types for writing.
请通过 --dlt 选项支持写 DLT 类型.
区分客户端, 服务器的报文编辑需要 tcpprep(1)生成的 cache 文件支持.
For more details, please see the Tcpreplay Manual at: http://tcpreplay.synfin.net/trac/wiki/manual
更多详细信息, 请访问 : 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 选项联合使用.
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 地址. 设置该选项可以保持组播, 广播 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 类型可以选取下边几个值:
- .NET Ethernet aka DLT_EN10MB
- hdlc Cisco HDLC aka DLT_C_HDLC
- user User specified Layer 2 header and DLT type
- --.NET-dmac=string
修改以太网目的地址. 该选该项只能出现一次.
第一个 Mac 地址用于服务器到客户端, 第二个 Mac 地址用于客户端到服务器.
示例:
- --.NET-dmac=00:12:13:14:15:16,00:22:33:44:55:66
- --.NET-smac=string
修改源 Mac 地址. 该选项只能出现一次.
第一个 Mac 地址用于服务器到客户端, 第二个 Mac 地址用于客户端到服务器.
示例:
- --.NET-smac=00:12:13:14:15:16,00:22:33:44:55:66
- --.NET-vlan=string
修改以太网 802.1q VLAN tag, 该选项只能出现一次.
add : 给以太网头添加 802.1q VLAN 头部
del : 删除 vlan tags
--.NET-vlan-tag=number
指定新的 vlan tag 值, 该选项只能出现一次. 该选型必须跟 .NET-vlan 联合使用. 该选项参数为 0-4095 整数.
--.NET-vlan-cfi=number
指定 vlan tag 的 CFI 值, 该选项只能出现一次, 该选项必须跟 .NET-vlan 联合使用. 该选项参数为 0-1 的整型.
--.NET-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 手册翻译 https://www.cnblogs.com/rivsidn/p/10955781.html
-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 手册翻译 https://www.cnblogs.com/rivsidn/p/10955781.html
-A string, --decode=string
参见 tcpreplay man 手册翻译 https://www.cnblogs.com/rivsidn/p/10955781.html
- --fragroute=string
- ? ? ?
- --fragdir=string
- ? ? ?
- --skip-soft-errors
跳过不能修改的报文, 该选项只能出现一次.
某些情况下, 报文不能被解码获取不能被修改, 正常情况下报文会被原封不动的写到输出文件中, 所以 tcpprep file 仍然可用.
但是如果你愿意, 可以丢球该类报文.
一个例子是没有数据的 802.11 管理报文.
-V, --version
参见 tcpreplay man 手册翻译 https://www.cnblogs.com/rivsidn/p/10955781.html
-h, --Less-help
参见 tcpreplay man 手册翻译 https://www.cnblogs.com/rivsidn/p/10955781.html
-H, --help
参见 tcpreplay man 手册翻译 https://www.cnblogs.com/rivsidn/p/10955781.html
-!, --more-help
参见 tcpreplay man 手册翻译 https://www.cnblogs.com/rivsidn/p/10955781.html
--save-opts[=rcfile]
参见 tcpreplay man 手册翻译 https://www.cnblogs.com/rivsidn/p/10955781.html
--load-opts=rcfile, --no-load-opts
参见 tcpreplay man 手册翻译 https://www.cnblogs.com/rivsidn/p/10955781.html
- 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 [email protected] 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)
- something to know
FCS 操作系统提供 FCS 是什么意思?
fragroute 在哪, 怎么用?
来源: http://www.bubuko.com/infodetail-3080934.html