• Publicidad

API de Shodan y JSON

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

API de Shodan y JSON

Notapor BigBear » 2014-10-25 10:30 @479

Hola. Tengo el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!usr/bin/perl
  2. #https://developer.shodan.io/api
  3. #http://www.eekboek.nl/dl/ppms/Crypt-SSLeay.ppd
  4. #http://www.bribes.org/perl/ppm/JSON.ppd
  5.  
  6. use LWP::UserAgent;
  7.  
  8. my $nave = LWP::UserAgent->new(ssl_opts => { verify_hostname => 1 });
  9. $nave->agent(
  10. "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12"
  11. );
  12. $nave->timeout(5);
  13.  
  14. my $api_key = "test";
  15.  
  16. my $code = toma("https://api.shodan.io/shodan/host/5.135.178.142?key=".$api_key);
  17. print $code;
  18.  
  19.  
  20. sub toma {
  21.     return $nave->get( $_[0] )->content;
  22. }
  23.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

El gran tema es cómo leer esto con json porque no encuentro información sobre cómo leer los datos que me devuelve que son algo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. {
  2.  "region_name": null,
  3.  "ip": "41.21.249.170",
  4.  "area_code": null,
  5.  "country_name": "South Africa", "hostnames": [],
  6.  "postal_code": null,
  7.  "dma_code": null,
  8.  "country_code": "ZA",
  9.  "data": [
  10.   {
  11.    "product": "Siemens HiPath 3000 telnetd",
  12.    "os": null,
  13.    "timestamp": "2014-01-12T18:25:41.370550",
  14.    "isp": "Vodacom",
  15.    "asn": "AS36994",
  16.    "banner": "\r************************\n\r*  HiPath 3000 Telnet  *\n\r*  ------------------  *\n\r*                      *\n\r*  Adjust the Telnet   *\n\r*  window to the       *\n\r*  visible frame       *\n\r*                      *\n\r************************\n\r",
  17.    "hostnames": [],
  18.    "devicetype": "firewall",
  19.    "location": {
  20.     "city": null,
  21.     "region_name": null,
  22.     "area_code": null,
  23.     "longitude": 24.0,
  24.     "country_code3": "ZAF",
  25.     "country_name": "South Africa",
  26.     "postal_code": null,
  27.     "dma_code": null,
  28.     "country_code": "ZA",
  29.     "latitude": -29.0
  30.    },
  31.    "ip": "41.21.249.170",
  32.    "domains": [],
  33.    "org": "Vodacom",
  34.    "port": 23,
  35.    "opts": {}
  36.   },
  37.   {
  38.    "os": null,
  39.    "timestamp": "2014-01-01T01:28:55.903352",
  40.    "isp": "Vodacom",
  41.    "asn": "AS36994",
  42.    "banner": "SNMP agent for HiPath 3000/5000 V5.x",
  43.    "hostnames": [],
  44.    "location": {
  45.     "city": null,
  46.     "region_name": null,
  47.     "area_code": null,
  48.     "longitude": 24.0,
  49.     "country_code3": "ZAF",
  50.     "country_name": "South Africa",
  51.     "postal_code": null,
  52.     "dma_code": null,
  53.     "country_code": "ZA",
  54.     "latitude": -29.0
  55.    },
  56.    "ip": "41.21.249.170",
  57.    "domains": [],
  58.    "org": "Vodacom",
  59.    "port": 161,
  60.    "opts": {}
  61.   }
  62.  ],
  63.  "city": null,
  64.  "longitude": 24.0,
  65.  "country_code3": "ZAF",
  66.  "latitude": -29.0,
  67.  "os": null,
  68.  "ports": [23, 161]
  69. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

¿ Alguien me puede ayudar ?
Última edición por explorer el 2014-10-25 12:18 @554, editado 1 vez en total
Razón: codigo => código; como => cómo; informacion => información; asi => así;
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: API de Shodan y JSON

Notapor explorer » 2014-10-25 12:21 @556

Pues... de varias formas... por ejemplo, con el módulo JSON. Ejemplo.

Deberías usar más el sistema de búsqueda de estos foros...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: API de Shodan y JSON

Notapor BigBear » 2014-10-25 12:58 @582

Acá lo resolví:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print $resultado->{'ip'}."\n";
  2. print $resultado->{'country_name'}."\n";
  3. print $resultado->{'country_code'}."\n";
  4.  
  5. my @encontrados = @{$resultado->{'data'}};
  6. foreach my $encontrado (@encontrados) {
  7. print $encontrado->{"timestamp"}."\n";
  8. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Cualquier cosa si se me complica en un futuro cercano, te pregunto :D
Última edición por explorer el 2014-10-25 13:40 @611, editado 1 vez en total
Razón: Aca => Acá; resolvi => resolví;
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: API de Shodan y JSON

Notapor BigBear » 2014-10-25 16:07 @713

Dure poco xD Mira este código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @hostnames = $resultado->{'hostnames'};
  2. foreach my $host(@hostnames) {
  3. print $host."\t";
  4. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Me devuelve :

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
ARRAY(0x28a21d4)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿ Qué está mal en el código ?
Última edición por explorer el 2014-10-25 21:04 @920, editado 1 vez en total
Razón: codigo => código; Que => Qué; esta => está
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: API de Shodan y JSON

Notapor explorer » 2014-10-25 21:06 @921

El código está bien: estás imprimiendo referencias a arrays. Si quieres acceder al array subyacente, debes desreferenciarlo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: API de Shodan y JSON

Notapor BigBear » 2014-10-25 21:36 @941

¿Y comó hago eso ? Estuve viendo en este foro sobre el tema y siempre lo hacen con módulos aparte. ¿No hay una forma sin módulos?
Última edición por explorer el 2014-10-25 22:54 @996, editado 1 vez en total
Razón: como => cómo; modulos => módulos;
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: API de Shodan y JSON

Notapor explorer » 2014-10-25 22:56 @997

Para desreferenciar no necesitas ningún módulo. Te vale con usar sintaxis Perl.

Si $aref contiene una referencia a un array, @{$aref} es el contenido de ese array.

Más información en tu propio ordenador en perldoc perlreftut, y en la Web.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: API de Shodan y JSON

Notapor BigBear » 2014-10-26 08:34 @398

Gracias por la ayuda, explorer. Ahí me salió:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @hostnames = @{$resultado->{'hostnames'}};
  2. foreach my $host(@hostnames) {
  3. print $host."\t";
  4. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Está bien aplicado, ¿ verdad ?
Última edición por explorer el 2014-10-26 09:08 @422, editado 2 veces en total
Razón: ahi => Ahí; salio => salió; Esta => Está; quitar espacioes extras; interrogantes;
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: API de Shodan y JSON

Notapor explorer » 2014-10-26 09:10 @423

Si sale el resultado, sí. Pero en el mensaje anterior lo que salía era que $host era la referencia, así que debería ser esa la variable a desreferenciar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados

cron