• Publicidad

Problemas con descodificación

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

Problemas con descodificación

Notapor BigBear » 2009-12-24 21:19 @929

Hola.

Ando queriendo descodificar dos codificaciones, una en ASCII y otra en hexadecimal.

Pues tengo :
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
users = 117,115,101,114,115 # Ascii separado cada tres dígitos con comas
users = 0x7573657273        # HeXADecimal
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Mi pregunta es: ¿cómo hago para descodificar las dos codificaciones a su respectivo valor (users) en Perl?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Problemas con desencriptación

Notapor explorer » 2009-12-24 22:04 @961

Esta es una forma:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. $users = '117,115,101,114,115';
  4.  
  5. print "$users\n";
  6.  
  7. # Dividimos por las comas,
  8. # y por cada número, lo pasamos a carácter, con chr().
  9. # Finalmente, lo unimos todo con join()
  10. $users = join q[], map { chr } split q[,], $users;
  11.  
  12. print "$users\n";
  13.  
  14. $users = '0x7573657273';
  15.  
  16. print "$users\n";
  17.  
  18. $users =~ s/^0x//;      # Quitamos el prefijo hexadecimal
  19.  
  20. # Por cada par de caracteres de $users,
  21. # Lo pasamos a decimal con hex()
  22. # Lo pasamos a carácter con chr()
  23. # Y lo unimos todo con join()
  24. $users = join q[], map { chr hex } $users =~ /../g;
  25.  
  26. print "$users\n";
  27.  
  28. __END__
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Aunque... en el tema de conversiones, siempre es mejor usar pack/unpack:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. $users = '117,115,101,114,115';
  4.  
  5. print "$users\n";
  6.  
  7. # Dividimos por las comas,
  8. # pack empaqueta un conjunto de valores de caracteres, en caracteres.
  9. $users = pack "C*", split q[,], $users;
  10.  
  11. print "$users\n";
  12.  
  13. $users = '0x7573657273';
  14.  
  15. print "$users\n";
  16.  
  17. # $users contiene un valor hexadecimal,
  18. # y como tal, lo empaquetamos en sus valores binarios,
  19. # dando la cadena de caracteres buscada.
  20. $users = pack "H*", $users;
  21.  
  22. print "$users\n";
  23.  
  24. __END__
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


Volver a Básico

¿Quién está conectado?

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