Hola comunidad, en estos momentos ando estudiando PHP Orientada a Objetos, y para ello me pusieron un reto
calcular un token valido a partir de una clase dada, he estado leyendo sobre las clases, como se usan y demas, y logro generar un token, el problema es que SIEMPRE me da el mismo 100-100-100-100-100 y a la hora de enviar la respuesta me la dan por mala :P
Me han dado una pista y es hacerle ingeniera inversa al código(????), bueno el código es este:
Código PHP:
Ver original<?php
class Crypt0reto
{
private $prefix_token = 'ddlr-';
private $valid_algorithm = '56-101-52-51-56';
private function TokenCalculate($string)
{
$md5_1 = md5($string[0]); $md5_2 = md5($string[1]); $md5_3 = md5($string[2]); $md5_4 = md5($string[3]); $md5_5 = md5($string[4]); $token = ord($md5_1).'-'.ord($md5_2).'-'.ord($md5_3).'-'.ord($md5_4).'-'.ord($md5_5); return $token;
}
private function DebugToken($token)
{
$string_explode_array = explode($this->prefix_token, $token); $string = $string_explode_array[1];
return $string;
}
public function CheckToken($token)
{
$test_token = $this->TokenCalculate($this->DebugToken($token));
if($test_token == $this->valid_algorithm)
{
return true;
}
else
{
return false;
}
}
}
?>
Le hice modificaciones para ver generar uno, me quedo así:
Código PHP:
Ver original<?php
class Crypt0reto
{
private $prefix_token = 'ddlr-';
private $valid_algorithm = '56-101-52-51-56';
private function TokenCalculate($string)
{
$md5_1 = md5($string[0]); echo "MD5 1 hecho: ".$md5_1."<br>";
$md5_2 = md5($string[1]); echo "MD5 2 hecho: ".$md5_2."<br>";
$md5_3 = md5($string[2]); echo "MD5 3 hecho: ".$md5_3."<br>";
$md5_4 = md5($string[3]); echo "MD5 4 hecho: ".$md5_4."<br>";
$md5_5 = md5($string[4]); echo "MD5 5 hecho: ".$md5_5."<br>";
$token = ord($md5_1).'-'.ord($md5_2).'-'.ord($md5_3).'-'.ord($md5_4).'-'.ord($md5_5); echo "Token hecho: ".$token."<br>";
return $token;
echo $token;
}
private function DebugToken($token)
{
$string_explode_array = explode($this->prefix_token, $token); echo "String explode hecho: ".$string_explode_array."<br>";
print_r($string_explode_array); echo "<br>"; $string = $string_explode_array[1];
echo "String calculado: ".$string."<br>";
return $string;
echo $string;
}
public function CheckToken($token)
{
$test_token = $this->TokenCalculate($this->DebugToken($token));
if($test_token == $this->valid_algorithm)
{
return true;
}
else
{
return false;
}
}
}
$prueba = new Crypt0reto();
$prueba->CheckToken('one2one');
?>
Alguien me podría hechar la mano para generar el famoso token valido ?