我试图在这里模拟代码:Scapy and tcpreplay: bypass temporary file for performance
当我尝试运行该代码时,此行上的Python错误:
>foo 234
>bar 4
错误说
f = subprocess.Popen(argv, stdin=subprocess.PIPE)
我想我得到了这个错误,因为子进程在写入stdin之前尝试从stdin读取。
有什么建议吗?
答案 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)为我的问题提供了最佳解决方案。它允许我打开一个套接字,在该套接字上发送一个数据包,更新数据包,然后通过同一个套接字发送。