Package jdumper.analyzer

Source Code of jdumper.analyzer.IPv4Analyzer

package jdumper.analyzer;
import java.net.InetAddress;
import java.util.Hashtable;

import jdumper.JDCaptor;

import jpcap.packet.IPPacket;
import jpcap.packet.Packet;

public class IPv4Analyzer extends JDPacketAnalyzer
{
  private static final String[] valueNames={"Version",
    "TOS: Priority",
    "TOS: Throughput",
    "TOS: Reliability",
    "Length",
    "Identification",
    "Fragment: Don't Fragment",
    "Fragment: More Fragment",
    "Fragment Offset",
    "Time To Live",
    "Protocol",
    "Source IP",
    "Destination IP",
    "Source Host Name",
    "Destination Host Name"};
  private Hashtable values=new Hashtable();
 
  public IPv4Analyzer(){
    layer=NETWORK_LAYER;
  }
 
  public boolean isAnalyzable(Packet p){
    if(p instanceof IPPacket && ((IPPacket)p).version==4) return true;
    else return false;
  }
 
  public String getProtocolName(){
    return "IPv4";
  }
 
  public String[] getValueNames(){
    return valueNames;
  }
 
  public void analyze(Packet packet){
    values.clear();
    if(!isAnalyzable(packet))  return;
    final IPPacket ip=(IPPacket)packet;
    values.put(valueNames[0],new Integer(4));
    values.put(valueNames[1],new Integer(ip.priority));
    values.put(valueNames[2],new Boolean(ip.t_flag));
    values.put(valueNames[3],new Boolean(ip.r_flag));
    values.put(valueNames[4],new Integer(ip.length));
    values.put(valueNames[5],new Integer(ip.ident));
    values.put(valueNames[6],new Boolean(ip.dont_frag));
    values.put(valueNames[7],new Boolean(ip.more_frag));
    values.put(valueNames[8],new Integer(ip.offset));
    values.put(valueNames[9],new Integer(ip.hop_limit));
    values.put(valueNames[10],new Integer(ip.protocol));
    values.put(valueNames[11],ip.src_ip.getHostAddress());
    values.put(valueNames[12],ip.dst_ip.getHostAddress());
    values.put(valueNames[13],ip.src_ip);
    values.put(valueNames[14],ip.dst_ip);
  }
 
  public Object getValue(String valueName){
    if((valueNames[13].equals(valueName) && values.get(valueName) instanceof InetAddress) ||
       (valueNames[14].equals(valueName) && values.get(valueName) instanceof InetAddress)){
     
      InetAddress addr=(InetAddress)values.get(valueName);
      if(JDCaptor.hostnameCache.containsKey(addr))
        values.put(valueName,JDCaptor.hostnameCache.get(addr));
      else{
        values.put(valueName,addr.getHostName());
        System.out.println("miss");
      }
    }

    return values.get(valueName);
  }
 
  Object getValueAt(int index){
    if(index<0 || index>=valueNames.length) return null;
   
    return getValue(valueNames[index]);
  }
 
  public Object[] getValues(){
    Object[] v=new Object[valueNames.length];
   
    for(int i=0;i<valueNames.length;i++)
      v[i]=getValueAt(i);
   
    return v;
  }
}
TOP

Related Classes of jdumper.analyzer.IPv4Analyzer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.