• Publicidad

Gzip y Base64

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

Gzip y Base64

Notapor Zeokat » 2008-01-01 14:13 @634

Bien... tengo varios archivos unos con gzip y otros con base64.

Normalmente un amigo me hacía el decode de estos documentos ya que él sabe PHP y me dijo que usaba las funciones "gzinflate" y "base64_decode" de PHP.

Mi pregunta es, ¿hay alguna función/módulo como las dos anteriores pero para Perl?

Gracias de antemano.
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Publicidad

Notapor explorer » 2008-01-01 16:43 @738

En las MIME-Tools hay un módulo llamado MIME::Decoder::Base64, pero si miras en la carpeta de ejemplos, tienes el programa que buscas.
Última edición por explorer el 2008-01-02 15:23 @682, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Zeokat » 2008-01-02 07:49 @367

Creo que con MIME Tools ya se puede hacer lo de gzip, ya que include MIME::Decoder::Gzip64.

Pero mi problema es que no soy capaz de hacer el decode de un archivo que tengo en mis disco duro... probé el ejemplo de CPAN, que toma los datos del STDIN y me funciona a la perfección.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use MIME::Decoder;

$decoder = new MIME::Decoder 'base64';
$decoder->decode(\*STDIN, \*STDOUT);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Pero no soy capaz de que el código en base64 lo coja de un archivo de disco duro... ¿alguna idea?
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Notapor creating021 » 2008-01-02 10:19 @472

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  use MIME::Base64 qw(encode_base64);

   open(FILE, "/var/log/wtmp") or die "$!";
   while (read(FILE, $buf, 60*57)) {
       print encode_base64($buf);
   }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Ese es un ejemplo del POD que se puede adaptar con facilidad.

En cuanto a lo de Gzip, yo usaría Compress::Zlib que es del core ( al menos de Perl 5.10 )
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor Zeokat » 2008-01-02 12:18 @554

Vale, con base64 no hay ningún problema... ya le hago el decode sin problemas.

Pero el problema es que al aparecer tengo que usar el gzip64 (el gzip del zlib no funciona...) y no sé cómo demonios usarlo... intenté modificar ahí y allá pero da errores por todas partes... lo que tengo que decodificar es el código que está en un archivo de texto.
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Notapor creating021 » 2008-01-02 13:25 @601

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use MIME::Decoder;
my $encfile = "archivo_encryp";
my $decfil = "salida.txt";
my $decoder = new MIME::Decoder "x-gzip64";

open IN, "<$encfile" or die "open $encfile: $!";
open OUT, ">$decfile" or die "open $decfile: $!";
binmode IN; binmode OUT;
$decoder->decode(\*IN, \*OUT) or next;
close OUT;
close IN;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor Zeokat » 2008-01-02 14:18 @637

Error:

Código: Seleccionar todo
no decoder for x-gzip64 at C:\test.pl line 7
Can't call method "decode" on an undefined value at C:\test.pl line 12.


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use strict;

use MIME::Decoder;
my $encfile = "text.txt";
my $decfile = "salida.txt";
my $decoder = new MIME::Decoder "x-gzip64";

open IN, "<$encfile" or die "open $encfile: $!";
open OUT, ">$decfile" or die "open $decfile: $!";
binmode IN; binmode OUT;
$decoder->decode(\*IN, \*OUT) or next;
close OUT;
close IN;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



Tras leer la documentación

http://search.cpan.org/~doneill/MIME-to ... /Gzip64.pm


Dice algo de...

Since this class relies on external programs which may not exist on your machine, MIME-tools does not "install" it by default. To use it, you need to say in your main program:

install MIME::Decoder::Gzip64 'x-gzip64';


Si agrego eso al código

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
install MIME::Decoder::Gzip64 'x-gzip64';
use MIME::Decoder::Gzip64;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora el error es:

Código: Seleccionar todo
"gzip" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.


Parece que tengo que tener el gzip instalado, no estoy seguro...
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Notapor explorer » 2008-01-02 15:25 @684

Sí, necesitas tener el comando gzip instalado en el sistema.

O usar el módulo Compress::Zlib como se te ha indicado antes. Con la función gzopen() podrás leer su contenido (ya descomprimido) y luego pasarlo al decode (de un escalar, no de un fichero). O abrir un handle de fichero, o...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Zeokat » 2008-01-02 20:16 @886

No hallo la solución... el código en PHP es el siguiente...

Sintáxis: [ Descargar ] [ Ocultar ]
Using php Syntax Highlighting
<? eval(gzinflate(base64_decode('******codigo******'))); ?>
Coloreado en 0.018 segundos, usando GeSHi 1.0.8.4
Zeokat
Perlero nuevo
Perlero nuevo
 
Mensajes: 125
Registrado: 2006-08-22 08:08 @380

Notapor explorer » 2008-01-02 21:54 @954

¡Ah, es que eso es distinto!

Primero estás pasando código desde Base64 y luego lo descomprime.

Pues eso mismo es lo que debes intentar. Pon el código que estás probando, para ver por dónde está el fallo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Básico

¿Quién está conectado?

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

cron