Luego de bloquear intentos de acceso a mi sitio Web, se me ocurrió tratar de determinar el país de origen de las direcciones IP de los atacantes.

Existen muchos sitios Web que dan esta información (geolocalización de una dirección IP) de forma gratuita, sin embargo necesitaba una alternativa desde línea de comandos, para poder luego automatizar la conversión de IP a país y sacar una estadística al respecto.



En más de una oportunidad (victorhckinthefreeworld, lamiradadelreplicante) había leído acerca de ipinfo.io. Un sitio Web que posee una API donde obtener información acerca de una dirección IP en formato JSON:

root@linuxito:~# curl ipinfo.io/62.199.19.23
{
  "ip": "62.199.19.23",
  "hostname": "0x3ec71317.kol.customer.dk.telia.net",
  "city": "Copenhagen",
  "region": "Capital Region",
  "country": "DK",
  "loc": "55.6759,12.5655",
  "org": "AS3308 Telia Company AB",
  "postal": "1051"
}

El problema con esta buena herramienta, es que la información acerca del país origen está en formato ISO 3166-1 alpha-2:

root@linuxito:~# curl ipinfo.io/62.199.19.23 2>/dev/null | grep '"country"' | cut -d'"' -f4
DK

Por ejemplo, el código de país de dos letras "DK" corresponde con Denmark (Dinamarca).

Por esta razón decidí implementar un pequeño script que, además de geolocalizar la dirección IP desde ipinfo.io, obtenga el nombre de país a partir del código de dos letras, a partir de una base de datos local (archivo de texto plano).

El script, que he decidido llamar "ip-country.sh", está publicado en GitHub.

Su funcionamiento es simple, sólo requiere una dirección IP como parámetro:

# ./ip-country.sh 62.199.19.23
Denmark
# ./ip-country.sh 77.173.101.13
Netherlands
# ./ip-country.sh 31.148.231.216
Spain
# ./ip-country.sh 8.8.8.8
United States

Además tiene un modo "verboso" donde muestra además la ciudad y el código de dos letras:

# ./ip-country.sh -v 62.199.19.23
IP: 62.199.19.23
City: Copenhagen
Country Code: DK
Country: Denmark

Buscando en Internet encontré también un pequeño programa que resuelve el mapeo de códigos de país, llamado countrycodes, aunque aún no lo he probado.


Tal vez pueda interesarte


Compartí este artículo