PDA

Просмотр полной версии : Деобфусцируем вместе!


mailbrush
21.12.2009, 23:49
Есть такая ф-ция (javascript):
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(__,___){retu rn __.charAt(___);};_____=function(__){return __.length;};____=(_=function(_,__,___){____='';(__ _=___?___:(_____(_)-__));for(;___;--___)____+=(function(_,__){return ______(_,__)})(_,__++);return ____;})(__,4,4);____+=_(__,0,3)+_(__,9);return ____;})(hash))));
}

Её использование:

window.wall_post_hash = decode_hash('usbseansqcopnfptrdursbqsrtvaoamrcrbae nquv');

window.wall_post_hash
будет равно c50a2a97564b658d573f132cb689841e

Я с JS не очень дружу, но походу там связано что-то с подстроками и CHAR-символами....

Я привел код в удобочитаемый вид, но это мало чем помогло:

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. Раньше там было просто: decode_hash = c50a2a97564b658d573f132cb689841e
Но потом они намудрили-начудили ф-цию, которая декодирует (деобфусцирует) специальный набор символов, получая при этом хеш. Если отправлять сообщение вручную - все ок, т.к. JS выполняется, НО в связи с тем, что спаммеры работают по принципу регулярок - вытащил, отправил... все они перестали работать, даже тот, который я за 250$ взял...

-=Static=-
22.12.2009, 04:34
К сожалению эти хэши ввели не только для сообщений на стены, но и как минимум на приглашение в группы/встречи... У меня тоже скрипт сдох. :(

Gifts
22.12.2009, 16:21
Даже без знания JS можно перекодировать функцию. Проверьте плиз на других входных данных: http://deadone.110mb.com/vk_hash.php

Задержка добавлена специально

Deathdreams
22.12.2009, 16:32
ТС, тебе генератор хешей нужен?

astrologer
22.12.2009, 18:22
sub decode_hash
{
my $s = shift;

$s = substr($s, 4, 4) . substr($s, 0, 3) . substr($s, 9);
$s =~ s/([m-z])/ord($1) - 109/ge;
$s = reverse $s;

substr($s, 8, length($s) - 12) . substr($s, 0, 5);
}<?php

function decode_hash($s)
{
$m = array_combine(range('m', 'z'), range('0', '13'));

$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);
}// O_o

function decode_hash(s)
{
s =
(s.slice(4, 8) + s.slice(0, 3) + s.slice(9))
.replace(/[m-z]/g, function(m)
{
return m.charCodeAt(0) - 109;
}).split('').reverse().join('');

return s.slice(8, -4) + s.slice(0, 5);
}

stasik
22.12.2009, 19:09
astrologer браво!!
жалко что гугл, если ввести в запрос исходный текст оригинальной функции, выдаёт этот топик на первом месте, сейчас каждый прилепит декодер, на любой язык программирования уже перевести не сложно

stasik
22.12.2009, 22:15
хотя нет, оригинальный яваскрипт возвращает другой хеш

maximmazurenkoo
05.01.2010, 00:41
Угу контакт поменял кодер:

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 ??Ну очень надо...

Kaimi
05.01.2010, 00:50
<?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;
}
?>

Gifts
05.01.2010, 01:41
Или так:
function vk_hash($str)
{
$str = substr($str,-5).substr($str,4,-8);
return strrev($str);
}

maximmazurenkoo
05.01.2010, 16:53
Урраа!! Работает!! Большое спасибо оба скрипта работают!!!