如何在Python中处理网络流量信息以显示通信节点



我正在努力了解如何最好地将我通过PacketBeat在JSON中收集的网络流可视化为图表,并需要一些建议和建议。

这样做的原因是为了提供一种简单的方式来突出显示我的网络上的哪些设备正在与其他设备通话等。

到目前为止,我的想法是处理PacketBeat JSON,以便创建一个唯一网络节点的列表,以及一个单独的元组列表,格式为(source,destination,destination_port(,以记录谁与谁交谈。

如果我考虑用类似于";graphviz";Python库?

如果有任何建议,我将不胜感激。

是的,pygraphviz或gvgen都能很好地完成这项任务。GVGen在依赖性方面较小,并且它生成";。点";然后将其馈送到";点";命令行工具,您可以通过下载graphviz包获得该工具。Pygraphviz可以直接转到png、svg等,但在某些计算机上安装可能会更困难。

我使用了pygraphviz和gvgen,它们都相当简单,可以生成我需要的结果。

但作为一个粗略的例子,对于gvgen(我今天刚刚使用(,你会说:

import os
from gvgen import GvGen
graph = GvGen()
sources = ["machineA", "machineB", "machineC"]
connections = [("machineA", "machineB", "22"), ("machineC", "machineA", "80")]
nodes = {name: graph.newItem(name) for name in sources}
for source, target, port in connections:
newlink = graph.newLink(nodes[source], nodes[target])
graph.propertyAppend(newlink, "label", port)
with open("foo.dot", "w") as outfile:
graph.dot(outfile)
os.popen(f"dot -Tpng foo.dot -ofoo.png")

最近,我倾向于GvGen,因为上周我浪费了半个小时试图在最终用户计算机上安装PyGraphviz。我花了一个周末的时间用GvGen取代了PyGraphviz,我想我将来会朝着这个方向倾斜。如果你只是在自己的电脑上运行它,pygraphviz很好也很简单。您将立即知道它是否易于安装。

最新更新