Scapy - 持久性RandIP

时间:2017-08-04 14:34:32

标签: python tcp scapy

我正在尝试使用scapy模拟两台主机之间的TCP通信。

我的问题是,我无法保存scapy为我生成的随机IP地址。

此代码

src_IP = RandIP()

print(src_IP)
print(src_IP)
print(src_IP)

给我一​​个像这样的输出

234.200.98.20
147.3.56.17
135.102.142.49

因此,每当我访问src_IP时,它都会有一个新值。

有没有办法从scapy中保存随机IP?所以我可以在我的函数开头生成2个IP,并将它们用作TCP通信的源和目标 我可以自己生成IP,但我认为必须有一个更优雅的解决方案。

顺便说一句。将不发送数据包,它们将被写入PCAP文件。因此,我必须创造沟通的两面。

2 个答案:

答案 0 :(得分:1)

我找到了答案 import { NgModule } from '@angular/core'; //import { BrowserModule } from '@angular/platform-browser'; //import { FormsModule } from '@angular/forms'; import { HttpModule } from '@angular/http'; import { sharedConfig } from './app.module.shared'; //import { RouterModule } from '@angular/router'; @NgModule({ bootstrap: sharedConfig.bootstrap, declarations: sharedConfig.declarations, imports: [ HttpModule, ...sharedConfig.imports, ], providers: [ { provide: 'ORIGIN_URL', useValue: location.origin } ] }) export class AppModule { } 创建一个对象的实例,每次访问该对象,打印或发送数据包或其他内容时,它都会生成一个新的IP。

所以我的解决方案是将其转换为字符串

RandIP()

输出正如预期的那样

src_IP = str(RandIP())

print(src_IP)
print(src_IP)
print(src_IP)

答案 1 :(得分:1)

接受的答案是黑客攻击;它是正确的(如“它工作并做了所要求的”),但这不是在Scapy中这样做的正确方法。

您要查找的方法是._fix()。它适用于任何易失性值类型。

src_IP = RandIP()._fix()

如果您还需要一个随机源端口,您可以这样做:

src_port = RandShort()._fix()