有些人可能会暗示哪个API 拦截进出网络流量,如Little Snitch Mac OS X ?
基于可可的API很受欢迎。
是否需要写一个kext或者某个 - 某种程度上授权的 - 用户土地应用程序也可以完成这项工作吗?
答案 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。