java如何编程实现,获取固定IP发来所有的数据包 ?

java如何编程实现,获取固定IP发来所有的数据包 ?,第1张

java获取固定IP发来所有的数据包,需要实现网络嗅探的部分功能:

代码如下;

/
 JpcapTipjava
/
package m;
import jpcapPacketReceiver;
import jpcapJpcapCaptor;
import jpcappacket;
import jpcapNetworkInterface;
import jpcapNetworkInterfaceAddress;
//import javanetInetAddress;
//import javanetUnknownHostException;
public class JpcapTip implements PacketReceiver {
public void receivePacket(Packet packet) {
   Systemoutprintln("");
   /IP数据报报文头/
   byte[] l=packetheader;     
   /
   for (int t=0;t<21;t++){
    Systemoutprint(l[t]+"  ");
   }
   /
   String str="";
    Systemoutprint("报文头 : ");
    for (int i=0;i<llength;i++) {
     //str=str+l;
     int m=0;
     m=l[i];
     m=m<<24;
     m=m>>>24;
     str=str+IntegertoHexString(m);
     //Systemoutprint("          "+l[i]);
    }
   Systemoutprintln(str);
   int d=llength;
   Systemoutprintln("首部长度 :"+(d8)+"bit");
  
   /分析源IP地址目的IP地址/
   /分析协议类型/
   /
   if(packetgetClass()equals(IPPacketclass)) {
    IPPacket ipPacket=(IPPacket)packet;
    byte[] iph=ipPacketoption;
    String iphstr=new String(iph);
    Systemoutprintln(iphstr);
   }
   /
   if(packetgetClass()equals(ARPPacketclass))
   {
    Systemoutprintln("协议类型 :ARP协议");
    try {
     ARPPacket arpPacket = (ARPPacket)packet;
     Systemoutprintln("源网卡MAC地址为 :"+arpPacketgetSenderHardwareAddress());
     Systemoutprintln("源IP地址为 :"+arpPacketgetSenderProtocolAddress());
     Systemoutprintln("目的网卡MAC地址为 :"+arpPacketgetTargetHardwareAddress());
     Systemoutprintln("目的IP地址为 :"+arpPacketgetTargetProtocolAddress());
} catch( Exception e ) {
     eprintStackTrace();
    } 
   }
   else 
    if(packetgetClass()equals(UDPPacketclass))
    {
     Systemoutprintln("协议类型 :UDP协议");
     try {
      UDPPacket udpPacket = (UDPPacket)packet;
      Systemoutprintln("源IP地址为 :"+udpPacketsrc_ip);
      int tport = udpPacketsrc_port;
      Systemoutprintln("源端口为:"+tport);
      Systemoutprintln("目的IP地址为 :"+udpPacketdst_ip);
      int lport = udpPacketdst_port;
      Systemoutprintln("目的端口为:"+lport);
     } catch( Exception e ) {
      eprintStackTrace();
     } 
    }
   else
    if(packetgetClass()equals(TCPPacketclass)) {
     Systemoutprintln("协议类型 :TCP协议");
     try {
      TCPPacket tcpPacket = (TCPPacket)packet;
      int tport = tcpPacketsrc_port;
      Systemoutprintln("源IP地址为 :"+tcpPacketsrc_ip);
      Systemoutprintln("源端口为:"+tport);
      Systemoutprintln("目的IP地址为 :"+tcpPacketdst_ip);
      int lport = tcpPacketdst_port;
      Systemoutprintln("目的端口为:"+lport);
     } catch( Exception e ) {
      eprintStackTrace();
     }
    }
   else
    if(packetgetClass()equals(ICMPPacketclass))
     Systemoutprintln("协议类型 :ICMP协议");
   else
     Systemoutprintln("协议类型 :GGP、EGP、JGP协议或OSPF协议或ISO的第4类运输协议TP4");
/IP数据报文数据/
   byte[] k=packetdata;   
   String str1="";
    Systemoutprint("数据 : ");
     for(int i=0;i<klength;i++) {
      //int m=0;
      //m=k[i];
      //m=m<<24;
      //m=m>>>24;
      //str1=str+IntegertoHexString(m);
      str1 = new String(k);
      //str1=str1+k[i];
      //Systemoutprint("          "+k[i]);
     }
     Systemoutprintln(str1);
   Systemoutprintln("数据报类型 : "+packetgetClass());
   Systemoutprintln("");
}
public static void main(String[] args) throws Exception{
   // TODO 自动生成方法存根
  
   NetworkInterface[] devices = JpcapCaptorgetDeviceList();        //getDeviceList();
   //for (int i =0; i<deviceslength;i++) {
    int a=0;
    //try {
    /本地网络信息/
    byte[] b=devices[1]mac_address; //网卡物理地址
    //}
    //catch() {}
    Systemoutprint("网卡MAC : 00");   
    for (int j=0;j<blength;j++){
     //a=a<<8;
     a=b[j];
     a=a<<24;
     a=a>>>24;
     Systemoutprint(IntegertoHexString(a));
    }
    Systemoutprintln();
    NetworkInterfaceAddress[] k=devices[1]addresses;
   
    //Systemoutprintln("网卡MAC : "+IntegertoHexString(a));
    for(int n=0;n<klength;n++) {
     Systemoutprintln("本机IP地址 : "+k[n]address);     //本机IP地址
     Systemoutprintln("子网掩码   : "+k[n]subnet);      //子网掩码
    }
    Systemoutprintln("网络连接类型 : "+devices[1]datalink_description);
   //}
   NetworkInterface deviceName = devices[1];
   /将网卡设为混杂模式下用网络设备deviceName/
   JpcapCaptor jpcap =JpcapCaptoropenDevice(deviceName, 2000, false, 1);           //openDevice(deviceName,1028,false,1);
   jpcaploopPacket(-1,new JpcapTip());
}
}

检查有没有导入以下类
import jpcapJpcapCaptor;
import jpcapNetworkInterface;
import jpcapNetworkInterfaceAddress;
检查jpcap是否正确安装


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13359774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-21
下一篇 2023-07-21

发表评论

登录后才能评论

评论列表(0条)

保存