通过Cocoa API(LittleSnitch API)阻止应用程序访问网络?

Bro*_*olf 11 macos firewall objective-c ipfw

我正在使用OS X 10.5,我正在寻找一种方法来检测应用程序是否尝试访问Internet.此时我想阻止应用程序,如果它匹配我将定义的一组规则.

我知道有ipfw Unix命令可用于阻止对某些端口的访问,但这会影响所有应用程序.我阅读了手册页,并没有看到使用ipfw来阻止访问但是将其限制为特定应用程序的方法.

我的主要问题在于检测哪个应用程序试图获得对网络的外部访问权限.以编程方式必须有一种方法可以做到这一点,无论是通过使用一些Mac OS X API还是Unix命令,如何实现这一目标?

更新: 基本上我想做Little Snitch的功能,但我想自己从头开始写,因为我不喜欢Little Snitch.我只需要知道什么API可以让我完成应用程序网络沙盒,以及Little Snitch如何做到这一点?

ava*_*tok 11

我意识到这已经晚了一年,但我正在挖掘类似的东西,并且遇到了我认为的答案.希望这可以帮助其他人下线.

Little Snitch似乎使用网络内核扩展来过滤进入系统的流量.我通过发现它在盒子上安装内核扩展来验证这一点:

[~] kextstat
...
55 0 0x687000 0x2b000 0x2a000 at.obdev.nke.LittleSnitch (2.0.46) <7 6 5 4 2>
...
Run Code Online (Sandbox Code Playgroud)

如果您以编程方式希望阻止网络访问另一个应用程序,这似乎是您最好的选择.但是,如果您只想监视其他应用程序的网络使用情况,您还可以选择其他选项libpcap.