Есть такая ф-ция (javascript): Code: window.decode_hash = function(hash) { return (function(__){return _(__,8,_____(__)-12)+_(__,0,5);})((function(__){____='';for(___=0;___<_____(__);++___)____+=______(__,_____(__)-___-1);return ____;})((function(__){____='';for(___=0;___<_____(__);++___)____+=(function(__){return __>108?(__-109):String.fromCharCode(__);})(__.charCodeAt(___));return ____;})((function(__){______=function(__,___){return __.charAt(___);};_____=function(__){return __.length;};____=(_=function(_,__,___){____='';(___=___?___:(_____(_)-__));for(;___;--___)____+=(function(_,__){return ______(_,__)})(_,__++);return ____;})(__,4,4);____+=_(__,0,3)+_(__,9);return ____;})(hash)))); } Её использование: Code: window.wall_post_hash = decode_hash('usbseansqcopnfptrdursbqsrtvaoamrcrbaenquv'); Code: window.wall_post_hash будет равно Code: c50a2a97564b658d573f132cb689841e Я с JS не очень дружу, но походу там связано что-то с подстроками и CHAR-символами.... Я привел код в удобочитаемый вид, но это мало чем помогло: Code: window.decode_hash = function(hash) { return (function(first) { return second(first, 8, third(first) - 12) + second(first, 0, 5); }) (( function(first) { fourth = ''; for (fifth = 0; fifth < third(first);++fifth) fourth += sixth(first, third(first) - fifth - 1); return fourth; } )(( function(first) { fourth = ''; for (fifth = 0; fifth < third(first);++fifth) fourth += (function(first) { return first > 108 ? (first - 109) : String.fromCharCode(first); })(first.charCodeAt(fifth)); return fourth; } )(( function(first) { sixth = function(first, fifth) { return first.charAt(fifth); }; third = function(first) { return first.length; }; fourth = (second = function(second, first, fifth) { fourth = ''; (fifth = fifth ? fifth: (third(second) - first)); for (; fifth;--fifth) fourth += (function(second, first) { return sixth(second, first) })(second, first++); return fourth; })(first, 4, 4); fourth += second(first, 0, 3) + second(first, 9); return fourth; } )(hash)))); } PS: Мне нужен имено алгоритм деобфускации. Точнее не мне, а многим юзерам (спаммерам) соц. сети ВКонтакте Спасибо заранее... PS2: Если кому интерестно предназначение - расскажу... Для того, чтобы отослать сообщение на стену ВКонтакте, необходим некий decode_hash. Раньше там было просто: Code: decode_hash = c50a2a97564b658d573f132cb689841e Но потом они намудрили-начудили ф-цию, которая декодирует (деобфусцирует) специальный набор символов, получая при этом хеш. Если отправлять сообщение вручную - все ок, т.к. JS выполняется, НО в связи с тем, что спаммеры работают по принципу регулярок - вытащил, отправил... все они перестали работать, даже тот, который я за 250$ взял...
К сожалению эти хэши ввели не только для сообщений на стены, но и как минимум на приглашение в группы/встречи... У меня тоже скрипт сдох.
Даже без знания JS можно перекодировать функцию. Проверьте плиз на других входных данных: http://deadone.110mb.com/vk_hash.php Задержка добавлена специально
Code: sub decode_hash { my $s = shift; $s = substr($s, 4, 4) . substr($s, 0, 3) . substr($s, 9); $s =~ [COLOR=DarkOrange]s/([m-z])/ord($1) - 109/ge;[/COLOR] $s = reverse $s; substr($s, 8, length($s) - 12) . substr($s, 0, 5); } Code: <?php function decode_hash($s) { $m = array_combine(range('m', '[COLOR=DarkOrange]z[/COLOR]'), range('0', '[COLOR=DarkOrange]13[/COLOR]')); $s = substr($s, 4, 4) . substr($s, 0, 3) . substr($s, 9); $s = strtr($s, $m); $s = strrev($s); return substr($s, 8, strlen($s) - 12) . substr($s, 0, 5); } Code: // O_o function decode_hash(s) { s = (s.slice(4, 8) + s.slice(0, 3) + s.slice(9)) .replace(/[m-[COLOR=DarkOrange]z[/COLOR]]/g, function(m) { return m.charCodeAt(0) - 109; }).split('').reverse().join(''); return s.slice(8, -4) + s.slice(0, 5); }
astrologer браво!! жалко что гугл, если ввести в запрос исходный текст оригинальной функции, выдаёт этот топик на первом месте, сейчас каждый прилепит декодер, на любой язык программирования уже перевести не сложно
Угу контакт поменял кодер: window.dec_hash = function(hash) { (function(_){window.decoded_hashes[_]=(function(__){var ___=window[String.fromCharCode(103,101,116,88,89)]?'':'___';for(____=0;____<__.length;++____)___+=__.charAt(__.length-____-1);return ___;})(_.substr(_.length-5)+_.substr(4,_.length-12));})(hash); deadone.110mb.com/vk_hash.php - этот скрипт Работает неправильно Ошыбается в 34 символах } вот скрипт Кто то может его перевести в PHP ??Ну очень надо...
PHP: <?php function decode($hash) { $hash = substr($hash, strlen($hash)-5).substr($hash, 4, strlen($hash)-12); for($i=0,$j=strlen($hash);$i<$j;$i++) $temp .= $hash[$j-$i-1]; return $temp; } ?>
Или так: PHP: function vk_hash($str) { $str = substr($str,-5).substr($str,4,-8); return strrev($str); }