C语言 如何将远程计算机上实时运行的 tcpdump 结果导出到计算机上的 pcap 文件中



我有一个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 文件。

最新更新