Meritools

FloodersInspector

Seguramente estos últimos días habréis visto algunos post donde algunos foreros han puesto un resumen de todos los mensajes acumulados en un hilo.

Todo surgió de este hilo.

La versión actual de esta inutilidad es la 0.0.3, que es casi un 50% más rápida que la versión anterior.

En la imagen anterior se puede ver que se ha tardado poco más de 22 minutos en analizar las casi 3000 páginas del hilo de los loles. La versión anterior tardaba casi 45 minutos.

Además, a petición popular ( sois unos cansinos con los MPs macho Very Happy ) he incluido en esta nueva versión la posibilidad de escoger la página de inicio, siendo por defecto, la página inicial la número 1, con lo que de esta forma se analiza todo el hilo.

El funcionamiento es de lo más simple. Sólo necesitáis indicar el número del hilo (Thread Topic) que se quiere analizar.

Cada hilo tiene un número único. Por ejemplo, cuando entráis en el chat oficial del O.T. la dirección será esta:

El número del hilo es el valor que viene justo despues de la t=

En este caso el valor sería 1435359

Introducís dicho número, especificais si lo quereís desde que página se empezará el analisis y finalmente pulsaremos en el botón Go

El programa tardará más o menos en función de las páginas que tenga que analizar, así que paciencia si lo poneis en el P.O. del Madrid, del Barça o cualquier otro hilo que tenga mas de 10.000 páginas

