tcprewrite批量修改pcap数据报文

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文件划分流量,该选项只能出现一次。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345