我尝试了 Wireshark。它显示了源和目标 IP 地址、端口号和数据包内容,但没有显示哪个应用程序正在使用这些数据包。
显然 tcpdump 类似;有网络数据,但没有关于哪个应用程序的信息。
当浏览器、电子邮件和其他已知的互联网相关程序关闭且其他计算机关闭时,Wireshark 显示的活动比我预期的要多得多(包括我家庭网络之外的目标 IP)。但如果不知道哪个程序正在发送或接收,就很难对此采取任何措施。
我正在使用 Ubuntu 11.04。
我并不是在寻找通用的网络嗅探器;我只想查看运行嗅探器的同一台机器上进出的情况。
Linux 上有类似的东西吗?即使要花钱?还是我不知道如何或在哪里在 Wireshark 中查找应用程序名称?
答案1
我认为大多数嗅探器都不会努力确定它们正在运行的当前计算机是否是它们所看到的任何流量的端点(而不是通过集线器或交换机上的镜像端口或无线信道查看其他计算机的帧,或者查看当前计算机只是桥接/路由/NAT 网关的帧)。因此,大多数嗅探器不会费心查看是否可以找到进程或应用程序名称,因为只有本地计算机是流量的端点时才能找到。
这不像让嗅探器为您完成那么方便,但无论如何,这里有一个解决方法:
由于您知道哪些地址属于本地机器,因此一旦找到本地端口号,您就可以使用该端口号查找进程的名称,lsof
如下所示:
sudo lsof +c15 -i :$PORT
...其中“$PORT”是您关心的端口号。
答案2
我之前看过这个,但什么也没发现。
有一种粗略的脚本技术,您可以根据netstat
。
它依赖于细节(如你所观察到的),没有必要嗅探所有的流量——您要查看的是connection table
和关联的程序 ID。
网络状态监测
这些选项的作用如下,
-n — 显示纯网络地址而不解析名称(使速度更快)
-p — 给出关联程序的 PID
-t — 限制查看 TCP 连接
运行速度非常快,可以循环通过脚本继续记录数据(插入 cron?)。
您可以将该数据过滤为导出数据库的
{节目名称,节目ID,IP五元组,时间窗口}
缺点是,由于没有 UDP 连接条目(类似于 TCP 维护的条目),因此需要嗅探 UDP 应用程序。
我真的很想知道是否有现成的工具可以做到这一点 :-) 这是一个不错的项目。
我想我以前写过一个关于这些行的 Python 脚本。