如何将远程机器上实时运行的tcpdump结果导出到我电脑上的pcap文件中?

Posted

技术标签:

【中文标题】如何将远程机器上实时运行的tcpdump结果导出到我电脑上的pcap文件中?【英文标题】:How to export the tcpdump result running in real-time on a remote machine into a pcap file on my computer? 【发布时间】:2019-10-19 20:53:03 【问题描述】:

我有一个我可以管理的 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文件。

【问题讨论】:

【参考方案1】:

我必须查看调用“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 文件。

【讨论】:

我知道 tcpdump 的这个选项,但是探针没有足够的内存来保存 pcap 文件,所以我必须在其他地方创建文件...

以上是关于如何将远程机器上实时运行的tcpdump结果导出到我电脑上的pcap文件中?的主要内容,如果未能解决你的问题,请参考以下文章

当我通过 Git Bash 中的 ssh 在远程 Linux 机器上运行命令时,如何将文件的内容直接复制到我的 Windows 剪贴板中?

SSMS数据的导入和导出不能保持视图结构。

oracle 表数据 怎么远程导到另一个机器的数据库里

当我已经 ssh 进入远程机器时,如何 scp 回到本地?

linux如何抓包

如何远程将oracle数据库导出本地?