Деобфусцируем вместе!

Discussion in 'PHP' started by mailbrush, 21 Dec 2009.

  1. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Есть такая ф-ция (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$ взял...
     
    #1 mailbrush, 21 Dec 2009
    Last edited: 21 Dec 2009
  2. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    К сожалению эти хэши ввели не только для сообщений на стены, но и как минимум на приглашение в группы/встречи... У меня тоже скрипт сдох. :(
     
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Даже без знания JS можно перекодировать функцию. Проверьте плиз на других входных данных: http://deadone.110mb.com/vk_hash.php

    Задержка добавлена специально
     
    _________________________
    #3 Gifts, 22 Dec 2009
    Last edited: 22 Dec 2009
    1 person likes this.
  4. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    ТС, тебе генератор хешей нужен?
     
  5. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    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);
    }
     
    #5 astrologer, 22 Dec 2009
    Last edited: 22 Dec 2009
    3 people like this.
  6. stasik

    stasik Member

    Joined:
    6 Aug 2009
    Messages:
    22
    Likes Received:
    10
    Reputations:
    6
    astrologer браво!!
    жалко что гугл, если ввести в запрос исходный текст оригинальной функции, выдаёт этот топик на первом месте, сейчас каждый прилепит декодер, на любой язык программирования уже перевести не сложно
     
    #6 stasik, 22 Dec 2009
    Last edited: 22 Dec 2009
  7. stasik

    stasik Member

    Joined:
    6 Aug 2009
    Messages:
    22
    Likes Received:
    10
    Reputations:
    6
    хотя нет, оригинальный яваскрипт возвращает другой хеш
     
  8. maximmazurenkoo

    maximmazurenkoo New Member

    Joined:
    2 Jan 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Угу контакт поменял кодер:

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

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    PHP:
    <?php
    function decode($hash)
    {
     
    $hash substr($hashstrlen($hash)-5).substr($hash4strlen($hash)-12);
     for(
    $i=0,$j=strlen($hash);$i<$j;$i++) $temp .= $hash[$j-$i-1];
     return 
    $temp;
    }
    ?>
     
    _________________________
    1 person likes this.
  10. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Или так:
    PHP:
    function vk_hash($str)
    {
        
    $str substr($str,-5).substr($str,4,-8);
        return 
    strrev($str);
    }
     
    _________________________
    2 people like this.
  11. maximmazurenkoo

    maximmazurenkoo New Member

    Joined:
    2 Jan 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Урраа!! Работает!! Большое спасибо оба скрипта работают!!!