• Publicidad

Ayuda con JSON

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

Ayuda con JSON

Notapor BigBear » 2013-05-15 15:15 @677

No conozco mucho sobre este módulo para extraer sus datos y verlos el código que tengo es así :

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!usr/bin/perl
  2. #ppm install http://www.bribes.org/perl/ppm/JSON.ppd
  3. #ppm install http://trouchelle.com/ppm/Digest-MD5-File.ppd
  4. #ppm install http://www.bribes.org/perl/ppm/Crypt-SSLeay.ppd
  5.  
  6. use JSON;
  7. use Digest::MD5::File qw(file_md5_hex);
  8.  
  9. use LWP::UserAgent;
  10.  
  11. my $nave = LWP::UserAgent->new;
  12. $nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
  13. $nave->timeout(5);
  14.  
  15. my $api_key = "mikey"; #Your API Key
  16.  
  17. my $md5 = file_md5_hex("api.txt");
  18.  
  19. my $code = tomar("https://www.virustotal.com/vtapi/v2/file/report",{"resource"=>"73f87db9a810e2725ff01fe2ad9759d4","apikey"=>$api_key});
  20.  
  21. my $dividir = decode_json $code;
  22.  
  23. print $dividir->{scans};
  24.  
  25. sub tomar {
  26. my ( $web, $var ) = @_;
  27. return $nave->post( $web, [ %{$var} ] )->content;
  28. }
  29.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


La idea es dividir como este código en Python :

Sintáxis: [ Descargar ] [ Ocultar ]
Using python Syntax Highlighting
  1. self.report = json.loads(re_json)
  2. re_scan = self.report["scans"]
  3. for self.av in re_scan:
  4. self.detections = re_scan[self.av]["detected"]
  5. self.results = re_scan[self.av]["result"]
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


¿ Cómo podría hacer lo mismo en Perl ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Ayuda con JSON

Notapor explorer » 2013-05-15 15:35 @691

Con Data::Dumper ves el contenido de $dividir, y entonces sabes cómo acceder a los contenidos.

Lo más seguro es que tengas que recorrer las claves de un hash.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda con JSON

Notapor BigBear » 2013-05-15 16:05 @712

