Hello,
I have an issue when I develop NetworkExtension in Monterey and Safari. I want find a caller process name when metadata that sourceAppAuditToken is not exist.
I compare blocked content with process fd information using IP:PORT.
// 0. Input blockedSrc, blockedDest
if([[blockedPacket metadata] sourceAppAuditToken] == nil )
{
// 1. get a list of process pid.
sysctl( procList ... );
kinfo_proc proc = procList[procIdx];
// 2. get process fd Information
proc_pidinfo(proc.kp_proc.p_pid, PROC_PIDLISTFDS, socketInfo, ...);
// 3. get IP, Port in process information.
srcIP = (struct in_addr *)&socketInfo.psi.soi_proto.pri_tcp.tcpsi_ini.insi_laddr.ina_46.i46a_addr4;
srcPort = (int)socketInfo.psi.soi_proto.pri_tcp.tcpsi_ini.insi_lport;
destIP = (struct in_addr *)&socketInfo.psi.soi_proto.pri_tcp.tcpsi_ini.insi_faddr.ina_46.i46a_addr4;
destPort = (int)socketInfo.psi.soi_proto.pri_tcp.tcpsi_ini.insi_fport;
...
// 4. compare blocked content with information using srcIP:Port and destIP:Port
if( blockedSrc == src && blockedDest == dest )
{
// 5. found process name
proc_pidpath(proc.kp_proc.p_pid, pathBuffer, sizeof(pathBuffer)-1);
}
}
In BigSur Chrome, Safari and Monterey Chrome is working same routine. and In these case, I can found list of process that open TCP using terminal("lsof -i -P")
But it is not works when use Safari in Monterey. So, I have checked a list of process that open TCP in Monterey. I have couldn't found it.
How can I found caller process name in Monterey when Safari web is blocking? Thank you for reading.