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