2016-07-11 27 views
0

Ich möchte durch eine Datei pcap bekommen und zu jedem Paket gehen. Dann hole die IP-Adresse und manipuliere sie. Am Ende werde ich es in eine neue pcap Datei schreiben.Wie Paket zu manipulieren und in PCAP-Datei schreiben mit pcap4j

Ich benutze pcap4j Version 1.6.4 und unten ist, wie ich den Quell-IP-Adresse erhalten:

String fname = "FileName"; 
String dumpFile = "newFileName"; 
PcapHandle h = Pcaps.openOffline(fname); 
PcapDumper dumper = h.dumpOpen(newFileName); 
Packet p = null; 
while ((p = h.getNextPacket()) != null) { 
    IpV4Packet ip = p.get(IpV4Packet.class); 
    Inet4Address srcAddr = ip.getHeader().getSrcAddr(); 
} 

Wie ich bereits erwähnt habe ich die Quell-IP-Adresse bekommen und jetzt weiß ich nicht, wie das setzen neue Quell-IP-Adresse und schreibe sie in NewFileName.

Jede Hilfe wäre willkommen.

Antwort

0

Paketobjekte in pcap4j sind unveränderlich. Sie können jedoch ein neues Paket erstellen, das auf einem vorhandenen Paket basiert, und es dann ändern, indem Sie Builder verwenden.

Im folgenden Ausschnitt Ich erstelle ein neues modifizierte Paket (unter der Annahme, replace() enthalten Ihre Logik, um eine neue IP-Adresse zu erstellen):

 Packet.Builder builder = p.getBuilder(); 
     builder.get(IpV4Packet.Builder.class) 
       .srcAddr(replace(srcAddr)); 

     Packet newPacket = builder.build(); 

Sie können dann Dump das erstellte Paket mit:

 dumper.dump(newPacket);