已经完成了最简单的从pcap文件中读取每个报文,然后再转换成文本格式显示报文头信息,以便于后面分析用,这里做了简单的过滤,根据源目的ip地址,或者查找tcp没有响应的报文。以后又空再完善其他的功能。
import java.net.InetAddress;
import jpcap.*;
import jpcap.packet.EthernetPacket;
import jpcap.packet.IPPacket;
import jpcap.packet.UDPPacket;
import jpcap.packet.*;
import java.util.*;
class PacketInfo
{
String src_ip;
String dst_ip;
String time;
String flag;
int src_port;
int dst_port;
int pro;
int id;
long seq;
long ack;
public PacketInfo()
{
src_ip = new String();
dst_ip = new String();
time = new String();
flag = new String();
}
}
public class SmartPcapParser {
public Boolean ip_check(String ip1, String ip2){
if(ip1.equals(ip2)){
return true;
}
return false;
}
public void tcp_miss_check(PacketInfo packet_info, Vector<PacketInfo> packets){
}
public static void main(String[] args) {
SmartPcapParser parser = new SmartPcapParser();
IPPacket lastIp = null;
Vector<PacketInfo> packets = new Vector<PacketInfo>();
int f = 0;
int i = 0;
String[] pro_name = new String[60];
pro_name[0] = "ip";
pro_name[1] = "icmp";
pro_name[6] = "tcp";
pro_name[17] = "udp";
int count = 0;
String file_name = new String();
Boolean only_parse = true;
int packets_count = 0;
String srcip_filter = new String();
Boolean filt_srcip = false;
String dstip_filter = new String();
Boolean filt_dstip = false;
Boolean filter_or = false;
Boolean filter_result = false;
Boolean filt_tcp_