从pythonscapy中的STDIN读取.pcap文件

2024-04-26 00:26:54 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以从pythonscapy中的stdin读取.pcap(使用rdpcap)?每次我尝试任何事情都会出错(无法读取文件)。在

用法如下:

python main.py < test_linux.pcap

我已经实现了使用参数读取文件,但我还需要从STDIN读取。在

非常感谢。在


Tags: 文件方法pytest用法参数mainlinux
2条回答

@tintin的答案是完全正确的,但是现在scapy可以使用一个文件描述符作为rdpcap()PcapReader()的参数。在

所以rdpcap(sys.stdin)应该可以像预期的那样工作(如果您使用了Scapy的最新版本)!在

rdpcap()接口在内部对该文件名执行open(filename)操作时,只接受一个文件名。以下是通过tempfile的解决方法:

from scapy.all import *
import tempfile
import sys

if __name__=="__main__":
  ftmp = tempfile.NamedTemporaryFile(delete=True)
  ftmp.write(sys.stdin.read())
  ftmp.flush()
  print rdpcap(ftmp.name)
  ftmp.close()

如果不想处理tempfile,则必须重新实现RawPcapReader和{},以获取FD而不是文件名。在

^{pr2}$

相关问题 更多 >