1

我猜这是套接字编程。但是我从来没有做过套接字编程,期望在学习 Python 时运行教程示例。我需要更多的想法来实现这一点。

我特别需要的是运行服务器的监控程序,该程序将轮询或侦听来自不同 IP 跨不同流行端口交换的流量。例如,我如何通过192.168.1.10和192.168.1.1(即网关)的80端口接收和发送数据。

我检查了一些现成的工具,如 MRTG、Bwmon、Ntop 等,但由于我们正在研究一些特定的模式研究,我们需要在程序中进行数据捕获。

想法是监视一些流行的端口并研究某些时期的网络流量并将它们与其他一些数据进行比较。

我们想找到一种方法来用 Python 完成这一切......

4

2 回答 2

2

您可能想为此使用scapy。只需嗅探特定接口上的所有以太网流量,丢弃所有非 TCP 且与端口不匹配的内容。

不确定 scapy 是否已经可以跟踪 TCP 连接(例如识别重复的序列号,仅提取有效负载流),但我猜它可能可以,如果不是,那么将一个足够好的 TCP 连接跟踪器组合在一起并不难95% 的流量。

替代方案是直接使用套接字(查找原始套接字)或 libpcap,这两者都可以从 Python 中完成。您可能还想查看“tcpdump”命令行工具的过滤器表达式语法,也许它已经可以完成您想要的操作。

我敢打赌,有更专业的高级工具可以解决这个问题,但我不知道。

PS:如果您还不了解wireshark,请先检查一下并尝试一下。它可以跟踪 TCP 流,并会教您 TCP 连接跟踪的含义。也许它的命令行二进制文件 tshark 可以用来提取你想要的 TCP 流。

于 2012-06-03T17:21:18.343 回答
0

IPTraf 是一个基于 ncurses 的 IP LAN 监控工具。具有生成网络统计信息的能力,包括 TCP、UDP、ICMP 等。

由于您正在考虑从 python 执行它,您可以考虑使用屏幕(带有 VT100/ANSI 终端仿真的屏幕管理器)来克服 ncurses 问题,并且您可能希望将日志记录和间隔参数传递给 IPTraf,这会强制 iptraf 登录到在给定的时间间隔内归档。有点棘手,但最终您可以通过基本解析日志文件来获得所需的内容。

于 2012-06-03T17:51:36.143 回答