2016-07-11 10 views
0

pcap 파일을 통해 각 패킷으로 이동하려고합니다. 그런 다음 IP 주소를 가져 와서 조작하십시오. 결국, 새로운 pcap 파일에 기록 할 것입니다. 내가 언급 한 바와 같이패킷을 조작하고 pcap4j를 사용하여 pcap 파일에 쓰기

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 주소를 얻는 방법을 아래에 pcap4j 버전 1.6.4을 사용 새 원본 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);