(creo que rivera18 o Sanheee saben de lo que hablo Very Happy

Una vez finalizado el análisis del hilo se creará un fichero de texto en la misma carpeta donde se haya ejecutado el programa

El nombre del fichero resultante será:

meriflooders_Tnnnnnnn.txt

donde nnnnnnn representa el Thread Topic que se ha analizado

El resultado sería algo como esto:

 

Descarga:

Descargar FloodersInspector 0.0.0.3 (obsoleto. M3)
(37 KB. Requiere .NET Framework 3.5) 

 

Nota: FloodersInspector solo funciona con Meristation v3. El día que llegue M4 (creo que primero tendremos una nueva glaciación….es coña mods! Very Happy ) este programa será completamente inútil. 

 

Actualización 23/06/2012

(Compatibilidad con M4)

Descargar FloodersInspector 0.0.0.5
(37 KB. Requiere .NET Framework 3.5)  (versión 64 bits)

La versión 0.0.0.5 a fecha de hoy es compatible con M4

 

(27/06/2012)

Descargar FloodersInspector 0.0.0.5
(37 KB. Requiere .NET Framework 3.5)  (versión 32 bits)

 

(28/07/2012)

Descargar FloodersInspector 0.0.0.6
(37 KB. Requiere .NET Framework 3.5)  (versión 32 bits) 

(Gracias por el aviso frank747_fantasy )

 

Actualización 09/06/2013  

(09/06/2013)

Descargar FloodersInspector 0.0.0.7
(37 KB. Requiere .NET Framework 3.5)  (versión 32 bits) 

Notas sobre la versión 0.0.0.7:

Debido al cambio en las direcciones URL de los post (ver post oficial en el foro de CyS aquí) se deberá tener en cuenta lo siguiente:

En la caja de texto donde poner el "Thread Topic" se tendrá que seguir poniendo un número.

Con el cambio de formato de la URL ese numero será siempre el valor que se especifica en:

http://zonaforo.meristation.com/titulo-del-hilo-tXXXXXXX.html

Así por ejemplo, para mirar el post Oficial de Real Madrid el Thread Topic será el: 392298

Para evaluar el post Oficial del F.C. Barcelona el Thread Topic será el: 707591

Para el resto de hilos se procedrá de forma similar. Como véis esta será la unica "precaución" que hay que tomar para que la versión 0.0.0.7 funcione con las nuevas URL de zonaforo. 

 

Actualización 01/09/2013  

(09/06/2013)

Descargar FloodersInspector 0.0.0.8

(37 KB. Requiere .NET Framework 3.5)  (versión 32 bits)

Corregido error en la evaluación de los títulos de los post. Thx maestrillo por avisar del bug.  

 


Disponible FloodersInspector en Google Code:

Repositorio:  https://code.google.com/p/meri-floodersinspector/
Control de versión: Subversion

Más información en Tutorial 54.

 

 

Meriloles

Aprovecho para actualizar esta entrada con el Meriloles

En este hilo hay mas información al respecto, así que no me extenderé más.

 

Pues ale, propicios días. Dudas, comentarios, lo que sea, en el botón de abajo

 

Saludos.
mov eax,ollydbg; Int 13h

 

 

.NET Tutorial 52. Geolocalización por dirección IP

Alguno de vosotros me ha preguntado como desde el generador de firmas se obtenía la procedencia de una visita:

Como es de suponer la "geolocalización" de la visita se realiza mediante la dirección IP. En el caso anterior, la firma fué generada desde una visita procedente de Cagua, Venezuela

Para obtener datos de la localización uso una API que proporciona esta página: http://smart-ip.net/geoip

Esta página puede proporcionar información de la geolocalización ya bien sea un fichero XML o JSON
Se puede consultar documentación sobre esta API aquí: http://smart-ip.net/geoip-api

Como .NET dispone de una clase para manejar estructuras XML de forma muy sencilla, usaremos la opción XML en lugar de la opción JSON.

Según la documentación, se devuelve un fichero XML si se pasa la siguiente URL:

smart-ip.net/geoip-xml/direccion_ip/auto?lang=en

Tal y como se puede ver en esta captura de Firefox:


(Haz click para agrandar)

Sin embargo, eso no "parece" un fichero XML. Lo que ocurre es que Firefox interpreta el código y lo muestra como la imagen anterior. Si vemos el código fuente de la página (botón derecho sobre la página y pulsar en Ver código fuente) observamos esto:


(Haz click para agrandar)

Aquí si que vemos que efectivamente, si que se trata de un fichero XML

La lectura de ficheros XML desde .NET es tremendamente sencilla. Tendremos que agregar el siguiente NameSpace:

Imports System.Xml

La lectura se realiza más o menos así:

Dim reader As XmlTextReader = New XmlTextReader("http://smart-ip.net/geoip-xml/" & DireccionIP & "/auto?lang=en")
Dim type As XmlNodeType

reader.WhitespaceHandling = WhitespaceHandling.Significant

While reader.Read
type = reader.NodeType
  If type = XmlNodeType.Element Then

    Select Case reader.Name
      Case "countryName"
        reader.Read()
        mcountryName = reader.Value
      Case "countryCode"
        reader.Read()
        mcountryCode = reader.Value
        …
        …
    End Select

  End If
End While

En el código veréis que todo esto lo realiza la clase IPInfo, donde en el constructor de la clase se le pasa la dirección IP que se quiere examinar.
La clase dispone de unas propiedades de solo lectura que indican el país, el código del país estandar en dos letras, el nombre de la ciudad, la region, la latitud y la longitud

De tal forma que la llamada a dicha clase sería algo como esto:

Try
  Dim myIPinfo As New IPinfo("18.122.119.183")

  Debug.Print(myIPInfo.CountryName)
  Debug.Print(myIPInfo.CountryCode)
  Debug.Print(myIPInfo.CountryRegion)
  Debug.Print(myIPInfo.City)
  Debug.Print(myIPInfo.Latitude)
  Debug.Print(myIPInfo.Longitude)
Catch ex As Exception
  MessageBox.Show(ex.Message, "Error")
End Try

Como veís es realmente simple de usar. El resultado sería algo como esto:

Nota: el "icono" de la bandera se consigue buscando la bandera con el nombre myIPInfo.CountryCode  y con extensión gif dentro de la carpeta Flags
Así por ejemplo si el myIPInfo.CountryCode es igual a "us" se busca este archivo : Flagsus.gif
Fácil, rápido y para todos los públicos 🙂

 

Bonus track: Liándola parda o como mostrar la localización en un mapa real

Aprovechando que la API de smart-ip nos proporcina la latitud y la longitud…que coño, vamos a mostrar en un mapa la ubicación de dichas coordenadas 🙂

Para ello vamos a utilizar una técnica que ya vimos en el Tutorial 12 En el Tutorial 12 vimos como usar un servicio web para realizar una aplicación que usaba el traductor de Bing para realizar una aplicación muy simple que permitía traducir un texto a varios idiomas.

Pues bien, aquí se realizará algo parecido, por no decir prácticamente lo mismo. Se usará un servicio de Bing Maps para realizar esta representación en un mapa.

Lo primero que hay que realizar es obtener una "clave" para poder usar el servicio de Bing Maps desde nuestro código.

Para ello deberémos ir a https://www.bingmapsportal.com  
Al logear con nuestro Live ID accederemos a esta pantalla:


(Haz click para agrandar)

Para crear nuevas "keys" usaremos la opción del menú de la izquierda

Una vez que tengamos nuestra key procederemos de la siguiente forma:

En nuestro proyecto agregaremos una referencia de servicio: 


(Haz click para agrandar)

Existen 4 referencias para trabajar con Bing Maps, tal y como se comenta en http://msdn.microsoft.com/en-us/library/dd221354.aspx

En este ejemplo solo se usará la referencia del servicio "ImageryService" cuya dirección tal y como indica la página anterior es:

http://dev.virtualearth.net/webservices/v1/imageryservice/imageryservice.svc?wsdl

Pues bien, pondremos dicha dirección en "Agregar referencia de servicio" y pulsaremos el botón Ir:


(Haz click para agrandar)

Una vez cargada la referencia veremos los métodos disponibles


(Haz click para agrandar)

En mi caso he cambiado el espacio de nombres a BingMapsImageService tal y como puede verse en la imagen

Una vez acepta la referencia observamos esto en nuestro explorador de soluciones:

Pues bien, ahora solo nos queda hacer esto en nuestro código

Imports Tutorial52.BingMapsImageryService

De este modo  tendremos acceso a los datos del servicio de Bing Maps en nuestro código

Sólo dos apuntes finales:

1) El ejemplo que hay en http://msdn.microsoft.com/en-us/library/dd221354.aspx está basado para una aplicación WPF. Observaréis que este tutorial sigue siendo una aplicación de Windows Forms, en lugar de WPF. 

