与POpen / stdin / scapy / tcpreplay混淆

时间:2017-07-17 21:00:48

标签: stdin scapy tcpreplay

我试图在这里模拟代码:Scapy and tcpreplay: bypass temporary file for performance

当我尝试运行该代码时,此行上的Python错误:

>foo 234
>bar 4

错误说

    f = subprocess.Popen(argv, stdin=subprocess.PIPE)

我想我得到了这个错误,因为子进程在写入stdin之前尝试从stdin读取。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

让它工作......在引用的答案中使用此标题而不是标题:

header = b'\xd4\xc3\xb2\xa1\x02\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x7f\x00\x00\x01\x00\x00\x00'

我的代码中没有使用sendpfast。

为了澄清我上面的问题...我试图发送1个数据包,更新数据包的IP,然后循环发送更新的数据包。

将数据包列表写入stdin,然后使用sendpfast并不比将数据包列表写入临时文件更快,然后在临时文件上使用sendpfast。 Sendpfast似乎只适用于从磁盘上的pcap文件发送一堆数据包。

此链接(https://byt3bl33d3r.github.io/mad-max-scapy-improving-scapys-packet-sending-performance.html)为我的问题提供了最佳解决方案。它允许我打开一个套接字,在该套接字上发送一个数据包,更新数据包,然后通过同一个套接字发送。