我有一个Wi-Fi探测器,我会管理它。在线程中,我必须通过SSH运行tcpdump并通过ssh隧道获取结果并将其写入我自己计算机上的pcap文件中。
现在,我运行tcpdump命令并返回结果,但我不知道如何将其写入PCAP文件,并且我不知道我返回的数据类型是什么。
self.dataSSH=self.TunnelSSH_data.OuvrirTunnelSSH() #self.dataSSH is a paramiko.SSHClient object
sin, sout, serr = self.dataSSH.exec_command(self.ssh_command, get_pty=True)
while self.running :
for l in self.line_buffered(sout):
print(l)
def line_buffered(self,f):
line_buf = ""
while not f.channel.exit_status_ready():
line_buf += to_unicode(f.read(1))
if line_buf.endswith('n'):
yield line_buf
line_buf = ''
ssh_command的内容是:
"tcpdump -i " + <Interface to monitor> + " -B 8192 -s 500 -U -n -w -"
今天,我只是用 unicode 打印结果,但我不知道如何在 pcap 文件中编写它。
我必须看到调用"tcpdump"的代码才能给你一个明确的答案,但你应该知道"tcpdump"已经给了你把结果写进".pcap"文件的选项。例:
tcpdump -s 0 port ftp or ssh -i eth0 -w mycap.pcap
上面的代码将结果转储到"mycap.pcap"(取自 https://linuxexplore.com/2012/06/07/use-tcpdump-to-capture-in-a-pcap-file-wireshark-dump/(。
因此,我会尝试在探测器中生成 pcap,然后将 pcap 跟踪传输到您的计算机,然后根据需要从探测器的磁盘中删除 pcap 文件。