Lo intenté con este código :

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!usr/bin/perl
  2. #ppm install http://www.bribes.org/perl/ppm/JSON.ppd
  3. #ppm install http://trouchelle.com/ppm/Digest-MD5-File.ppd
  4. #ppm install http://www.bribes.org/perl/ppm/Crypt-SSLeay.ppd
  5.  
  6. use JSON;
  7. use Digest::MD5::File qw(file_md5_hex);
  8.  
  9. use LWP::UserAgent;
  10. use Data::Dumper;
  11.  
  12. my $nave = LWP::UserAgent->new;
  13. $nave->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.1.12) Gecko/20080201Firefox/2.0.0.12");
  14. $nave->timeout(5);
  15.  
  16. my $api_key = "key"; #Your API Key
  17.  
  18. my $md5 = file_md5_hex("api.txt");
  19.  
  20. my $code = tomar("https://www.virustotal.com/vtapi/v2/file/report",{"resource"=>"73f87db9a810e2725ff01fe2ad9759d4","apikey"=>$api_key});
  21.  
  22. my $dividir = decode_json $code;
  23. my %keys = $dividir->{scans};
  24.  
  25. #print Dumper $dividir->{scans};
  26.  
  27. for my $data (keys %keys) {
  28. print Dumper $keys{$data}{'AntiVir'}{'version'};
  29. }
  30.  
  31.  
  32. sub tomar {
  33. my ( $web, $var ) = @_;
  34. return $nave->post( $web, [ %{$var} ] )->content;
  35. }
  36.  
  37. #The End ?
  38.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y me devuelve esto :

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$VAR1 = {
          'AntiVir' => {
                         'version' => '-',
                         'update' => '-',
                         'result' => 'TR/Dropper.Gen',
                         'detected' => bless( do{\(my $o = 1)}, 'JSON::backportP
P::Boolean' )
                       },
          'Avast' => {
                       'version' => '-',
                       'update' => '-',
                       'result' => undef,
                       'detected' => bless( do{\(my $o = 0)}, 'JSON::backportPP:
:Boolean' )
                     },
          'Ikarus' => {
                        'version' => '-',
                        'update' => '-',
                        'result' => undef,
                        'detected' => $VAR1->{'Avast'}{'detected'}
                      },
          'Webwasher-Gateway' => {
                                   'version' => '-',
                                   'update' => '-',
                                   'result' => 'Trojan.Dropper.Gen',
                                   'detected' => $VAR1->{'AntiVir'}{'detected'}
                                 },
          'AhnLab-V3' => {
                           'version' => '-',
                           'update' => '-',
                           'result' => undef,
                           'detected' => $VAR1->{'Avast'}{'detected'}
                         },
          'Panda' => {
                       'version' => '-',
                       'update' => '-',
                       'result' => undef,
                       'detected' => $VAR1->{'Avast'}{'detected'}
                     },
          'Rising' => {
                        'version' => '-',
                        'update' => '-',
                        'result' => undef,
                        'detected' => $VAR1->{'Avast'}{'detected'}
                      },
          'Ewido' => {
                       'version' => '-',
                       'update' => '-',
                       'result' => undef,
                       'detected' => $VAR1->{'Avast'}{'detected'}
                     },
          'VirusBuster' => {
                             'version' => '-',
                             'update' => '-',
                             'result' => undef,
                             'detected' => $VAR1->{'Avast'}{'detected'}
                           },
          'NOD32v2' => {
                         'version' => '-',
                         'update' => '-',
                         'result' => undef,
                         'detected' => $VAR1->{'Avast'}{'detected'}
                       },
          'Authentium' => {
                            'version' => '-',
                            'update' => '-',
                            'result' => undef,
                            'detected' => $VAR1->{'Avast'}{'detected'}
                          },
          'VBA32' => {
                       'version' => '-',
                       'update' => '-',
                       'result' => undef,
                       'detected' => $VAR1->{'Avast'}{'detected'}
                     },
          'eTrust-Vet' => {
                            'version' => '-',
                            'update' => '-',
                            'result' => undef,
                            'detected' => $VAR1->{'Avast'}{'detected'}
                          },
          'FileAdvisor' => {
                             'version' => '-',
                             'update' => '-',
                             'result' => undef,
                             'detected' => $VAR1->{'Avast'}{'detected'}
                           },
          'CAT-QuickHeal' => {
                               'version' => '-',
                               'update' => '-',
                               'result' => '(Suspicious) - DNAScan',
                               'detected' => $VAR1->{'AntiVir'}{'detected'}
                             },
          'McAfeeBeta' => {
                            'version' => '-',
                            'update' => '-',
                            'result' => undef,
                            'detected' => $VAR1->{'Avast'}{'detected'}
                          },
          'DrWeb' => {
                       'version' => '-',
                       'update' => '-',
                       'result' => undef,
                       'detected' => $VAR1->{'Avast'}{'detected'}
                     },
          'PandaBeta' => {
                           'version' => '-',
                           'update' => '-',
                           'result' => undef,
                           'detected' => $VAR1->{'Avast'}{'detected'}
                         },
          'Kaspersky' => {
                           'version' => '-',
                           'update' => '-',
                           'result' => undef,
                           'detected' => $VAR1->{'Avast'}{'detected'}
                         },
          'Microsoft' => {
                           'version' => '-',
                           'update' => '-',
                           'result' => undef,
                           'detected' => $VAR1->{'Avast'}{'detected'}
                         },
          'Fortinet' => {
                          'version' => '-',
                          'update' => '-',
                          'result' => undef,
                          'detected' => $VAR1->{'Avast'}{'detected'}
                        },
          'Sunbelt' => {
                         'version' => '-',
                         'update' => '-',
                         'result' => undef,
                         'detected' => $VAR1->{'Avast'}{'detected'}
                       },
          'SAVMail' => {
                         'version' => '-',
                         'update' => '-',
                         'result' => undef,
                         'detected' => $VAR1->{'Avast'}{'detected'}
                       },
          'McAfee' => {
                        'version' => '-',
                        'update' => '-',
                        'result' => 'Spam-SamBurg',
                        'detected' => $VAR1->{'AntiVir'}{'detected'}
                      },
          'Prevx1' => {
                        'version' => '-',
                        'update' => '-',
                        'result' => undef,
                        'detected' => $VAR1->{'Avast'}{'detected'}
                      },
          'FortinetBeta' => {
                              'version' => '-',
                              'update' => '-',
                              'result' => undef,
                              'detected' => $VAR1->{'Avast'}{'detected'}
                            },
          'ClamAV' => {
                        'version' => '-',
                        'update' => '-',
                        'result' => undef,
                        'detected' => $VAR1->{'Avast'}{'detected'}
                      },
          'F-Secure' => {
                          'version' => '-',
                          'update' => '-',
                          'result' => undef,
                          'detected' => $VAR1->{'Avast'}{'detected'}
                        },
          'F-Prot' => {
                        'version' => '-',
                        'update' => '-',
                        'result' => undef,
                        'detected' => $VAR1->{'Avast'}{'detected'}
                      },
          'eSafe' => {
                       'version' => '-',
                       'update' => '-',
                       'result' => undef,
                       'detected' => $VAR1->{'Avast'}{'detected'}
                     },
          'Norman' => {
                        'version' => '-',
                        'update' => '-',
                        'result' => undef,
                        'detected' => $VAR1->{'Avast'}{'detected'}
                      },
          'AVG' => {
                     'version' => '-',
                     'update' => '-',
                     'result' => undef,
                     'detected' => $VAR1->{'Avast'}{'detected'}
                   },
          'Sophos' => {
                        'version' => '-',
                        'update' => '-',
                        'result' => 'Mal/EncPk-DJ',
                        'detected' => $VAR1->{'AntiVir'}{'detected'}
                      },
          'Symantec' => {
                          'version' => '-',
                          'update' => '-',
                          'result' => undef,
                          'detected' => $VAR1->{'Avast'}{'detected'}
                        },
          'TheHacker' => {
                           'version' => '-',
                           'update' => '-',
                           'result' => undef,
                           'detected' => $VAR1->{'Avast'}{'detected'}
                         },
          'BitDefender' => {
                             'version' => '-',
                             'update' => '-',
                             'result' => undef,
                             'detected' => $VAR1->{'Avast'}{'detected'}
                           }
        };
$VAR1 = undef;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Parece que solo estoy sacando "$VAR1 = undef;" , pero mi idea sería abrir cada antivirus y mostrar cada versión, update, result y todo eso.

¿ Qué estoy haciendo mal ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Ayuda con JSON

Notapor explorer » 2013-05-15 17:24 @767

Creo que es así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my %keys = %{$dividir->{scans}};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Ayuda con JSON

Notapor BigBear » 2013-05-16 12:19 @555

Listo, gracias por la ayuda explorer.
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818


Volver a Básico

¿Quién está conectado?

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