elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  IpToKml (Console Application Source)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: IpToKml (Console Application Source)  (Leído 8,475 veces)
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
IpToKml (Console Application Source)
« en: 26 Octubre 2012, 16:52 pm »

Buenas,

Hace algunos días y por cosas que no vienen al caso, se me dió por crear una pequeña tool (aplicación de consola) que se encarga de parsear N fuentes de datos, extraer IP's, geocalizarlas y volcarlas a un archivo KML (este tipo de archivos puede cargarse en Google Earth y Google Maps entre otros).

La idea de este post es justamente compartir la tool que he mencionado antes.

Comentarios generales:
  • Aplicación de consola (como ya he mencionado).
  • Utiliza la base de datos y las clases de Maxmind.
  • Utiliza commandline para el parseo de los parámetros de línea de comandos.
  • Extensible haciendo uso de MEF (Managed Extensibility Framework). Dado que la aplicación puede recibir datos de entrada de N fuentes, lo que hice fue crear un componente "parser". De este modo solo basta con crear un nuevo "parser" (dll) para que dinámicamente la aplicación los reconozca y pueda hacer uso de ellos (solamente deben de agregarse dentro de la carpeta "Extensions").

    En el source van 4 parsers básicos que he desarrollado:
    • Connections: identifica las conexiones actuales de la máquina, similar a netstat.
    • Pcap: extrae IPs de un archivo de captura de red pcap (de Wireshark por ejemplo).
    • PlainText: cualquier archivo que pueda ser reconocido como de texto.
    • Web: obtiene IPs desde una url especificada.

Ejemplo de uso:
Código
  1. C:\IpToKml\IpToKml\bin\Release>IpToKml.exe
  2.  
  3. Available Parsers:
  4.        + Connections
  5.        + Pcap
  6.        + PlainText
  7.        + Web
  8.  
  9. Usage:
  10.        IpToKml.exe ParserName --help
  11.  
  12. C:\IpToKml\IpToKml\bin\Release>IpToKml.exe web --help
  13.  
  14.  
  15.  u, url    Required. Url del sitio web.
  16.  help      Display this help screen.
  17.  
  18. C:\IpToKml\IpToKml\bin\Release>IpToKml.exe web -u "http://www.malwaredomainlist.com/mdl.php?search=&colsearch=All&quantity=All"
  19.  
  20. 21:44:39 Parsing Started
  21. 21:44:46 Parsing Completed
  22. 21:44:46 Finalizing
  23.        Available IP Addresses : 2103
  24.        Unavailable IP Addresses : 9
  25.        Total IP Addresses : 2112
  26. 21:44:47 Output File C:\Dropbox\WEB_251020124439.kml
  27.  
  28. C:\IpToKml\IpToKml\bin\Release>


Configuración:
Para poder utilizarlo correctamente hay que cambiar dos settings en el config de la aplicación (IpToKml.exe.config)
Código
  1. <?xml version="1.0"?>
  2. <configuration>
  3.  <appSettings>
  4.    <!--Ruta completa al archivo dat de la base de datos de IP-->
  5.    <add key="GeoIpDb" value="C:\GeoIpDb\GeoLiteCity.dat"/>
  6.    <!--Carpeta de salida para los KML generados-->
  7.    <add key="KmlFolder" value="C:\Dropbox\"/>
  8.  </appSettings>
  9. </configuration>

Descarga de código fuente: http://bit.ly/IpToKml (C# Visual Express 2010)

Cualquier consulta y/o comentario ya saben ;)

Saludos


« Última modificación: 26 Octubre 2012, 22:21 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
r32
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.299



Ver Perfil WWW
Re: IpToKml (Console Application Source)
« Respuesta #1 en: 26 Octubre 2012, 18:16 pm »

Se ve muy interesante aunque no manejo base de datos.
Por curiosidad si se quisiera saber si la conexión se establece a través de un proxy, ¿lo volcaría desde la base de datos o se crearía un nuevo parser para ésto?
No se como se hacen, me intriga aunque no sepa bien el manejo.
No lo he probado pero puede ser que ese dato te lo de el geolocalizador...

Saludos.


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: IpToKml (Console Application Source)
« Respuesta #2 en: 26 Octubre 2012, 18:26 pm »

Se ve muy interesante aunque no manejo base de datos.
En realidad la base de datos de Maxmind esta en binario para que ocupe muchísimo menos espacio. En la aplicación hay unas clases específicas proporcionadas por esa misma empresa que permite hacer la consulta (son las que tienen el Copyright).

Por curiosidad si se quisiera saber si la conexión se establece a través de un proxy, ¿lo volcaría desde la base de datos o se crearía un nuevo parser para ésto?
No he entendido :-\

