import com.fitweber.pojo.WebPacket;
import com.fitweber.util.DataLoger;
/**
* 抓包监听器,实现PacketReceiver中的方法,当数据包到达时计数.
* @author www.NetJava.cn
*/
class DumpPacket implements PacketReceiver {
private String ipAdd;
private DataLoger dataLoger;
private NetworkInterface nc;
private String addresses;
DumpPacket(String ipAdd,NetworkInterface nc){
this.ipAdd=ipAdd;
this.nc = nc;
this.addresses = nc.addresses[0].address.toString();
this.dataLoger = new DataLoger();
}
//实现包统计
public void receivePacket(Packet packet) {
WebPacket webPacket = new WebPacket();
webPacket.setAddresses(this.addresses);//监听网卡地址
EthernetPacket ethernetPacket = (EthernetPacket) packet.datalink;
webPacket.setSource_mac(ethernetPacket.getSourceAddress());//请求硬件地址
webPacket.setDest_mac(ethernetPacket.getDestinationAddress());//目标硬件地址
if("class jpcap.packet.ARPPacket".equals(packet.getClass().toString())){
ARPPacket arppacket = (ARPPacket) packet;
webPacket.setCaplen(arppacket.len);//网络包长度
webPacket.setHeader_data(arppacket.header);//报文头部信息
webPacket.setPacket_data(arppacket.data);//报文数据
webPacket.setReceive_date(new Timestamp(arppacket.sec*1000+arppacket.usec/1000));//收报时间
}else{
IPPacket ippacket = (IPPacket) packet;
webPacket.setSource_ip(ippacket.src_ip.getHostAddress());//请求IP地址
webPacket.setDest_ip(ippacket.dst_ip.getHostAddress());//目标IP地址
webPacket.setProtocol(ippacket.protocol);//网络协议
webPacket.setPriority(ippacket.priority);//优先级
webPacket.setVersion(ippacket.version);//版本
webPacket.setHop_limit(ippacket.hop_limit);//生存时间
webPacket.setIdent(ippacket.ident);//分组标识
webPacket.setCaplen(ippacket.len);//网络包长度
webPacket.setDatalen(ippacket.length);//数据包长度
webPacket.setHeader_data(ippacket.header);//报文头部信息
webPacket.setPacket_data(ippacket.data);//报文数据
webPacket.setReceive_date(new Timestamp(ippacket.sec*1000+ippacket.usec/1000));//收报时间
//System.out.println("服务类型(TOS) (v4/v6):"+ippacket.rsv_tos);
//System.out.println(ippacket);
if(ippacket.protocol == 6){
TCPPacket tcppacket =(TCPPacket) ippacket;
webPacket.setSrc_port(tcppacket.src_port);//源端口
webPacket.setDst_port(tcppacket.dst_port);//目标端口
}
if(ippacket.protocol == 17){
UDPPacket udppacket =(UDPPacket) ippacket;
webPacket.setSrc_port(udppacket.src_port);//源端口
webPacket.setDst_port(udppacket.dst_port);//目标端口
}
}
this.dataLoger.saveLog(webPacket);
}
/**
*日志时间信息
* @return:日志内容时间
*/
private static String currentTime(){
Date d = new Date();
SimpleDateFormat kk=new SimpleDateFormat("mm:ss");
String strTime=kk.format(d);
return strTime;
}
}
数据入库:DataLoger.java
[java]
package com.fitweber.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.fitweber.dao.WebPacketDao;
import com.fitweber.pojo.WebPacket;
public class DataLoger {
fi