macOS版の制約
管理者権限が必須
パケットキャプチャは /dev/bpf* デバイスへのアクセスが必要で通常ユーザーからはアクセス出来ません。
起動時に管理者権限を付与する必要が有ります。
追加ドライバは不要
Windows版ではNpcapが必要になりますが、macOS版はlibpcap / BPFがOS標準なので不必要です。
プロセス識別(v1.5)のmacOS固有の限界
実装方式:
- Apple の libproc(非公開・変更されうる API)でポートとプロセスを照合
- スナップショット方式(その瞬間のシステム状態を読む)
結果、次の様な状態が発生するとパケットを取りこぼしやすいです。
- 短命な接続(一瞬で終わる通信)
- 権限の高いシステムプロセス(ユーザースペースから見えない)
- 複数プロセスが同じソケットを共有している場合
(最初に見つかったプロセスだけ表示)
macOS 独自よりの正確な実装は実施されていないです。
- pktap: パケットにプロセス名・PID を付与できる疑似インターフェース
(tcpdump -i pktap など)。Sniffnet は標準 libpcap 経由のため未使用。
- Network Extension / カーネルフックは Apple の entitlement が必要。
Sniffnet は「軽量・非侵襲」を優先して採用していない。