用pyshark将STDIN读为pyhon吗?

时间:2019-04-30 00:09:23

标签: python tcp wireshark tshark pyshark

我想通过tshark或wirehark获得处理后的结果,并在python中使用它,我认为.json格式非常有用。现在我使用:

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

要从远程系统获取网络数据包,因为该远程系统仅具有tcpdump,无法安装更多软件。 -w-表示输出到stdout,-i-表示从stdin读取。现在,我可以在终端中实时看到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字符串。顺便说一下,为方便起见,上面的输出不是从stdin而是从.pcap文件读取的:

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

现在我很困惑,但是很多人为我提供了一些想法。现在,我想更清楚一点,所以我发布此帖子。原始帖子在这里:How to forward Wireshark processed data to python? in what kind of method?

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

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

0 个答案:

没有答案