捕获单个应用程序的networkingstream量?

我正在寻找一个方法/破解/内核模块来捕获PID的所有networkingstream量和叉/subprocess。

我有一个Firefox的应用程序,打开一些网页,并开始stream媒体stream,wmv,或任何其他stream协议的东西,以及“简单”下载的IMG,JS和其他“静态”的内容。

我有兴趣获取这个stream量,并最终隔离这些stream。

Wireshark不支持通过进程ID捕获,但我认为这可以解决(这是我的问题的核心)。 很明显,build立一个完整的虚拟机,并运行wireshark的Firefox只会运行,但我更加满意轻量级的解决scheme,可能基于chroot? 结合iptables所有者模块。

所以想法或完整的解决scheme将不胜感激。

– 编辑:

人们正在猜测我正在使用的操作系统:问题主要针对Linux操作系统,但是应该在Windows / OpenSolaris / MacOSX或任何其他合理的黑客可访问的操作系统上find可行的解决scheme,以便接受答案。

看看iptables的ULOG目标,结合所有者匹配模块。 这不是你所要求的,但是如果你专门为你的testing创build一个用户,并且只运行你想要作为那个用户来观看的应用程序,那么你应该非常接近。

至less据我所知,ULOGD会用原始数据包写一个文件。 我没有自己做,所以我不能担保,但它看起来会做你想做的。

理想情况下,您可以通过在您的计算机上添加另一个IP地址来分隔Firefoxstream量,并使Firefox在打开出站连接时使用它。

这是可能的,例如用OpenSSH:

ssh -b 192.0.2.64 [...]

但我找不到在Firefox中的任何命令行选项或首选项。

相反,您可以使用一个简单的(本地)HTTP代理,如tinyproxy ,代理使用唯一的IP地址作为其出站stream量。 tinyproxytinyproxy中的Bind设置来做到这一点,例如:

Bind 192.0.2.64

最后,你可以调查一些比完整的虚拟机更轻量级的东西。 你提到了iptables所以我假设你使用的是Linux主机; 有一些像LXC和OpenVZ这样的解决scheme可能会诀窍,如果HTTP代理不是您的select。

你可以设置一个http代理,并设置Firefox来通过它,然后分析。 如果你通过不同的机器(甚至是虚拟机)来运行代理,那么你就可以把Wireshark扔到那个…我认为这样可以充分隔离stream量。

在桌面上安装HTTPWatch并在开始浏览之前单击logging。