1、修改报文IP到同一指定值
tcpprep -p --pcap=input.pcap --cachefile=output.cache
tcprewrite -i input.pcap -o output.pcap --cachefile=ouput.cache -e 1.1.1.1:2.2.2.2
批量处理shell脚本:
#!/bin/sh
myFile=/root/IP_connect.txt
file_path=/root/pcap_file
cat $myFile | while read line
do
echo $line
m=`echo $line |awk '{print $1}'`
n=`echo $line |awk '{print $2}'`
f=`echo $line |awk '{print $3}'`
cd $file_path
tcpprep -p --pcap=succ_change.pcap --cachefile=test_cache.cache
sleep 1
tcprewrite -i succ_change.pcap -o $f --cachefile=test_cache.cache -e $m:$n
sleep 1
mv $f $file_path/pcap/
sleep 1
cd $file_path
rm -rf test_cache.cache
sleep 3
echo "finished!"
done
2、修改端口到指定端口,不区分源、目的
tcprewrite --portmap=53:54 --infile=input.pcap --outfile=output.pcap
3、随机生成指定数量的IP
tcprewrite --seed=200 --infile=input.pcap --outfile=output.pcap
4、修改源IP到指定段
tcprewrite --srcipmap=172.16.0.0/12:10.1.0.0/24 --infile=input.pcap --outfile=output.pcap
【参数选项】详解:
-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 地址,该选项只能出现一次。随机化的地址仍然保持客户端/服务器之间的关系。
-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 选项混合使用。
-D string, --dstipmap=string
改写 IPv4/v6 目的地址,该选项只能出现一次, 该选项不能同 pnat 选项联合使用。
-e string, --endpoints=string
点对点修改IP地址,该选项只能出现一次,将pcap文件中的所有客户端、服务器都改成这一对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 地址。设置该选项可以保持组播、广播数据包IP及MAC地址不变。
-C, --fixcsum
强制重新计算 IPv4/TCP/UDP 头部校验和,选项 --seed, --pnat, --endpoints,--fixlen 自动计算。
-m number, --mtu=number
修改默认的MTU长度(1500字节),该选项只能出现一次,该选项为 1 through MAXPACKET的整数。
--mtu-trunc
截取报文到指定的MTU,该选项只能出现一次。跟 --fixlen 类似,该选项丢弃数据包中长于MTU的部分。
-E, --efcs
丢弃位于报文尾部的 Ethernet checksums (FCS) 部分。并不检查FCS是否真正存在,必须在确保你的系统在读raw报文时候提供 FCS 时候才用该选项。
--ttl=string
修改IPv4/v6 TTL。
示例:
--ttl=10
--ttl=+7
--ttl=-64
--tos=number
修改 IPv4 TOS/DiffServ/ECN 位,该选项只能出现一次。该选项参数为 0-255 的整数。
--tclass=number
设置 IPv6 Traffic Class 位。该选项只能出现一次,该选项参数为 0-255的整数。
--flowlabel=number
设置IPv6 Flow Label,参数为 0 - 1048575 整数。
-F string, --fixlen=string
补充或者截断报文数据,使得跟头部长度匹配。该选该项只能出现一次,string值如下。
pad:补全截断的报文
trunc:重写IPv4头部长度来匹配实际报文长度。
del: 删除报文
--skipl2broadcast
跳过修改广播、组播二层地址。该选项会保持广播、组播MAC地址不变。
--dlt=string
修改的输出的 LDT 封装,该选项只能出现一次。改变输出报文的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 值,该选项只能出现一次,该选项参数为整数。通常情况下该值为 0, 你可以给这个域制定 1 字节的数值。
--hdlc-address=number
指定 HDLC 地址,该选项只能出现一次,该选项参数为整数。有 1 字节的地址,可以设置数值:
0x0F:Unicast
0xBF:Broadcast
--user-dlt=number
设置输出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
-i string, --infile=string
指定要处理的 pcap 文件,改选项只能出现一次。
-o string, --outfile=string
输出 pcap 文件,该选项只能出现一次。
-c string, --cachefile=string
通过tcpprep的cache文件划分流量,该选项只能出现一次。