Por ejemplo, en el ejemplo que he dado antes lo que se hace es extraer las IP que figuran en esta página http://www.malwaredomainlist.com/mdl.php?search=&colsearch=All&quantity=All (tercera columna), buscar las coordenadas en la base de datos, y generar un KML con puntos por cada IP, si se quisiera el parser podría incluir más data (se puede incluir en la descripción de cada punto), pero he dejado los parsers de modo muy básico.

Saludos
« Última modificación: 26 Octubre 2012, 18:29 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
r32
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.299



Ver Perfil WWW
Re: IpToKml (Console Application Source)
« Respuesta #3 en: 26 Octubre 2012, 19:45 pm »

Citar
si se quisiera el parser podría incluir más data (se puede incluir en la descripción de cada punto), pero he dejado los parsers de modo muy básico.

Más o menos a eso me refería, cuando extrae la IP se podría verificar si la conexión se hace a través de un proxy anónimo por ejemplo, entonces se engañaría la geolocalización supongo.
Quizás no sirva para nada, era sólo curiosidad, intentaré aprender más sobre éste tema.

Gracias, saludos.
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: IpToKml (Console Application Source)
« Respuesta #4 en: 26 Octubre 2012, 19:58 pm »

Si, se podría hacer eso si el parser lo implementara :)

Quizás no sirva para nada, era sólo curiosidad, intentaré aprender más sobre éste tema.

Quizás la propia utilidad no sirva para nada a nivel de funcionalidad y solo me sirva a mi, la idea de compartir el código es que quienes desarrollan y quieren profundizar algunos temas puedan ver el código como ejemplo, se puede decir que tiene de todo:

  • Herencia y Polimorfismo
  • Uso de settings
  • Plugins
  • Serialización
  • LINQ
  • Eventos y delegados
  • Etc...

Saludos
« Última modificación: 26 Octubre 2012, 22:22 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Keyen Night


Desconectado Desconectado

Mensajes: 496


Nothing


Ver Perfil
Re: IpToKml (Console Application Source)
« Respuesta #5 en: 26 Octubre 2012, 22:26 pm »

Cuando un proyecto esta hecho con las mejores practicas y formas de hacer la cosas, es bueno leerlo solo por el hecho de que contiene mucha información de pequeños detalles que al final puede ayudar en cualquier proyecto sin importar para lo que funcione. Normalmente este tipo de proyectos que solo uno hace para compartir, son de ejemplo debido al detalle que se le ha puesto al código, sino entonces lo hubiese lanzado como una aplicación. Excelente ;)
En línea

La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: IpToKml (Console Application Source)
« Respuesta #6 en: 26 Octubre 2012, 22:35 pm »

Es la idea :D, hay un solo detalle que tal vez me gustaría haber cuidado mejor, el manejo de excepciones :silbar:, hubiese sido agregar un try/catch en el Program.cs a la hora de invocar los "parsers" :P

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
r32
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.299



Ver Perfil WWW
Re: IpToKml (Console Application Source)
« Respuesta #7 en: 27 Octubre 2012, 09:19 am »

Novlucker no me refería a que el código no sirviese  :huh:, me refería a lo que yo te comentaba del proxy, que tampoco pueda servir de mucho ese dato, me entendiste mal.
Por mi el codigo está muy bien, ya te lo comenté, lo descargué y miré los parsers, luego me surgió la duda de lo del proxy.

Siento el mal entendido, saludos.
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: IpToKml (Console Application Source)
« Respuesta #8 en: 28 Octubre 2012, 02:31 am »

Yo siento el mal entendido, en realidad entendí perfectamente lo que querías decir, pero en realidad yo quise llevar eso un poco más allá y por eso dije que "quizás la propia utilidad [...]", debí de agregar un "incluso" :P

Si llegaste a ver algo del código, se aceptan comentarios o consultas si las hubiese :P


Saludos

En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
r32
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.299



Ver Perfil WWW
Re: IpToKml (Console Application Source)
« Respuesta #9 en: 31 Octubre 2012, 11:44 am »

Si que pude ver el código, te comento, al generar lo compila todo correctamente sin errores pero me salían 4 adverténcias referentes a:

CS0169: El campo 'LookupService.licensekey' no se usa nunca
CS0414: El campo 'LookupService.dnsService' está asignado pero el valor no se usa nunca
CS0414: El campo 'LookupService.STATE_BEGIN' está asignado pero el valor no se usa nunca
CS0649: El campo 'IpToKml.Program.parsers' nunca se asigna y siempre tendrá el valor predeterminado null

Los tres primeros refieren a LookupService.cs, el último a Program.cs
Los comentarios que dejaste en algunos códigos ayudan a orientarse un poco a los que no sabemos, se agradece eso.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines