2012-06-02 4 views
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);    
    } 

Что мне не хватает?

+0

Где и как вы его изменяете? Я не могу себе представить, почему вы думаете, что любой может решить проблему на основе этого фрагмента кода. Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

+0

Я изменяю его в строке кода: ((IPPacket) пакет) .src_ip = InetAddress.getByName ("0.0.0.0"); – Mark268

+0

Выводит ли вывод 'println', что вы действительно изменили' src_ip'? Если это так, вам нужно предоставить более подробную информацию о остальной части вашего кода, особенно 'writePacket'. – Lilienthal

ответ

0

Дело в JpcapWriter заключается в том, что он работает вместе с JpcapCaptor, поэтому вам нужно дать ему захват в качестве поля, когда оно инициализируется. Таким образом, когда вы выполняете цикл захвата и захватываете пакеты, даже если вы вносите в него изменения, эти изменения сохраняются только внутри объекта, который вы создаете в java, а захватчик передает неизменный пакет записи.

У меня возникла аналогичная проблема. Поэтому я просто пишу пакеты в файл без использования встроенного автора. Я извлекаю нужные данные и пишу их как обычный текст. Единственным недостатком этого является то, что он перезагружает файл захвата немного сложнее.

Дайте мне знать, если у вас есть еще вопросы.

Смежные вопросы