Se cambiado el método BitmatImage del ejemplo por un MemoryStream tal y como veréis en el código

2) En el mismo ejemplo de la MSDN esto no es correcto (sí, aunque parezca mentira los tios de la MSDN tambien la cagan):

Dim imageryService As New ImageryServiceClient()

debería ser:

Dim imageryService As New ImageryServiceClient("BasicHttpBinding_IImageryService")

3) De nuevo en el ejemplo de la MSDN, la conversión de la latitud y longitud en el método GetImagery no es correcto, aunque esto creo que tiene que ver con la configuración regional del equipo.
En mi caso, hay que pasar como caracter decimal la coma, no el punto, ya que este valor:
40.452 la rutina GetImagery la transforma a 40452, que es un valor incorrecto para la latitud o longitud

Bueno, despues de estas correcciones en el ejemplo de la MSDN obtenemos algo tal que así:   


(Haz click para agrandar)

Se puede cambiar el nivel de Zoom y el tipo de mapa:
(los tipos de mapa del estilo "birdeye" no me han funcionado)


(Haz click para agrandar)

 

Tags:geolocation, geolocalización, ip location, ip geolocation, get ip address location, bing maps, gps

 

Saludos.
mov eax,ollydbg; Int 13h    

 

Descargar proyecto .NET Tutorial 52
(170 KB. Visual Studio 2008 Professional)
(requiere Bing Maps key)