Android の ToyVpnClient を使用してトンネルをセットアップし、送受信パケットをインターセプトしました。これらのパケットを、ByteBuffer に格納されているこのトンネルから pcap ファイルに書き込みたいと考えています。jpcap と jnetpcap を見てきましたが、これらのライブラリを使用してキャプチャされたパケットからの pcap ファイルの作成のみをサポートしているようで、最初にデバイスのネットワーク インターフェイスをリッスンします。
ByteBuffer に保存されているトンネルのパケット データから pcap ファイルを作成するのに役立つ API はありますか? 独自の pcap ライターを作成する場合、トンネルからこのパケットを解析して pcap 形式にするにはどうすればよいですか? (私は見ましたが、例は見つかりませんでした)
ToyVpnClient からの関連するコード サンプルを次に示します。
...
DatagramChannel tunnel = DatagramChannel.open();
// Connect to the server.
tunnel.connect(server);
// Packets to be sent are queued in this input stream.
FileInputStream in = new FileInputStream(mInterface.getFileDescriptor());
// Packets received need to be written to this output stream.
FileOutputStream out = new FileOutputStream(mInterface.getFileDescriptor());
// Allocate the buffer for a single packet.
ByteBuffer packet = ByteBuffer.allocate(32767);
// keep forwarding packets till something goes wrong.
while (true) {
// Read the outgoing packet from the input stream.
int length = in.read(packet.array());
if (length > 0) {
// Write the outgoing packet to the tunnel.
packet.limit(length);
tunnel.write(packet);
//How to write to pcap file here?
packet.clear();
}
...
}
ありがとうございました