1

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();

        }
    ...
}

ありがとうございました

4

1 に答える 1

0

同様の解決策を探している人のために、netutils ライブラリの PCapFileWriter を使用して動作させ、各パケットに偽のイーサネット ヘッダーを含めるように変更しました ( http://code.google.com/p/netutils/ )

于 2013-05-30T17:39:49.477 に答える