0

ネットワークインターフェイスからパケットをキャプチャし、それらを変更し、変更されたパケットをローカルディスク(出力ファイル)に書き込むソフトウェアを開発しようとしています。

出力ファイルを開くと、行った変更がコミットされていないことがわかります。たとえば、IPパケットをキャプチャし、送信元IPアドレスを0.0.0.0に変更しました。その後、変更したパケットを出力ファイルに保存しました。出力ファイルを開くと、送信元IPアドレスが変更前と同じであることがわかりました。

    if (packet instanceof TCPPacket) {
            try {   
                ((IPPacket)packet).src_ip = InetAddress.getByName("0.0.0.0");

            } catch (UnknownHostException e) {
                e.printStackTrace();
            }
            System.out.println(packet);
            outputFile.writePacket(packet);             
     }

私は何が欠けていますか?

4

1 に答える 1

0

JpcapWriter は JpcapCaptor と一緒に実行されるため、初期化時にキャプターをフィールドとして指定する必要があります。したがって、キャプターをループしてパケットを取得すると、変更を加えても、それらの変更は Java で作成したオブジェクト内にのみ保存され、キャプターは変更されていないパケットをライターに渡します。

同様の問題が発生しました。したがって、組み込みのライターを使用せずに、パケットをファイルに書き込むだけです。必要なデータを抽出し、プレーン テキストとして書き込みます。これの唯一の欠点は、キャプチャ ファイルのリロードが少し面倒になることです。

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-06-07T21:55:50.053 に答える