用于拦截网络流量的API

时间:2014-05-14 22:18:33

标签: macos cocoa tcp firewall

有些人可能会暗示哪个API 拦截进出网络流量,如Little Snitch Mac OS X

基于可可的API很受欢迎。

是否需要写一个kext或者某个 - 某种程度上授权的 - 用户土地应用程序也可以完成这项工作吗?

1 个答案:

答案 0 :(得分:4)

我不知道Little Snitch是怎么做到的(但我很乐意......);我一直在使用这些dTrace探针:

#Socket接受进程名称:

dtrace -n' syscall :: accept *:entry {@ [execname] = count(); }'

#进程和用户堆栈跟踪的套接字连接:

dtrace -n' syscall :: connect *:entry {trace(execname); USTACK(); }'

#谁正在连接到:

dtrace -n' tcp ::: accept-established {@ [args [3] - > tcps_raddr,args [3] - > tcps_lport] = count(); }'

(这些来自" DTrace:Oracle Solaris,Mac OS X和FreeBSD中的动态跟踪,Brendan Gregg和Jim Mauro,Prentice Hall 2011" http://www.dtracebook.com/index.php/Network_Lower_Level_Protocols。)

您还应该查看Brendan Gregg的DTraceToolkit:http://www.brendangregg.com/dtrace.html#DTraceToolkit

特别是tcpsnoop和tcptop。