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());

}

}

Socket s = new Socket(InetAddressgetLocalHost(), 8080);

OutputStreamWriter osw = new OutputStreamWriter(sgetOutputStream());

StringBuffer sb = new StringBuffer();

sbappend("GET />

给你一个吧,这个能抓取任何程序

import javaioBufferedReader;

import javaioIOException;

import javaioInputStream;

import javaioInputStreamReader;

import javanet>

西门子300报文的数据格式已经被破解了,但是想自己做的话比较麻烦

如果你仅仅是想采集PLC里面的数据,可以用OPC方式

OPC提供了自动化接口的自定义接口

用JAVA或NET这样的高级语言的话,建议你调用OPC自动化自动化接口来采集

可以在网上下载KEPWARE这个软件,这软件提供了对很多主流PLC的数据采集驱动

以上就是关于java如何编程实现,获取固定IP发来所有的数据包 全部的内容,包括:java如何编程实现,获取固定IP发来所有的数据包 、java 利用socket机制从客户端读取从服务器发来的消息、如何实现java解析网络协议报文(类似Wireshark那样,或者有没有开源的包供调用)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9569870.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存