Contacto | #php_para_torpes | Enlázanos | ¿Quiénes somos?
24 usuarios Online (0)
Darse de alta en la web | Recuperar password   
Inicio / Desafios / Contact / Solucion de Arias

Desafío Contact

#3 Solución de Arias

Código de la Solución Ver código | Comentarios Ver comentarios (4) | Descargar Descargar código

Fecha: 27 septiembre 2005

Tamaño: 16878 caracteres

Comentarios: 4

Solución online:
http://desafios.php5.cz/contact/

Valoración PuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuaciónPuntuación 9.40 (5 votos)

"Si de verdad os poneis a sacarlo es menos dificil de lo ke parece, tened en cuenta ke trabajais con codigos ASCII y pensar en binario :P"

Valora esta solución

<?php

echo "\n- Mensaje recivido:\n", decode('$*$*$&$$$&*$$#*&*&**$&&*$#$$$&#$$&*$$&#&*&**$&*&$&$$$&&$$&#&$&$#$#*#*#&&*&****&&$$$#$&$$*&$#$#*&$&$$*&**$&*#$&*$$&#*2$&&$$&#&$&$#*&**$#&$$&##$#$$*&*$2*&#&*&**$$$#$&$$*&$#$#*&$&$$*&**$#*&$&$$$&*#$&$$$&&$$#$&$&&$$&#&$&$#*&**$&*$*&**$&#*$&##$#$**&**$&##$&$&*&**$#*#$#**$&*$$&#$*&**$&#$$&*$$&&$$&#*$#*#*&**$&$&$#*&$&##$&#$*&**$#&$$&##$#$$$#*&*&**$#**$&#*$&*$$&#&$&$$$#$**&#&*&**$$**$&#*$&$$$&*$$#*#$&$$*&**$#*#$#$*$&##$#***&**$&&$$#$**&**$*#&$*##$$$#*&*$3*&#&*&****&&$*##$#$$$#*&*&**$&&$$&#&$&*&$&##$#&**&**$&&$$#*#*&**$&$&$#$$$&#*2*&**$&##$&$&*&**$&*$$&$*$#$&$&$$$#*&$#$*$&&$$#*#$&$$$&#$$&$$$&#&$#$*$#*#*&**$&#*$&&$$&&#$&$$*#&&*&***&$#$*&*$&##$#$#*&**$#$*$&##*&**$&$$$&#&$&#*$&*$$#*&$&$#$&$$*&**$#&$$&##$#$$$#*&*&**$#**$&$$$&#&$&&$$#*#*&$#*&#**&***&$#$$$&$&&$$&*$$&$#$#*&$&*$*&$#*&**$&*$$&#&$&$**&**$#$*$&&*$&*$$#$**&**$&&#$&&$$&#&$&$**&**$&##$&$&*&**$#*#$#$*$#$$$&$&2*&#&3*&****&&$$$#$&$$*&**$&$*$&##$&#&*&$#$#$**&**$&&#$&#&$&##$#$#*&**$#$#$&&*$&*$$#$**&**$&*$*&**$#**$&$$$&#&$&&$$#*#*&**$&&$$#*#*&**$&#&$&##$#*&*&**$#$#$&*$$&#&$#$**&**$#$*$&##*&**$&$$$&#&$&#*$&*$$#*&$&$#$&$$*&**$&&$$#$**&#&*&**$$*#$&##*&#**&**$#**$&#*$&$$$&*$$#*#$&$$*&#&3*&**$&$*$&##$&#&*&$#$#$**&**$&*&$&##$#$*$&&*$&$$$#*&*&**$#$$$#*#*&#&**&&$$$*$&&*$&*$$&#&$&&#$#*#*&#**&**$&*$$&#&$&$**&**$&*#$&##$&#&$&$#$#*&$&*$$#$*$#$$$&#*$&*$$#$*$&&$$&##$&#&$#*#*&**$&$&$&##$#*&*&**$&$*$&$$$&*#$&##$&$*$&&$$&#&$&$#*&**$#$*$&&*$&$$*&**$&#$$&$$$#*#2$&*$$&$#$&$$*&#&*&**$$**$*&*$$***&#**&**$&&$$#*#$&#&*&$#$#$**&**$&&$$#$**###*#&**#$$*#*$$&*#*#*$*#&$$&*#*#$$*#$**#*&*#$$*#$&*#***#$#*#&$$&*&*#$*2*#***#$&*#*$$&$$$&*&*#*#*#*$*#$&2$&$&*#&**#&$*#$$*#**');

$respuesta = encode('Y... por que no configurais un filtro para los emails?', array('(', ')', '_', '|'));

//email('extr@terestr.es', 'Re: Dear human beings', $respuesta);

echo "\n\n- Mensaje enviado a los alienigenas:\n", $respuesta, "\n\n- Mensaje enviado decodificado:\n", decode($respuesta, array('(', ')', '_', '|'));

function
decode($cadena, $encoding = array('*', '$', '&', '#')) {
if (!
checkEncoding($encoding)) return false;
$regexp = preg_replace("/([\\[\\]\\^\\-\\\\])/", "\\\\\\1", implode($encoding));
if (!
preg_match("/^(?:[".$regexp."]{4}(?:[1-9][0-9]+|[2-9])*)*$/", $cadena)) return false;
$encoding = array_flip($encoding);

preg_match_all("/([".$regexp."]{4})([1-9][0-9]+|[2-9])?/", $cadena, $letras);

ob_start();
for (
$i=0; $i<count($letras[0]); $i++) {
  
$letra = $letras[1][$i];
  
$ascii = $encoding[$letra{0}]*64 + $encoding[$letra{1}]*16 + $encoding[$letra{2}]*4 + $encoding[$letra{3}];
  echo
str_repeat(chr($ascii), empty($letras[2][$i]) ? 1: $letras[2][$i]);
}
$decode = ob_get_contents();
ob_end_clean();

if (
strlen($decode) < 32) return false;
$str = substr($decode, 0, -32);
return
md5($str) == substr($decode, -32) ? $str : false;
}

function
encode($cadena, $encoding = array('*', '$', '&', '#')) {
if (!
checkEncoding($encoding)) return false;
$cadena .= md5($cadena);

preg_match_all("/((.)\\2*)/s", $cadena, $letras);
$letras = $letras[1];

ob_start();
for (
$i=0; $i<count($letras); $i++) {
  
$ascii = ord($letras[$i]{0});
  echo
$encoding[($ascii & 192) >> 6], $encoding[($ascii & 48) >> 4], $encoding[($ascii & 12) >> 2], $encoding[($ascii & 3)];
  if ((
$len = strlen($letras[$i])) > 1) echo $len;
}
$encode = ob_get_contents();
ob_end_clean();
return
$encode;
}

function
checkEncoding($encoding) {
if (!
is_array($encoding) || count($encoding) != 4 || array_unique($encoding) != array_values($encoding)) return false;
for (
$i=0; $i<4; $i++)
  if (!
ctype_print($encoding[$i]) || ctype_digit($encoding[$i]))
   return
false;
return
true;
}

?>

Web alojada en Zilos

php-hispano.net 2002 - 2008 | XHTML 1.0
Datos Legales | Webmaster