[Problema]Con script en perl.

Iniciado por PHAMTOM, 5 Marzo 2010, 04:05 AM

0 Miembros y 1 Visitante están viendo este tema.

PHAMTOM

Buenas,me estoy iniciando en el mundo de la programación en perl , y me surgio un problema al hacer una especie de "CRACKME".

El tema es que cuando , el password se comprueba,da siempre resultado correcto..

El codigo del mismo es :

#!/usr/bin/perl
print("Escribe el password : ");
$pass=<STDIN>;
system("cls");
if($pass=="hola")
{
print("Password correcto\n\n");
}
else
{
print("Password incorrecto\n\n");
}


Aunque en <STDIN> entre askdjasdjkhasd, el password me da correcto :'(..

Tambien probe con :

#!/usr/bin/perl
print("Escribe el password : ");
$pass=<STDIN>;
$contador=1;
# no le presteis atencion al contador feo.
do
{
$contador++;
print("\nCargando..");
system("cls");
}until($contador == 20);
system("cls");
if($pass!="hola")
{
print("Password incorrecto\n\n");
}
else
{
print("Password correcto\n\n");
}




Gracias de antemano, saludos : ) ..

MOTMAHP
Miran a cualquier ventana, mientras su pánico emana
y nubla su visión mi calma es pura precisión
cargo munición y miro tranquilo
ya ni respiro desde al ático os vigilo sigo al filo os tengo a tiro!

La kitchner quiere tanto a los pobres,que cada vez,tiene más

^Tifa^

#1
Querras captar el retorno de carro o valor null o tecla 'Enter' como ultimo caracter de la frase introducida no?  ;)


Código (perl) [Seleccionar]


print("Escribe una contraseña :: ");
my $pass = <STDIN>;
chomp($pass);

 if ( $pass eq "hola" ) {

    print STDOUT "Es correcto\n";

 } else {

    print STDOUT "Es Incorrecto\n";

 }



Haz la prueba... observa y prueba :


Código (perl) [Seleccionar]


print("Escribe una contraseña :: ");
my $pass = <STDIN>;

  if ( $pass eq "hola\n" ) {

     print STDOUT "Es correcto\n";

  } else {

     print STDOUT "Es Incorrecto\n";

  }



El retorno de carro o tecla Enter tiene el valor '\n'

Saludos  :rolleyes:

leogtz

^TiFa^, el STDOUT no es necesario, la salida va dirigida por defecto a 1(stdout).
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

^Tifa^

Lo se  ;)   es costumbre ya personal mia... asi como dar uso de fprintf en C cuando puedo perfectamente dar uso de printf.

Pero... se accepta la sugerencia  :P  para el chico que pregunto digo, porque la costumbre no creo que se me quite  :xD

leogtz

Jaja, bueno, cada quien tiene su estilo.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

PHAMTOM

#5
Gracias, lo que marco la diferencia y que me hizo funcionar el " CRACKME " fue el chomp($pass); , pero por qué ? , porque la cadena del password que introduzco en <STDIN> , al apretar enter , termina con un \n ? y chomp($pass); elimina el ultimo caracter ?? ,quiero saber si es así y si no si alguien me puede aclarar :) , Muchas Gracias.

PHAMTOM
Miran a cualquier ventana, mientras su pánico emana
y nubla su visión mi calma es pura precisión
cargo munición y miro tranquilo
ya ni respiro desde al ático os vigilo sigo al filo os tengo a tiro!

La kitchner quiere tanto a los pobres,que cada vez,tiene más

leogtz

Exactamente como lo has dicho, con <STDIN> lees también el caracter '\n', y lo que se pretende con chomp, es eliminar precisamente ese '\n' de la cadena.

Mira, así podrías entenderlo mejor:
Código (perl) [Seleccionar]


#!/usr/bin/perl
print("Escribe una contraseña :: ");
my $pass = <STDIN>;
  if ( $pass eq "hola\n" ) {
     print STDOUT "Es correcto\n";
  } else {
     print STDOUT "Es Incorrecto\n";
  }


Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

PHAMTOM

Muchisimas gracias,me han aclarado todo , pueden cerrar el tema,saludos a todos y muy buen foro : ) ..

PHAMTOM  ;D
Miran a cualquier ventana, mientras su pánico emana
y nubla su visión mi calma es pura precisión
cargo munición y miro tranquilo
ya ni respiro desde al ático os vigilo sigo al filo os tengo a tiro!

La kitchner quiere tanto a los pobres,que cada vez,tiene más

~ Yoya ~

Tambien tuvo que ver lo que Tifa puso, que usabas la comparacion == que es para valores numericos y no esta comparando valores numericos si no cadena de caracter, asi que debes usar eq xD.

Que bueno que por esto lado se programa en perl, antes pasaba por esto lados pero nunca veia script en perl, mucho python xD
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

PHAMTOM

Cita de: ~ Yoya ~ en  8 Marzo 2010, 16:29 PM
Tambien tuvo que ver lo que Tifa puso, que usabas la comparacion == que es para valores numericos y no esta comparando valores numericos si no cadena de caracter, asi que debes usar eq xD.

Que bueno que por esto lado se programa en perl, antes pasaba por esto lados pero nunca veia script en perl, mucho python xD

Jaja ! , pues sí , me interese mas por el lado de perl, ya que estuve estudiando bof , y realmente ,tengo conocimientos de otros lenguajes de programación, por eso me maneje para el local bof , pero a la hora del remote buffer overflow, era super necesario la programación de sockets, tenia para elegir entre perl y c , y me meti en perl ,termine un manual y ahora estoy viendo si encuentro uno bueno de programacion en socket,me gusta este lenguaje,ya que no tiene complejidad y se me hace facil entenderlo , saludos .

PHAMTOM
Miran a cualquier ventana, mientras su pánico emana
y nubla su visión mi calma es pura precisión
cargo munición y miro tranquilo
ya ni respiro desde al ático os vigilo sigo al filo os tengo a tiro!

La kitchner quiere tanto a los pobres,que cada vez,tiene más