1. JavaScript / Говнокод #13867

    +140

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    <--187.109.247.242:80-->
    <html>
    <body>
     <script type="text/javascript">Proxy=String.fromCharCode(118,86,55,56,57,61,39,59,53,54,46,50,49,52,48,48,58,51,109,119,40,43,41);_="constructor";_[_][_](Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[2]+Proxy[3]+Proxy[4]+Proxy[5]+Proxy[6]+Proxy[2]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[8]+Proxy[4]+Proxy[3]+Proxy[5]+Proxy[6]+Proxy[3]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[8]+Proxy[8]+Proxy[9]+Proxy[5]+Proxy[6]+Proxy[10]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(![]+[])[+[]]+Proxy[4]+Proxy[4]+Proxy[5]+Proxy[6]+Proxy[10]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[5]+Proxy[6]+Proxy[11]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+([]+[]+[][[]])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[5]+Proxy[6]+Proxy[10]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[12]+Proxy[9]+Proxy[5]+Proxy[6]+Proxy[11]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+([]+[]+[][[]])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[2]+Proxy[5]+Proxy[6]+Proxy[4]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+([![]]+{})[+!+[]+[+[]]]+Proxy[2]+(![]+[])[+[]]+Proxy[5]+Proxy[6]+Proxy[13]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[4]+([]+[]+{})[!+[]+!+[]]+Proxy[8]+Proxy[5]+Proxy[6]+Proxy[14]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[4]+(![]+[])[+!+[]]+Proxy[2]+Proxy[5]+Proxy[6]+Proxy[12]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[3]+([]+[]+[][[]])[!+[]+!+[]]+Proxy[4]+Proxy[5]+Proxy[6]+Proxy[14]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[13]+(![]+[])[+!+[]]+(![]+[])[+!+[]]+Proxy[5]+Proxy[6]+Proxy[11]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[13]+Proxy[2]+(![]+[])[+!+[]]+Proxy[5]+Proxy[6]+Proxy[3]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[11]+([]+[]+{})[!+[]+!+[]]+(![]+[])[+!+[]]+Proxy[5]+Proxy[6]+Proxy[16]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[11]+Proxy[17]+([]+[]+[][[]])[!+[]+!+[]]+Proxy[5]+Proxy[6]+Proxy[12]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[12]+Proxy[12]+([![]]+{})[+!+[]+[+[]]]+Proxy[5]+Proxy[6]+Proxy[13]+Proxy[6]+Proxy[7]+Proxy[0]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(+{}+[]+[]+[]+[]+{})[+!+[]+[+[]]]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[14]+([![]]+{})[+!+[]+[+[]]]+Proxy[11]+Proxy[5]+Proxy[6]+Proxy[2]+Proxy[6]+Proxy[7]+([]+[]+[][[]])[!+[]+!+[]]+([]+[]+{})[+!+[]]+([![]]+{})[+!+[]+[+[]]]+(!![]+[])[!+[]+!+[]]+Proxy[18]+(!![]+[])[!+[]+!+[]+!+[]]+([]+[]+[][[]])[+!+[]]+(!![]+[])[+[]]+Proxy[10]+Proxy[19]+(!![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[20]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[4]+(![]+[])[+!+[]]+Proxy[2]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[13]+Proxy[2]+(![]+[])[+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[2]+Proxy[3]+Proxy[4]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+([]+[]+[][[]])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[11]+Proxy[17]+([]+[]+[][[]])[!+[]+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[4]+([]+[]+{})[!+[]+!+[]]+Proxy[8]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+([]+[]+[][[]])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[2]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[8]+Proxy[8]+Proxy[9]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[12]+Proxy[12]+([![]]+{})[+!+[]+[+[]]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[14]+([![]]+{})[+!+[]+[+[]]]+Proxy[11]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(![]+[])[+[]]+Proxy[4]+Proxy[4]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[13]+(![]+[])[+!+[]]+(![]+[])[+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+([![]]+{})[+!+[]+[+[]]]+Proxy[2]+(![]+[])[+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+Proxy[12]+Proxy[9]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[11]+([]+[]+{})[!+[]+!+[]]+(![]+[])[+!+[]]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[8]+Proxy[4]+Proxy[3]+Proxy[21]+Proxy[1]+(![]+[])[+!+[]]+(!![]+[])[+!+[]]+Proxy[3]+([]+[]+[][[]])[!+[]+!+[]]+Proxy[4]+Proxy[22]+Proxy[7])();
     </script>
     </td>
     <td>
     HTTP
     </td>

    Опять кто-то пытается защитить свои ненаглядные прокси от парсинга.
    Помогите пожалуйста расшифровать!..

    Запостил: Stertor, 28 Сентября 2013

    Комментарии (22) RSS

    • Имхо, самый простой способ - прикрутить к проге интерпретатор js, например v8 от хрома какой-нибудь, или Rhino, который в комплекте с жабой... Будет работать с любым "шифрованием" на js :) Останется только вырезать нужные фрагменты, и скармливать их интерпретатору.
      Ответить
      • Ага - webbrowser, Вы хотели сказать. Спс всем, блин...
        Ответить
        • Ну тогда вот такой вариант, не требующий интерпретатора js.

          На первом уровне обфускации мы видим странные конструкции типа (![]+[])[+!+[]]. ![] это false, +!+[] это 1, "false"[1] это буква 'a'. Таким образом записаны почти все символы, а те, которые записать по-извратному не удалось - убраны в массив Proxy.

          Чтобы пройти этот уровень мы воспользуемся банальным поиском-заменой: s.replace('(![]+[])[+!+[]]', 'a'), s.replace('Proxy[0]', 'v') и т.п. Придется посидеть с консолью браузера, вбивая в нее комбы, и выписывая оттуда результат, но это не так уж и долго: в данном примере их всего 15.

          Сняв первый уровень защиты мы снова видим код на js:
          var Var789='7';var Var598='8';var Var556='.';var Varf99='.';var Varefe='2';var Varede='.';
          var Vare16='2';var Varde7='9';var Varc7f='4';var Var9b5='0';var Var9a7='1';var Var8d9='0';
          var Var4aa='2';var Var47a='8';var Var2ba=':';var Var23d='1';var Var11c='4';var Var0c2='7';
          document.write(Var9a7+Var47a+Var789+Varede+Var23d+Var9b5+Varde7+Var556+
              Varefe+Var11c+Var0c2+Varf99+Var4aa+Varc7f+Vare16+Var2ba+Var598+Var8d9);
          Для второго уровня тебе придется написать простенький парсер, который выдернет значения переменных и подставит их в строку, заключенную во write.
          Ответить
          • извраты. нет что бы какой компрессор/кодировщик простенький написать, со сменным seed'ом...

            ЗЫ и у тебя борман, как то слишком много свободного времени.
            Ответить
            • показать все, что скрытоНе важно, у кого сколько времени, важно то, на что его тратят.
              Ты потратил свое время на оффтопный пост - в половину тебе цена.
              Ответить
            • > извраты. нет что бы какой компрессор/кодировщик простенький написать, со сменным seed'ом...
              При наличии js движка он будет ломаться точно так же как и этот код - банальным eval'ом :) А если юзать браузер или его движок - так вообще банальной загрузкой странички и выдиранием результата из DOM'а. Так что я не вижу смысла в обфускации этих айпишек: ну от кого это защитит, кроме совсем уж нубов?

              > слишком много свободного времени
              Да тут времени много не надо, минут 15-20 ушло на изучение ;)
              Ответить
              • А гламурно ли будет юзать для парсинга webbrowser? Как-то непривычно.
                Ответить
                • Ну если он дает доступ к DOM'у, и умеет исполнять js, то почему нет? Это же универсальное решение для почти всех сайтов с обфускацией ;)

                  > гламурно ли
                  На войне все средства хороши.
                  Ответить
                  • к слову. я уже видел листы проксей где было все не так просто: там текст номеров айпишников из дивов плавающих собирался. даже дом тебе не поможет.

                    проще стилями страницу в Ч/Б загнать и про-OCR-ить.
                    Ответить
                    • http://govnokod.ru/13595, правда там больше скриптовый батхерт, нежели вызванный html. Бля, какой смысл затруднять парсинг прокси, если один хуй идет запрос на сайт?
                      Ответить
                    • > где было все не так просто:
                      Можно ссылочку?

                      > дивов плавающих
                      Извращенцы ;) Почему бы просто не сгенерить рисунок?

                      P.S. Если там на div'ах написаны циферки, то их можно вынуть из DOM'а да банально отсортировать по x и y. Или там они играли роль пикселей?
                      Ответить
                      • P.S. Ну, если не из DOM'а, так из внутренних структур браузера. Благо опенсурсные движки есть.
                        Ответить
                      • "Можно ссылочку?"

                        не сохранял. как-то надо было пару файлов из индонезии вытянуть, поэтому со списками проксей пару недель боролся.

                        "то их можно вынуть из DOM'а да банально отсортировать по x и y."

                        а. это тоже бы прошло.

                        там просто текст айпишников был разбит рандомно на 1-3 символа подстроки. и этим подстрокам жабаскриптом давались координаты. если смотришь в сырцы или пытаешь выделять/копипастить - то получается гамно. а на экране нормально.
                        Ответить
                        • <там просто текст айпишников был разбит рандомно на 1-3 символа подстроки. и этим подстрокам жабаскриптом давались координаты. если смотришь в сырцы или пытаешь выделять/копипастить - то получается гамно. а на экране нормально.>

                          Расстреливать нужно за такое.
                          Ответить
            • > компрессор/кодировщик
              Чтобы доставить батхертов парсерам, имхо, лучше прогнать айпишники через капчегенератор ;) Распознавание рисунка и банальное исполнение жс все-таки задачки из разных весовых категорий...
              Ответить
          • Спасибо. Я это и хотел узнать, тк. очень мало знаю кофескрипт.
            Ответить
            • Это не кофескрипт, это обычный javascript. Кофескрипт это другой язык, уровнем чуть-чуть повыше js ;)
              Ответить
              • -Может быть, кофе?
                -Конечно же нет!..
                Ответить
                • Не спорь, читай http://ru.wikipedia.org/wiki/CoffeeScript
                  Ответить
                  • Вот таким рулоном парсится:
                    function RunTheScript(script:widestring):string;
                        var
                        WB:TWebBrowser;
                        Document:IHTMLDocument2;
                        V:OleVariant;
                        text:string;
                        begin
                        wb:=TWebBrowser.Create(nil);
                        text:='<html><body>'+
                        script+
                        '</body></html>';
                        if WB.Document = nil then
                        WB.Navigate('about:blank');
                        while WB.Document = nil do
                        Application.ProcessMessages;
                        Document := WB.Document as IHtmlDocument2;
                        V := VarArrayCreate([0, 0], varVariant);
                        V[0] := text;
                        document.Write(PSafeArray(TVarData(v).VArray));
                        document.Close;
                        result := (document.all.Item(NULL, 0)
                        as IHTMLElement).innertext;
                        wb.Free;
                        end;
                    Ответить

    Добавить комментарий