作者Dong0129 (阿东)
看板Python
标题[问题] Scapy存档问题
时间Sun Apr 19 23:31:54 2015
各位版友好,
最近在写Scapy的东西,
但存档的地方...我不知道是哪里出了问题...
File:
100.100.100.100 1 10.1.1.1
200.200.200.200 2 10.2.2.1
100.100.100.200 3 10.1.1.2
.
.
.
File资料依序分别是IP位置、代号、重配的IP
然後接下来是我code的scapy程式
目的是要把封包档里符合IP位置的项目转换成重配的IP
rfd=open("File","r")
for line in rfd.read()splitlines():
items,item2,item3=line.split('\t')
pkts=rdpcap("pcapfilename")
for pkt in pkts:
if pkt[IP].src==item1:
pkt[IP].src=item3
if pkt[IP].dst==item1:
pkt[IP].dst=item3
wrpcap("new_pcapfilename",pkts)
rfd.close()
执行过後,
新产生的PCAP档内IP位置并没有被替换掉...
它重新存了原档...
请问程式码有误吗?
已解决
_____________________________________________________________________
刚刚重新re一遍程式,
应该要把pkts=rdpcap("pcapfilename")
拿到for回圈外面放才对,
即:
rfd=open(...)
pkts=rdpcap(...)
for line in ...:
谢谢各位的指点。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.137.113.177
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1429457517.A.615.html
※ 编辑: Dong0129 (220.137.113.177), 04/19/2015 23:59:37
1F:推 ug945: 看不出来这跟Scrapy有什麽关系 04/20 00:00
2F:→ ug945: 如果是输出入有问题 建议先用测试资料模拟输出入 04/20 00:00
您好,已修改标题,
因为有试过用比较少资料的档案去试,
但都没办法成功...
等等会试着把src跟dst拆开来做看看...
※ 编辑: Dong0129 (220.137.113.177), 04/20/2015 00:05:50
3F:→ ccwang002: 没看到这只程式哪里写档案了,你只读了 rfd 04/20 00:17
4F:→ ccwang002: rfd 读了之後改内容要再写回去,是 wrdpcap 做吗? 04/20 00:18
wrpcap即是将档案储存@@还是我用错了?
5F:→ qoo1991: 呃 你只读档 然後还是存一样东西回去= = 04/20 00:24
6F:→ qoo1991: 然後我是不知道你想IP做啥 这样做没改checksum 你的封包 04/20 00:25
7F:→ qoo1991: 就全烂了 04/20 00:25
8F:推 qoo1991: 要修改後再存回去还是正确的要重算IPv4 header checksum 04/20 00:30
之前有试过直接给另一台机器的IP当做dest ip,下send()後确实有将封包送达,
目标在重现背景流量,所以想要修改pcap档案理的IP之後,
看能否使用salt-stack做部署让档案在其他node里送。
※ 编辑: Dong0129 (220.137.113.177), 04/20/2015 00:48:13
9F:推 qoo1991: 只改IP 没改checksum 送不出去的 Dst host 会把它丢掉. 04/20 01:18
10F:→ qoo1991: 这是计网的尝试 04/20 01:18
11F:→ qoo1991: *常识 另外你说收到我想应该是scapy帮你重算了 04/20 01:19
我想是的,因为在接收端的确有看见它在做一些动作,
但目前的目标是要让流量能够动起来,所以一步一步去试,
谢谢您的指点!
※ 编辑: Dong0129 (220.137.113.177), 04/20/2015 01:25:46
12F:→ qoo1991: 我的建议是你改完IP後直接用sendp 就直接重送 04/20 01:34
13F:→ qoo1991: sendp(rdpcap("/tmp/pcapfile")) # tcpreplay 04/20 01:34
谢谢您,我一开始就是照这一个程式来做,
但是之後需要把档案分送到各个虚拟节点上,在虚拟节点上做send的动作,
才会想要先修改IP位置并重新储存,
谢谢您的指点!
※ 编辑: Dong0129 (220.137.113.177), 04/20/2015 01:40:40
※ 编辑: Dong0129 (220.137.113.177), 04/20/2015 01:40:58
※ 编辑: Dong0129 (220.137.113.177), 04/20/2015 02:09:37