elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 23:49  


Tema destacado: Suscripción al boletín mensual de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  [Tutorial #1]Primer paso para crear un sniffer en java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Tutorial #1]Primer paso para crear un sniffer en java  (Leído 5,875 veces)
Debci
Moderador
***
Desconectado Desconectado

Mensajes: 1.945


Actualizate o muere!


Ver Perfil WWW
[Tutorial #1]Primer paso para crear un sniffer en java
« en: 8 Enero 2010, 23:07 »

PROGRAMACIÓN DE RED EN JAVA
Paquetes TCP/UDP, conexiones de red, interfaces...


Hola a todos, recientemente me he puesto a estudiar las posibilidades de java como sniffer, asi que voy a poner lo que he aprendido, en unos cuantos tutoriales, y acabremos haciendo un sniffer.

Primero de todo decir que para todo esto estoy usando la libreria:
JPCAP -------> http://netresearch.ics.uci.edu/kfujii/jpcap/doc/download.html

Bien cabe comentar tambien que para ejecutar los ejemplos de los tutos, hace falta hacerlo bajo ROOT, asi que si no funciona, una psoible causa es esa.

Bien en el primer tutorial vamos a crear una mini-aplicacion tipo iwconfig-ifconfig que nos enumere todas las interfaces conectadas al equipo, bien empecemos:

Primero de todo hay que crear la lista de dispositivos, encapsulando la clase NetworkInterface a modo de array o matriz (para luego leer los interfaces usando un indice sencillo):

Código
NetworkInterface[] devices = JpcapCaptor.getDeviceList();

Le asignamos a la matriz todos los dispositivos mediante el metodo getDEviceList() de la clase JpcapCaptor.

Una vez hecho estoy, vamos a recorrer el array con un bucle logico usando como limitador el length (longitud) del array:

Código
for (int i = 0; i < devices.length; i++)

Muy sencillo, y ahora una vez estamos recorriendo vamos a mostrar informacion de los dispositivos, usando los metodos NetworkInterface:

Código
//Metodo name para sacar el nombre la interface
System.out.println("Nombre de interface: "+devices[i].name + "\n======================================\n" + devices[i].description);
 
//Metodo datalink_name para sacar el nombre de este
System.out.println("Nombre del datalink: "+devices[i].datalink_name + "\n==========================================\n" + devices[i].datalink_description+".\n");
 
//Esta claro no? xD
System.out.print("Direción MAC: ");
 for (byte b : devices[i].mac_address)
   System.out.print(Integer.toHexString(b&0xff) + ":");
 

Bien con etso ultimo hemos visto de manera completa, como sacar información de todos los dispositivos de red que haya conectados al equipo, vamos a profundizarlo un poquito mas:

Código
 for (NetworkInterfaceAddress a : devices[i].addresses)
   System.out.println(" address:"+a.address + " " + a.subnet + " "+ a.broadcast);
 
Con eso, como es evidente, sacaremos la direcion de red, ip, mascara de red y demás.

Mmm esto esta muy bien, pero... yo quiero jugar con la red diran otros, pues os diré que esto lo reservo para el siguiente tuto, pero os pondre un pequeño adelanto para que vallais jugando y probando cosas si, quereis claro...

Vamos a leer 10 paquetes de red en un puerto determinado y una interface concreta:

Código
JpcapCaptor captor=JpcapCaptor.openDevice(device[indice], 65535, false, 1);
 
for(int i=0;i<10;i++){
 //Capturamos un paquete y lo muestreamos
 System.out.println(captor.getPacket());
}
 
captor.close();
 
Como veis, el bucle se para en el decimo loop, y como leemos un paquete por loop, solo leemos 10 paquetes,y lo hacemos sobre la interface (hay que marcara que indice de interface con el int indice que correpsonde al indice del array).
En el puerto 65535, aqui escojemos que puerto queremos sniffar, leer, o escribir en un futuro no muy lejano paquetes.
El tercer parametro no es relevante ahora, pero ma starde lo explicaré.
El cuarto parametro es el que nos indica cuantos paquetes por cada llamada a getPacket() leemos, si ponemos envezde uno, 20, leeremos 20 paquetes por cada llamada a getPacket(), y por tanto 20 paquetes por loop, lo que viene a ser 10*20 = 200 paquetes.

Bueno, ahora os dejo un ejemplo para escritura de paquetes:

Código
JpcapSender sender=JpcapSender.openDevice(devices[index]);
 
 
TCPPacket p=new TCPPacket(12,34,56,78,false,false,false,false,true,true,true,true,10,10);
 
p.setIPv4Parameter(0,false,false,false,0,false,false,false,0,1010101,100,IPPacket.IPPROTO_TCP,
 InetAddress.getByName("www.microsoft.com"),InetAddress.getByName("www.google.com"));
 
 
p.data=("data").getBytes();
 
 
EthernetPacket ether=new EthernetPacket();
 
ether.frametype=EthernetPacket.ETHERTYPE_IP;
 
ether.src_mac=new byte[]{(byte)0,(byte)1,(byte)2,(byte)3,(byte)4,(byte)5};
ether.dst_mac=new byte[]{(byte)0,(byte)6,(byte)7,(byte)8,(byte)9,(byte)10};
p.datalink=ether;
 
sender.sendPacket(p);
 
sender.close();
 

El codigo anterior, lo que hace es enviar un paquete en la interfaz de red (paquete de tipo TCP/IPv4/Ethernet), usando unos puertos determinados, entre dos hosts.

En el proximo tutorial aprenderemos a:
  • Envio y lectura de paquetes completo (en este casi solo he puesto code).
  • Escritura de los paquetes leidos en un fichero, asi como lectura de los paquetes:
              Ejemplo práctico de leer paquetes, guardarlos en un archivo y re-enviarlos.
  • Filtros de lectura de paquetes, para nuestro programa y tambien para wireshark y otros.
Y mucho mas!
Cuando acabe todo pondre el source de mi sniffer de red, en java bajo ide netbeans para que todos se beneficien y aprendan.

Un saludo y gracias por aguantarme xD (que leer esto no es moco de pavo)







En línea

Blitzkrieg'


Desconectado Desconectado

Mensajes: 546


print('Hi there')


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #1 en: 8 Enero 2010, 23:10 »

Buen tutorial, pero yo le agregaria una cosa.

¿Que ¿?=)(&%·"! es un Sniffer?


En línea



Debci
Moderador
***
Desconectado Desconectado

Mensajes: 1.945


Actualizate o muere!


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #2 en: 8 Enero 2010, 23:17 »

Buen tutorial, pero yo le agregaria una cosa.

¿Que ¿?=)(&%·"! es un Sniffer?
Sniffer: Olisqueador de red, capza de interceptar todo tipo de paquetes, con informacion comprometedora de la supuetsa victima.

Saludos
En línea

Leyer
Moderador
***
Desconectado Desconectado

Mensajes: 772


[]


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #3 en: 9 Enero 2010, 00:53 »

Buen tutorial, pero yo le agregaria una cosa.

¿Que ¿?=)(&%·"! es un Sniffer?
hajaja

Exelente habia leido sobre esto pero no lo use mucho :xD , tu tutorial se entiende bien y ya que lo entendi se me ocurre una que otra cosa  >:D interesante.

PD: Why not in eclipse? seria bueno :P

por cierto buen aporte :D

Saludos
En línea

AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #4 en: 9 Enero 2010, 06:32 »

Vaya que anteriormente hace uff, habia tratado de portar la libpcap a java con ayuda de el jni, pero me quede en menos de headers cuando me enface de hacerlo.

Lo bueno que ya alguien realizo la portacion de una libreria similar ¬¬ creo que es la misma, se ve bueno el tutorial, le hechare un ojo, abra que ver que tan portable es, ya ven que generalmente esta siempre una mas avanzada que las otras.

Saludos
En línea

Bien Super Divertido
@wifigdlmx
Debci
Moderador
***
Desconectado Desconectado

Mensajes: 1.945


Actualizate o muere!


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #5 en: 9 Enero 2010, 11:41 »

Buen tutorial, pero yo le agregaria una cosa.

¿Que ¿?=)(&%·"! es un Sniffer?
hajaja

Exelente habia leido sobre esto pero no lo use mucho :xD , tu tutorial se entiende bien y ya que lo entendi se me ocurre una que otra cosa  >:D interesante.

PD: Why not in eclipse? seria bueno :P

por cierto buen aporte :D

Saludos
Lo intentare en eclipse, pero solo me trajo problemas xD
Ssaludos

Citar
Vaya que anteriormente hace uff, habia tratado de portar la libpcap a java con ayuda de el jni, pero me quede en menos de headers cuando me enface de hacerlo.

Lo bueno que ya alguien realizo la portacion de una libreria similar ¬¬ creo que es la misma, se ve bueno el tutorial, le hechare un ojo, abra que ver que tan portable es, ya ven que generalmente esta siempre una mas avanzada que las otras.

Saludos
Hombre, siempre habra incompatibilidades, si no no te darian un installer xD
Se ponen los dos l classpath y ale xD

Saludos
« Última modificación: 9 Enero 2010, 12:20 por ..::| D3Bć1 |::. » En línea

Blitzkrieg'


Desconectado Desconectado

Mensajes: 546


print('Hi there')


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #6 en: 9 Enero 2010, 17:38 »

Buen tutorial, pero yo le agregaria una cosa.

¿Que ¿?=)(&%·"! es un Sniffer?
hajaja

Exelente habia leido sobre esto pero no lo use mucho :xD , tu tutorial se entiende bien y ya que lo entendi se me ocurre una que otra cosa  >:D interesante.

PD: Why not in eclipse? seria bueno :P

por cierto buen aporte :D

Saludos

¿Como así que en Eclipse?

Al fin y al cabo es Java, si te refieres a montarlo a Eclipse, ¿No se supone que si lo monta a Subversion también tendrías acceso al código desde Eclipse?
En línea



Debci
Moderador
***
Desconectado Desconectado

Mensajes: 1.945


Actualizate o muere!


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #7 en: 9 Enero 2010, 18:11 »

Buen tutorial, pero yo le agregaria una cosa.

¿Que ¿?=)(&%·"! es un Sniffer?
hajaja

Exelente habia leido sobre esto pero no lo use mucho :xD , tu tutorial se entiende bien y ya que lo entendi se me ocurre una que otra cosa  >:D interesante.

PD: Why not in eclipse? seria bueno :P

por cierto buen aporte :D

Saludos

¿Como así que en Eclipse?

Al fin y al cabo es Java, si te refieres a montarlo a Eclipse, ¿No se supone que si lo monta a Subversion también tendrías acceso al código desde Eclipse?
En teoria asi es, ahora voy a probar eclipse y si me gusta me quedo en eclipse.

Saludos
En línea

egyware


Desconectado Desconectado

Mensajes: 436


GameDeveloper


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #8 en: 9 Enero 2010, 21:53 »

Excelente tutorial
de hace tiempo que estaba buscando algo asi
MAS ARMAS °,..,°
off topic
aa cambie de fotos de avatar tal vez no te gusten
on topic
gracias men lo leere de inmediato
En línea

Debci
Moderador
***
Desconectado Desconectado

Mensajes: 1.945


Actualizate o muere!


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #9 en: 9 Enero 2010, 22:29 »

Excelente tutorial
de hace tiempo que estaba buscando algo asi
MAS ARMAS °,..,°
off topic
aa cambie de fotos de avatar tal vez no te gusten
on topic
gracias men lo leere de inmediato
Consideremoslo un vinculo entre programadores de troyanos en java.

Saludos
En línea

dayaroro

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #10 en: 15 Noviembre 2011, 16:19 »

Se hubiese ahorrado el tiempo en tipear si nos hubiese dado el link de la web:
http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/tutorial/index.html

Mejor espero el sniffer que haces, a ver como queda.
« Última modificación: 29 Noviembre 2011, 03:57 por dayaroro » En línea
DonVidela


Desconectado Desconectado

Mensajes: 1.617



Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #11 en: 15 Noviembre 2011, 16:34 »

Se fue a mis favoritos  ;-)
En línea

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery

http://pablovidela.wordpress.com
RyogiShiki


Desconectado Desconectado

Mensajes: 708


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #12 en: 16 Noviembre 2011, 16:21 »

Se hubiese ahorrado el tiempo en tipear si nos hubiese dado el link de la web:
http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/tutorial/index.html

Mejor espero el sniffer que haces, a ver como queda.

La idea de que esté en el Foro es porque aumenta el nivel de acceso a la información, Además del esfuerzo, y el desinteresado objetivo de compartir información valiosa con la comunidad. Siempre es preferible una explicación/tutorial en el foro que un enlace. se garantiza su disponibilidad (he intentado entrar al link que dejas y no lo he logrado)y accesibilidad, además que ante cualquier duda se puede preguntar aquí mismo estando casi seguro de recibir respuesta. eso de "Se hubiese ahorrado el tiempo en tipear" es un mero conformismo. Por eso creo que hablo por buena parte (si me permiten el atrevimiento) cuando agradezco por la información que Debci nos brinda y facilita;

Gracias, excelente tutorial. a jugar un rato entonces XD

Saludos   
En línea

Debci
Moderador
***
Desconectado Desconectado

Mensajes: 1.945


Actualizate o muere!


Ver Perfil WWW
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #13 en: 23 Noviembre 2011, 19:55 »

La idea de que esté en el Foro es porque aumenta el nivel de acceso a la información, Además del esfuerzo, y el desinteresado objetivo de compartir información valiosa con la comunidad. Siempre es preferible una explicación/tutorial en el foro que un enlace. se garantiza su disponibilidad (he intentado entrar al link que dejas y no lo he logrado)y accesibilidad, además que ante cualquier duda se puede preguntar aquí mismo estando casi seguro de recibir respuesta. eso de "Se hubiese ahorrado el tiempo en tipear" es un mero conformismo. Por eso creo que hablo por buena parte (si me permiten el atrevimiento) cuando agradezco por la información que Debci nos brinda y facilita;

Gracias, excelente tutorial. a jugar un rato entonces XD

Saludos   
Muchisimas gracias por tu apoyo, la ayuda de todos es posible gracias a que hay gente que lee, comenta y pregunta de todo.
Gracias de veras.

Sinceramente dayaroro, me parece penosa tu intervención y mas con unos sutiles fines, destructivos, pero esto es un foro, así que hay libertad, pero tambien normas y una moralidad respecto a alguien que se molesta en que gente como tu, pueda enterarse un poquito de estos temas.
Sin consideras que es lo mismo una traducción + interpretación + ejemplificación que un enlace en inglés, eres libre, lee pues, de allí, pero no infravalores el trabajo de otros, que con todo el respeto del mundo, te has dedicado a perjudicar en uno, de los dos mensajes/respuestas, que llevas en este foro.

Un saludo
En línea

Shamaroot

Desconectado Desconectado

Mensajes: 56


El conocimiento es libre.


Ver Perfil
Re: [Tutorial #1]Primer paso para crear un sniffer en java
« Respuesta #14 en: 23 Noviembre 2011, 22:33 »

Te las mansaste !!! Buen Tutorial.
Se íra a Favoritos y lo tomare cuando sepa algo de JAVA, espero no demorar mucho :P

Saludos !!
En línea

El conocimiento es libre.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines