2016-07-11 102 views
0

我想要通過pcap文件並轉到每個數據包。然後獲取IP地址並對其進行處理。最後,我將寫入一個新的pcap文件。如何操作數據包並使用pcap4j寫入pcap文件

我用pcap4j版本1.6.4及以下是我如何得到源IP地址:

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

正如我所說,我得到的源IP地址,現在我不知道怎麼設置新的源IP地址並將其寫入NewFileName。

任何幫助,將不勝感激。

回答

0

pcap4j中的包對象是不可變的。但是,您可以基於現有數據包創建新數據包,然後使用Builder對其進行修改。

在下面的片段中,我創建一個新修改的數據包(假設代替()包含了創造一個新的IP地址的邏輯):

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

     Packet newPacket = builder.build(); 

然後,您可以使用轉儲創建包:

 dumper.dump(newPacket);