![ディスク内のデータをカーネルモジュールに直接保存するにはどうすればよいですか?](https://rvso.com/image/76405/%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E5%86%85%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AB%E7%9B%B4%E6%8E%A5%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F%20.png)
の機能で TCP パケットをキャプチャしnetif_receive_skb
、TCP パケットのプレイロードを保存したいと考えています。カーネル モジュールでファイルを読み書きできないため、ディスクに直接保存する方法があるでしょうか。
これは良い方法でしょうか、それとも他の提案がありますか。
答え1
異なる角度から要件にアプローチすると、ニーズが満たされる場合があります。
iptables
には、ユーザー空間用に選択したパケットをキューに入れるオプションがあります-j NFQUEUE
(を参照man iptables
)。ユーザー空間プログラムでは、パケットをディスクに書き込むのは簡単です。
見るhttps://home.regit.org/netfilter-en/using-nfqueue-and-libnetfilter_queue/非常に興味深い詳細がいくつかありますが、私はざっと目を通しただけであることを指摘しておきます。