0

我想通过 tshark 或 wireshark 得到处理后的结果并在 python 中使用,我认为 .json 格式很好。现在我使用:

ssh root@ip tcpdump -i eth0 -w - | tshark -i - -Tjson

从远程系统获取网络数据包导致远程系统只有tcpdump,无法安装更多软件。-w - 表示输出到标准输出,-i - 表示从标准输入读取。现在我可以在终端中实时看到 json 输出,但我想在 python 中接收 json 对象并处理它。我尝试在 alpha.py 中编写此代码:

import sys

for line in sys.stdin:
    print line

并使用以下命令获取输出:

ssh root@ip tcpdump -i eth0 -w - | tshark -i - -Tjson | python3 alpha.py

并且输出似乎是这样的:

[
  {
    "_index": "packets-2019-04-30",
    "_type": "pcap_file",
    "_score": null,
    "_source": {
      "layers": {
        "frame": {
          "frame.encap_type": "1",
          "frame.time": "Jan  1, 1970 08:14:05.382776000 HKT",
          "frame.offset_shift": "0.000000000",
          "frame.time_epoch": "845.382776000",
          "frame.time_delta": "0.000000000",
          "frame.time_delta_displayed": "0.000000000",
          "frame.time_relative": "0.000000000",
          "frame.number": "1",
          "frame.len": "111",

是的,每一个“行”只是一个输出打印行,而不是一个完整的 json 字符串。顺便说一下,为方便起见,上面的输出不是从标准输入而是从 .pcap 文件中读取的:

tshark -r a.pcap -Tjson  | python3 alpha.py

现在我很困惑,但很多人给了我一些想法。现在我想让它更清楚,所以我发布了这篇文章。原帖在这里:如何将 Wireshark 处理的数据转发到 python?用什么样的方法?

非常感谢@Ente https://stackoverflow.com/users/3215929/ente

我期待着解决方案。谢谢。

4

0 回答 0