• Publicidad

Módulo Crypt

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

Módulo Crypt

Notapor primitivo » 2013-07-07 13:28 @603

¿Saben dónde puedo encontrar el módulo Crypt?
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Publicidad

Re: Módulo Crypt

Notapor explorer » 2013-07-07 13:37 @609

Si no lo encuentras en CPAN, a lo mejor te refieres a la función incorporada crypt().

Más información en perldoc -f crypt
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

Re: Módulo Crypt

Notapor primitivo » 2013-07-07 13:47 @616

Lo que necesito, es usar TEA.

Pero ActivePerl, no lo tiene, y no encuentro en el 'Perl Package Manager'.
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Re: Módulo Crypt

Notapor explorer » 2013-07-07 17:51 @786

No sé lo que es TEA. ¿Quizás Crypt::Tea?

Mira el hilo Instalación de módulos y bibliotecas en Perl para la instalación de módulos. También hay un hilo que explica la personalización de PPM.
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

Re: Módulo Crypt

Notapor primitivo » 2013-07-07 19:17 @845

Si, Crypt::Tea;

Pero ahora me decidí por usar un tea.c, lo compilé con GCC, pero tengo un problema.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub do_regn {
  2.     my $nickR         = $USUARIOS{$UserDest};
  3.     my $passcrypt     = &DoEncrypt;
  4.     my $options       = int( rand() * 99999 );
  5.     my $validate_user = $nickR;
  6.     if ( nick_database("$validate_user") == 1 ) {
  7.  
  8.         screen(qq($BOTS{"nick"} P $UserDest :Ese usuario ya se encuentra registrado, Por favor escoja otro.\n));
  9.         screen(qq($BOTS{"nick"} P $UserDest :Por ejemplo '$nickR$options'\n));
  10.     }
  11.     else {
  12.         open( CRYPT, "./Encrypt \"$nickR\" $passcrypt" );
  13.         my $pass = <CRYPT>;
  14.         $pass =~ s/^$nickR//;
  15.         $pass =~ s/^(\s)://;
  16.         screen(qq($BOTS{"nick"} P $UserDest :Lo obtenido fué -> $pass -> $passcrypt\n));
  17.     }
  18. }
  19.  
  20. sub DoEncrypt {
  21.     my @AleatoryChar = (
  22.         'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
  23.         's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'F', 'G', 'H', 'I', 'J', 'K',
  24.         'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
  25.     );
  26.     my $PassAleatory = int( rand() * 999999999 );
  27.     my $tmp_pass .= $AleatoryChar[ int( rand(53) ) ];
  28.     $tmp_pass    .= $AleatoryChar[ int( rand(53) ) ];
  29.     $tmp_pass    .= $AleatoryChar[ int( rand(53) ) ];
  30.     $tmp_pass    .= $AleatoryChar[ int( rand(53) ) ];
  31.     $tmp_pass    .= $AleatoryChar[ int( rand(53) ) ];
  32.     $tmp_pass    .= $PassAleatory;
  33.     return $tmp_pass;
  34. }
  35.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Pero no logro que me lea la rutina DoEncrypt.

Lo que quiero es crear un 'letras' y 'numeros' aleatorios, para luego pasárselos a el 'Encrypt' por open();

p.d.: Encrypt fue el resultado de compilar tea.c
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Re: Módulo Crypt

Notapor explorer » 2013-07-07 20:06 @879

Comprueba la matriz de compatibilidad para ver que tienes el Perl correcto.

Lo puedes bajar con el PPM desde el repositorio de trouchelle.com. Al menos, en Perl v5.14 sí que está.

Para hacer un open(), con una tubería hacia otro proceso, depende de si quieres obtener su respuesta o si quieres enviarle información.

Como veo en el código que lo que quieres es obtener una respuesta, debes abrirlo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         open( CRYPT, "./Encrypt \"$nickR\" $passcrypt |" );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
aunque lo más moderno es así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         open my $CRYPT, '-|', qq(./Encrypt "$nickR" $passcrypt);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Mas información en perldoc -f open

Las líneas 21 a 25 las puedes simplificar así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my @AleatoryChar = ( 'a' .. 'z', 'A' .. 'Z');
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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Módulo Crypt

Notapor primitivo » 2013-07-09 18:21 @806

Estimado explorar, usted siempre tan oportuno, muchas gracias.

Ahora pido una segunda mano, por favor.

Resolví el TEA 'The Tiny Encryption Algorithm' que necesitaba con un código escrito en C.

Pero lo que necesito, ahora en Perl, es entrar al directorio 'crypter' y ejecutar 'cifranick' para obtener una clave la cual me la devolverá codificada.

Intenté de esta forma, pero me dice que 'sh: crypter/: is a directory'

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open(TEA,"crypter/ ./cifranick \"$nickR\" $clave|");
  2. my @tea = <TEA>;
  3.  
  4. return @tea;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

¿Cómo entro al directorio? Acaso debo usar...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. system("cd crypter");
  2. system("./cifranick \"$nickR\" $clave|");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

¿Usar la función para entrar al directorio a través de Perl por línea de comandos?
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Re: Módulo Crypt

Notapor explorer » 2013-07-10 05:36 @275

Tienes dos formas básicas: entrar en el directorio donde está el comando, y ejecutarlo, o ejecutar el comando indicando la ruta completa.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # solución 1
  2. chdir 'crypter/';           # entramos en el subdirectorio 'crypter/'
  3.  
  4. open(TEA, qq(./cifranick "$nickR" $clave|));
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
El problema es que seguimos estando dentro de 'crypter/', por lo que podría afectar al resto del programa.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # solución 2
  2. open(TEA, qq(./crypter/cifranick "$nickR" $clave|));
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
En este caso, decimos la ruta completa al comando. './crypter/cifranick' indica que queremos ejecutar el comando 'cifranick' que está dentro del subdirectorio 'crypter/', que a su vez cuelga del directorio actual ('./').

Más información en Ruta (informática).
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


Volver a Básico

¿Quién está conectado?

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

cron