Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Debci en 8 Enero 2010, 23:07 pm



Título: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Debci en 8 Enero 2010, 23:07 pm
(http://www.definicionabc.com/wp-content/uploads/network.jpg)
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
  1. 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
  1. 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
  1. //Metodo name para sacar el nombre la interface
  2. System.out.println("Nombre de interface: "+devices[i].name + "\n======================================\n" + devices[i].description);
  3.  
  4. //Metodo datalink_name para sacar el nombre de este
  5. System.out.println("Nombre del datalink: "+devices[i].datalink_name + "\n==========================================\n" + devices[i].datalink_description+".\n");
  6.  
  7. //Esta claro no? xD
  8. System.out.print("Direción MAC: ");
  9.  for (byte b : devices[i].mac_address)
  10.    System.out.print(Integer.toHexString(b&0xff) + ":");
  11.  

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
  1. for (NetworkInterfaceAddress a : devices[i].addresses)
  2.    System.out.println(" address:"+a.address + " " + a.subnet + " "+ a.broadcast);
  3.  
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
  1. JpcapCaptor captor=JpcapCaptor.openDevice(device[indice], 65535, false, 1);
  2.  
  3. for(int i=0;i<10;i++){
  4.  //Capturamos un paquete y lo muestreamos
  5.  System.out.println(captor.getPacket());
  6. }
  7.  
  8. captor.close();
  9.  
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
  1. JpcapSender sender=JpcapSender.openDevice(devices[index]);
  2.  
  3.  
  4. TCPPacket p=new TCPPacket(12,34,56,78,false,false,false,false,true,true,true,true,10,10);
  5.  
  6. p.setIPv4Parameter(0,false,false,false,0,false,false,false,0,1010101,100,IPPacket.IPPROTO_TCP,
  7.  InetAddress.getByName("www.microsoft.com"),InetAddress.getByName("www.google.com"));
  8.  
  9.  
  10. p.data=("data").getBytes();
  11.  
  12.  
  13. EthernetPacket ether=new EthernetPacket();
  14.  
  15. ether.frametype=EthernetPacket.ETHERTYPE_IP;
  16.  
  17. ether.src_mac=new byte[]{(byte)0,(byte)1,(byte)2,(byte)3,(byte)4,(byte)5};
  18. ether.dst_mac=new byte[]{(byte)0,(byte)6,(byte)7,(byte)8,(byte)9,(byte)10};
  19. p.datalink=ether;
  20.  
  21. sender.sendPacket(p);
  22.  
  23. sender.close();
  24.  

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)







Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Blitzkrieg' en 8 Enero 2010, 23:10 pm
Buen tutorial, pero yo le agregaria una cosa.

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


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Debci en 8 Enero 2010, 23:17 pm
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


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Leyer en 9 Enero 2010, 00:53 am
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


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: AlbertoBSD en 9 Enero 2010, 06:32 am
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


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Debci en 9 Enero 2010, 11:41 am
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


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Blitzkrieg' en 9 Enero 2010, 17:38 pm
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?


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Debci en 9 Enero 2010, 18:11 pm
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


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: egyware en 9 Enero 2010, 21:53 pm
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


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Debci en 9 Enero 2010, 22:29 pm
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


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: dayaroro en 15 Noviembre 2011, 16:19 pm
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.


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Pablo Videla en 15 Noviembre 2011, 16:34 pm
Se fue a mis favoritos  ;-)


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: RyogiShiki en 16 Noviembre 2011, 16:21 pm
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   


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Debci en 23 Noviembre 2011, 19:55 pm
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


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Shamaroot en 23 Noviembre 2011, 22:33 pm
Te las mansaste !!! Buen Tutorial.
Se íra a Favoritos y lo tomare cuando sepa algo de JAVA, espero no demorar mucho :P

Saludos !!


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Debci en 28 Noviembre 2011, 16:05 pm
Te recomiendo que te leas las normas, por lo del doble post sobretodo, aunque un error lo tiene cualquiera (lo digo por el doble click).
Te recuerdo además que estás desvirtuando el tema, por lo que deberías llevarlo al foro pertinente.
A que fin viene tu mensaje? A desvincular el propósito general del mensaje y del foro, atraer atención, o que simplemente te aburrías y querías molestar un poco? Investiga tu, estaremos encantados de analizar y promocionar tu trabajo, que se dice rápido.
Si nuestra mentalidad es mala... quizás deberías darte una vuelta por casa antes de querer arreglar el mundo, compañero.
Hablas de respeto e incultura, sin que nadie te haya insultado, y en respuesta esto último, te diré que es recomendable que acabes de leer lo que te escriben, porque nunca, llegaremos a la cultura si no vemos el final...
En fin que decir...

Saludos


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: dayaroro en 28 Noviembre 2011, 17:32 pm
A BORRAR.... RyogiShiki esta muy sensible con este mensaje.


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: RyogiShiki en 28 Noviembre 2011, 17:42 pm
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.
Bueno es lamentable que vean mi opinion de esa forma, ya que demuestran el poco nivel de investigacion que tienen, el facilitismo es destructivo en nosotros mismos, yo no creo que el creador del API cuando hizo su proyecto de tesis de doctorado lo haya encontrado en un foro, quizas por eso algunos paises esten mas atrasados en educacion y tecnologia que otros. Por cierto el link nuevamente esta disponible.

Por cierto, si lees la web del link que te di y buscas en la pagina principal, está el mismo ejemplo y también esta explicado...

Suerte...


Contradicciones!! Contradicciones everywhere.


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: RyogiShiki en 28 Noviembre 2011, 17:53 pm
Mira, pides que te eliminen los mensajes, pero sigues conectado solo para ver que te contesta, esto es lo último que escribo en este post acerca de este tema, no me voy a poner a pelear por estupideces de alguien con apenas 6 mensajes (osea que apenas llega al foro) y arma una tormenta en un vaso de agua por un comentario que no tenia más que buenas intenciones, así que por favor ve por la puerta que llegaste, por la de atrás, en este punto lo único que haces es trolling, como dije esto es lo último que escribo aquí, y listo en definitiva o te borran os msgs o bloquean el hilo, y listo tanta palabrería para nada....

Adios.


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: 1mpuls0 en 28 Noviembre 2011, 18:24 pm
dayaroro
Gracias por tu "aporte", no creo que haga falta que insultes a otros usuarios.

Debci, Leyer en donde está su parte como mod, creo que desde el primer desvío del tema debieron bloquear el tema o eliminar el comentario. Bueno no soy quien para decirte cual es su labor, solo es un comentario.

Saludos.


Título: Re: [Tutorial #1]Primer paso para crear un sniffer en java
Publicado por: Debci en 8 Diciembre 2011, 10:21 am
dayaroro
Gracias por tu "aporte", no creo que haga falta que insultes a otros usuarios.

Debci, Leyer en donde está su parte como mod, creo que desde el primer desvío del tema debieron bloquear el tema o eliminar el comentario. Bueno no soy quien para decirte cual es su labor, solo es un comentario.

Saludos.
Totalmente de acuerdo, ha sido un desliz por mi parte.

Saludos