Red de conocimiento informático - Aprendizaje de programación - ¿Cómo implementar la programación Java para obtener todos los paquetes de datos enviados desde una IP fija?

¿Cómo implementar la programación Java para obtener todos los paquetes de datos enviados desde una IP fija?

Java obtiene todos los paquetes de datos enviados desde una IP fija y necesita implementar algunas funciones de rastreo de red:

El código es el siguiente /*********; *** *******

*?JpcapTip.java

*/

paquete?m;

importar ?jpcap.PacketReceiver;

importar?jpcap.JpcapCaptor;

importar?jpcap.packet.*;

importar?jpcap.NetworkInterface;

import?jpcap.NetworkInterfaceAddress;

//import?java.net.InetAddress;

//import?java.net.UnknownHostException;

¿public?class ?JpcapTip?implements?PacketReceiver?{

public?void?receivePacket(¿Paquete?packet)?{

System.out.println("****** *** *************************************");

/* Datagrama IP Encabezado del mensaje*/

byte[]?l=packet.header;?

/*

for?(int?t=0;tlt ; 21; t ){

System.out.print(l[t] "?***?");

}

*/< / p>

String?str="";

System.out.print("¿Encabezado del mensaje?:?");

for?(int?i=0 ;ilt;l.length;i )?{ //str=str l; int?m=0; m=l[i]; m=mlt;lt;24; m=mgt;gt;24; =str Integer.toHexString(m); //System.out.print("?***?" l[i]);

}

System.out.println (str);

int?d=l.length;

System.out.println("¿Longitud del encabezado?:" (d*8) "bit"); p>

System.out.println("¿Longitud del encabezado?:" (d*8) "bit");

p>

/*Analizar la dirección IP de origen y la dirección IP de destino. */

/*Analizar el tipo de protocolo*/

/**

if( paquete.getClass().equals(IPPacket.class))? {

IPPacket?ipPacket=(IPPacket)paquete;

byte[]?iph=ipPacket.option;

p>

Cadena?iphstr= new?String(iph);

System.out.println(iphstr);

}

*/

if(paquete .getClass().equals(ARPPacket.class))

>{

System.out.println("¿Tipo de protocolo?: protocolo ARP");

¿intentar?{ ARPPacket?arpPacket?=?(ARPPacket)packet; println("¿La dirección MAC de la tarjeta de red de origen es?:" arpPacket.getSenderHardwareAddress()); System.out.println("¿La dirección IP de origen es?:" arpPacket.getSenderProtocolAddress()); ¿La dirección MAC de la tarjeta de red de destino es?: " arpPacket.getTargetHardwareAddress()); System.out.println("¿La dirección IP de destino es?: " arpPacket.getTargetProtocolAddress());

}?catch(? ¿Excepción? ¿e?)? getClass().equals( UDPPacket.class))

{ System.out.println("¿Tipo de protocolo?: protocolo UDP"); intentar?{ UDPPacket?udpPacket?=?(UDPPacket)paquete; .out.println(" ¿La dirección IP de origen es?: "udpPacket.src_ip); int?tport?=?udpPacket.src_port System.out.println("El puerto de origen es: "tport; ("¿La dirección IP de destino es?: " udpPacket.dst_ip); int?lport?=?udpPacket.dst_port; System.out.println("El puerto de destino es: " lport); )?{ e.printStackTrace(); } ?

}

else

if(packet.getClass().equals(TCPPacket.class))? { System.out.println("¿Tipo de protocolo?:Protocolo TCP"); intentar?{ TCPPacket?tcpPacket?=?(TCPPacket)packet; int?tport?=?tcpPacket.src_port; ¿La dirección IP es?:" tcpPacket.src_ip); System.out.println("El puerto de origen es: " tport); System.out.println("La dirección IP de destino es?: " tcpPacket.dst_ip); int?lport ?=?tcpPacket.dst_port; System.out.println( "El puerto de destino es: " lport); }?catch(?Exception?e?)?{ e.printStackTrace();

else

if(packet.getClass().

igual a (ICMPPacket.class)) System.out.println("¿Tipo de protocolo?: protocolo ICMP");

else System.out.println("¿Tipo de protocolo?: protocolo GGP, EGP, JGP u OSPF protocolo o protocolo de transporte de categoría 4 de ISO TP4");

/*datos de mensajes de datos IP*/

byte[]?k=packet.data;

String?str1="";

System.out.print("datos?:?"); for(int?i=0;ilt;k.length;i)?{ / /int? m=0; //m=k[i]; //m=mlt;lt;24; //m=mgt;gt;gt;24; //str1=cadena Integer.toHexString(m); ?new?String(k); //str1=str1 k[i]; //System.out.print("?***?" k[i]); /p>

System.out.println("¿Tipo de datagrama?:?" paquete.getClass());

System.out.println("****** **** ********************************");

}

public?static?void?main(String[]?args)?throws?Exception{

//?TODO?Generar automáticamente códigos auxiliares de métodos

NetworkInterface[ ]?devices?=? JpcapCaptor.getDeviceList(); //.getDeviceList();.

//for?(int?i?=0;?ilt;devices.length;i )?{

int?a=0;

//try?{

/*Información de la red local*/

byte[] b=dispositivos[1] .mac_address;?//Dirección física de la tarjeta de red

//}

//catch()?{}

System.out .print(" Tarjeta de red MAC?:?00");

for?(int?j=0;jlt;b.length;j){ //a=alt;lt;8; a= b[j ]; a=alt;lt;24; a=agt;gt;gt;24; System.out.print(Integer.toHexString(a));

}

Sistema .out.println();

NetworkInterfaceAddress[]?k=devices[1].addresses;

//System.out.println("¿Tarjeta de red MAC?:?" Integer.toHexString(a));

for(int?n=0;nlt;k.length;n)?{ System.out.println("¿Dirección IP local?:?" k[n ].address);?//Dirección IP local System.out.println

("Máscara de subred:?" k[n].subnet);?//Máscara de subred

}

System.out.println("¿Tipo de conexión de red? :?" dispositivos [1].datalink_description);

//}

NetworkInterface?deviceName?=?devices[1];

/*Cambiar la tarjeta de red Establecer en use el dispositivo de red nombreDeDispositivo*/

JpcapCaptor?jpcap?=JpcapCaptor.openDevice(deviceName,?2000,?false,?1);//openDevice(deviceName,1028,false,1) en modo mixto) ;

jpcap.loopPacket(-1, nuevo?JpcapTip());

}

}