我正在尝试使用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文件。因此,我必须创造沟通的两面。
答案 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()