FAQ Распаковка и расшифровка js файлов. Как открыть исходный код страницы Это будет интересно новичкам

FAQ Распаковка и расшифровка js файлов. Как открыть исходный код страницы Это будет интересно новичкам
FAQ Распаковка и расшифровка js файлов. Как открыть исходный код страницы Это будет интересно новичкам

Просматривая бесчисленное множество сайтов в интернете, можно встретить такие, которые очень нам нравятся. Сразу же возникает ряд вопросов. Сайт сделан с помощью самописного кода или какой-нибудь CMS? Какие у него CSS стили? Какие у него мета-теги? И так далее.

Существует много инструментов, с помощью которых можно извлечь информацию о коде страницы сайта. Но под рукой у нас всегда есть правая кнопка мыши. Её-то мы и будем использовать, на примере моего сайта.

Как просмотреть код страницы?

Чтобы посмотреть исходный код страницы сайта, нужно навести курсор мыши на любую область веб-страницы (за исключением изображений и ссылок). После этого нажать на правую кнопку мыши. Перед нами откроется окно с несколькими опциями (в разных браузерах они могут немного отличаться). В браузере Google Chrome, например, это команды:

  • назад;
  • вперёд;
  • перезагрузить;
  • сохранить как;
  • печать;
  • перевести на русский;
  • просмотр кода страницы ;
  • просмотреть код.

Нам нужно кликнуть на просмотр кода страницы , и перед нами откроется html код страницы сайта.

Просмотр кода страницы: на что обратить внимание?

Итак, Html код страницы представляет собой пронумерованный список строк, каждая из которых несёт информацию о том, как сделан данный сайт. Чтобы быстрей научиться разбираться в этом огромном количестве знаков и специальных символов, нужно различать разные участки кода.

Например, строки кода, находящиеся в внутри тега head содержат информацию для поисковых машин и веб-мастеров. Они не выводятся на сайт. Здесь можно увидеть, по каким ключевым словам продвигается эта страница, как написаны её title и description. Также здесь можно встретить ссылку, перейдя по которой узнаем о семействе google шрифтов, используемых на сайте.

Если сайт сделан на CMS WordPress или Joomla, то это также будет видно здесь. Например, в этой области выводится информация о теме WordPress или шаблоне Joomla сайта. Увидеть её можно, прочитав содержание ссылок, выделенных синим цветом. В одной ссылке виден шаблон сайта.

Например:

//fonts.googleapis.com/css?family=Source+Sans+Pro%3A400%2C400italic%2C600&ver=4.5.3

Мы увидим CSS стили шрифтов страницы. В данном случае используется шрифт. Это видно здесь – font-family: ‘Source Sans Pro’.

Данный сайт оптимизируется с помощью сео-плагина Yoast SEO. Это видно из этого закомментированного участка кода:

This site is optimized with the Yoast SEO plugin v3.4.2 — https://yoast.com/wordpress/plugins/seo/

Вся информация, находящаяся внутри тега body, выводится браузером на экране монитора. Здесь мы видим html код страницы, а в самом низу находится код скрипта Яндекс метрики. Он облечён закомментированным тегом с текстом:

/Yandex.Metrika counter

Подводим итоги

Проведя довольно поверхностный анализ кода главной страницы сайта, можно сделать вывод о том, с помощью каких инструментов сделана эта страница. Мы увидели на ней:

  • CMS WordPress;
  • Google шрифт Source Sans Pro;
  • тема WordPress – Sydney;
  • плагины Yoast;
  • счётчик Яндекс метрики.

Теперь принцип анализа html кода страницы сайта вполне понятен. Совсем необязательно держать исследуемую страницу открытой в браузере. Сохранить код страницы себе на компьютер можно с помощью комбинаций клавиш ctrl+a, ctrl+c, ctrl+v. Вставьте её в любой текстовый редактор (лучше Notepad++) и сохраните с расширением html. Таким образом, вы в любое время сможете изучить её глубже и найти больше полезной для себя информации.

В статье будут рассмотрены основные принципы шифровки и упаковки , слабые места защит, способы ручного снятия, а также универсальные инструменты для автоматического снятия упаковщиков и навесной защиты со скриптов JavaScript .

Скрытый текст

В последнее время все чаще исходный код скриптов шифруется или пакуется. Этим начали увлекаться Яндекс, DLE и другие популярные проекты, а красивые байки про "заботу о пользователях", "экономию трафика" и прочую чушь выглядят очень смешно. Что ж, если кому-то есть что скрывать, значит наша задача вывести их на чистую воду.

Начнем с теории. Из-за особенностей выполнения JavaScript все шифровщики и упаковщики, несмотря на их разнообразие, имеют всего два варианта алгоритма:

Var encrypted="зашифрованные данные";
function decrypt(str) {

}
// Выполнить расшифрованный скрипт
eval(decrypt(encrypted));


или как вариант:

var encrypted="зашифрованные данные";
function decrypt(str) {
// функция расшифровки или распаковки
}
// Вывести на экран расшифрованные данные
document.write(decrypt(encrypted));

Второй способ чаще всего используется для защиты исходного html-кода страницы, а также разными троянами для внедрения в страницу вредоносного кода, например скрытого фрейма. Оба алгоритма могут комбинироваться, "навороченность" и запутанность расшифровщика может быть любой, неизменным остается только сам принцип.

В обеих случаях получается, что функциям eval() и document.write() передаются полностью расшифрованные данные. Как их перехватить? Попробуйте заменить eval() на alert() , и в открывшемся MessageBox "е вы сразу увидите расшифрованный текст. Некоторые браузеры позволяют копировать текст из MessageBox "ов, но лучше воспользоваться таким вот полуавтоматическим декодером:


JavaScript Decoder


// Функция записи в лог результатов расшифровки
function decoder(str) {
document.getElementById("decoded").value+=str+"\n";
}









Для примера возьмем какой-нибудь скрипт с Яндекса, посмотрев исходный код видим что-то нездоровое:

eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!
"".replace(/^/,String)){while(c--)r=k[c]||e(c);k=}];e=function(){return"\w+"};c=1};while(c--)if(k[c])
p=p.replace(new RegExp("\b"+e(c)+"\b","g"),k[c]);return p}("$.1e
.18=8(j){3 k=j["6-9"]||"#6-9";3 l=j["6-L"]||".u-L";3 m=j["6-L-17"]
||"";3 n=j["1d"]||0;$(5).2(".6-9").14("7");$(5).2(".6-9").Z("7",8(
){3 a=$(5).x();3 o=$(5).x();3 h=$(5).B("C");$(5).v("g-4");$(5).16(
$(k).q());3 t=$(o).2("15");3 c=$(o).2(".b-r");3 d=$(o).2(".b-12");
[остальной такой же бред отрезан]


Сразу скажу, что этот скрипт обработан JavaScript Compressor , его легко узнать по сигнатуре - характерному названию фукнции в начале скрипта. Копируем целиком исходный текст скрипта, заменяем первый eval на decoder , вставляем в декодер и сохраняем его как html-страничку.


// Сюда вставить зашифрованный скрипт, предварительно
// заменить в нем все вызовы eval() и document.write() на decoder().
decoder(function(p,a,c,k,e,r){e=function(c){return(cQAPKRV%22NCLEWCEG? HctcQa ...
hp_d01(unescape(">`mf{%22`eamnmp? !DDDDDD %22v ...


Для удобства в статье скрипты приводятся не полностью, вы же должны копировать их целиком. Открываем декодер в браузере и видим защитные скрипты, добавленные программой, и расшифрованный исходный текст страницы. Для удобства можно расшифровывать только третий скрипт, в котором содержится html-код страницы. Вот и вся защита. Как видите, ничего сложного. Аналогично снимаются и другие защиты html-страниц.

От ручной расшифровки перейдем к автоматической. Для снятия защит первого типа я немного модифицировал уже известный вам скрипт Beautify Javascript и откомпилировал его в exe-файл. Он без проблем справляется с большинством виденных мной защит и упаковщиков JavaScript.

Eval JavaScript Unpacker 1.1
Eval.JavaScript.Unpacker.1.1-PCL.zip (12,073 bytes)

Для более сложных случаев придется пускать в ход тяжелую артиллерию. Это бесплатный проект Malzilla , предназначенный для исследования троянов и другого вредоносного кода. Поскольку все программы, предназначенные для защиты авторского права, являются однозначно вредоносными, Malzilla поможет нам в борьбе с ними. Качаем последнюю версию (на сегодняшний день это 1.2.0), распаковываем, запускаем. Открываем вторую вкладку Decoder, в верхнее окно вставляем код зашифрованного скрипта, нажимаем кнопочку Run script .

Функций в нем поменьше, но вполне имеет место быть. С офсайта можно скачать демонстрационный ролик, показывающий пример работы с программой.

Как видите, нет ничего сложного в снятии защиты со скриптов JavaScript и с html-страниц. Вы все еще продолжаете защищать свои поганые "аффтарские права"? Тогда мы идем к вам!

HTML код это по сути и есть сама ваша страничка, он указывает то, как именно ваш сайт будет строиться и отображаться на дисплее пользователя. Как правило, этот код открытый, то есть любой пользователь может беспрепятственно его увидеть и прочитать. Если же вы по тем или иным причинам не желаете того, чтобы кто-угодно имел доступ к вашему коду , вы можете . Это подразумевает собой создание особого алгоритма, который кодирует ваш код , то есть прячет его первичный вид, делая недоступным для пользователей сайта. Когда и кому это может понадобится?Сделать такое шифрование может абсолютно любой веб-мастер или владелец сайта. Вопрос в том, на сколько это обоснованно и нужно. К примеру, если у вас обычная лендинг-страничка, сделанная по шаблону, и которая не отличается от других, нету смысла заниматься кодировкой, так как такой шаблон и так является общедоступным. В таком случае вряд ли кто-то будет заниматься копированием и изучением вашего кода. А вот если у вас сайт, который имеет уникальный дизайн, вы долго и кропотливо над ним трудились, или заплатили за это немалые деньги, то о кода все же стоит подумать. Очень часты случаи, когда владелец имеет сайт, в который было вложено немало сил, времени и денег, и через некоторое время тем или иным образом обнаруживает точно такой же сайт, с таким же дизайном и структурой, но на другом домене и хостинге. Очень часто владельцам сайтов об этом говорят в комментариях сами пользователи. В этом случае можно смело сделать вывод, что кто-то попросту скопировал HTML код вашего сайта и запустил его на своем. Что же делать чтобы обезопасить себя?От ситуаций копирования и использования без разрешения чужого HTML кода не так уж и просто себя обезопасить. Да и вообще если человек уже увидел ваш сайт, он даже и без кода сможет его дублировать, при условии наличия определенных знаний в сфере веб-разработки. Но, что касается самого HTML кода, то его можно зашифровать. Работает это на основе специального javascript-скрипта. С помощью нашего инструмента вы . При этом создается специальный скрипт, который предназначен для расшифровки. Работает это довольно-таки просто: когда посетитель переходит на ваш сайт, загружается зашифрованный код, понять который он не сможет. В этот же момент запускается созданный javascript, который расшифровывает код и отображает сайт на экране пользователя. При этом, сам посетитель не может увидеть настоящий код. Однако, в этом методе есть и небольшой недостаток. Есть пользователи в браузерах которых запрещен запуск javascript на сайте, в таком случае скрипт не запустится, соответственно HTML код не расшифруется и сайт не будет отображен. Но, расстраиваться не стоит, такая настройка браузеров встречается очень редко, можно сказать что на 99% браузерах разрешен запуск javascript. Как это сделать?Делается это очень просто, с помощью нашего инструмента. Все что от вас требуется это вставить ваш HTML код в поле на этой страничке, и нажать на кнопку для запуска шифрования. В результате, в другом поле вы получите уже зашифрованный код, который уже можно использовать непосредственно на вашем сайте. Ctrl + U Как посмотреть исходный код элемента?

Нажмите правую кнопку мыши на интересующем элементе страницы.

Google Chrome : “Просмотр кода элемента”

Opera : “Проинспектировать элемент”

FireFox : “Анализировать элемент”

В других браузерах ищите подобный по смыслу пункт меню.

Всем привет!

Специально вначале статьи выложил всю суть, для тех, кто ищет быстрый ответ.

Информация может быть многим известна, но поскольку пишу для начинающих блоггеров, веб-программистов и прочих старателей, то эта справочная статья обязательно должна присутствовать.

В будущем вы обязательно будете изучать исходный код страниц и отдельных элементов.

Давайте посмотрим на конкретном примере как можно использовать просмотр исходного кода страницы.

Например, мы хотим посмотреть какие ключевые слова (keywords) используются для конкретной страницы. Заходим на интересующую нас веб-страницу и нажимаем Ctrl+U . В отдельном окне или в отдельной закладке откроется исходный код данной страницы. Нажимаем Ctrl+F для поиска фрагмента кода. В данном случае печатаем в окне поиска слово “keywords”. Вас автоматически перебросит на фрагмент кода с этим мета-тегом и выделит искомое слово.

По аналогии можно искать и изучать другие фрагменты кода.

Просмотр всего исходного кода страницы в большинстве случаев не очень удобен, поэтому во всех браузерах существует возможность просмотреть код отдельного элемента или фрагмента.

Давайте применим на конкретном примере просмотр кода элемента. Например, посмотрим есть ли у ссылки атрибут nofollow . Нажимаем правой кнопкой мыши на интересующей нас ссылке и в выпадающем контекстном меню левой кнопкой кликаем по пункту “Просмотр кода элемента” или подобному (в зависимости от вашего браузера). Внизу, в специальном окне для анализа кода, получаем нечто подобное.

Мы видим, что в коде ссылки присутствует rel=”nofollow” . Это значит, что по этой ссылке не будет “утекать” и PR. Об этом подробней поговорим в следующих статьях. Сейчас же важно то, что вы теперь знаете как посмотреть исходный код страницы и исходный код отдельного элемента.

Эта статья - дополнение к статье про деобфускацию скриптов. Здесь будут рассмотрены основные принципы шифровки и упаковки, слабые места защит, способы ручного снятия, а также универсальные инструменты для автоматического снятия упаковщиков и навесной защиты со скриптов JavaScript. В последнее время все чаще исходный код скриптов шифруется или пакуется. Этим начали увлекаться Яндекс, DLE и другие популярные проекты, а красивые байки про "заботу о пользователях", "экономию трафика" и прочую чушь выглядят очень смешно. Что ж, если кому-то есть что скрывать, значит наша задача вывести их на чистую воду.

Начнем с теории. Из-за особенностей выполнения JavaScript все шифровщики и упаковщики, несмотря на их разнообразие, имеют всего два варианта алгоритма:или как вариант:Второй способ чаще всего используется для защиты исходного html-кода страницы, а также разными троянами для внедрения в страницу вредоносного кода, например скрытого фрейма. Оба алгоритма могут комбинироваться, "навороченность" и запутанность расшифровщика может быть любой, неизменным остается только сам принцип.

В обеих случаях получается, что функциям eval() и document.write() передаются полностью расшифрованные данные. Как их перехватить? Попробуйте заменить eval() на alert() , и в открывшемся MessageBox"е вы сразу увидите расшифрованный текст. Некоторые браузеры позволяют копировать текст из MessageBox"ов, но лучше воспользоваться таким вот полуавтоматическим декодером:

  • < html >
  • < head >< title > JavaScript Decoder
  • < body >
  • < script type = "text/javascript" >
  • // Функция записи в лог результатов расшифровки
  • function decoder (str ) {
  • document . getElementById ("decoded" ). value += str + "\n" ;
  • < textarea id = "decoded" style = "width:900px; height:500px;" >
  • < script type = "text/javascript" >
  • Для примера возьмем какой-нибудь скрипт с Яндекса, посмотрев исходный код видим что-то нездоровое:

    Eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!
    "".replace(/^/,String)){while(c--)r=k[c]||e(c);k=}];e=function(){return"\w+"};c=1};while(c--)if(k[c])
    p=p.replace(new RegExp("\b"+e(c)+"\b","g"),k[c]);return p}("$.1e
    .18=8(j){3 k=j["6-9"]||"#6-9";3 l=j["6-L"]||".u-L";3 m=j["6-L-17"]
    ||"";3 n=j["1d"]||0;$(5).2(".6-9").14("7");$(5).2(".6-9").Z("7",8(
    ){3 a=$(5).x();3 o=$(5).x();3 h=$(5).B("C");$(5).v("g-4");$(5).16(
    $(k).q());3 t=$(o).2("15");3 c=$(o).2(".b-r");3 d=$(o).2(".b-12");
    [остальной такой же бред отрезан]

    Сразу скажу, что этот скрипт обработан JavaScript Compressor , его легко узнать по сигнатуре - характерному названию фукнции в начале скрипта. Копируем целиком исходный текст скрипта, заменяем первый eval на decoder , вставляем в декодер и сохраняем его как html-страничку.Открываем ее в любом браузере и видим, что в textarea сразу появился распакованный скрипт. Радоваться пока рано, в нем убраны все переносы строчек и форматирование кода. Как с этим бороться написано в статье про деобфускацию .

    Второй пример. Вот html-страничка , накрытая программой HTML Protector. Это страница, демонстрирующая возможности программы, поэтому там задействованы все опции: блокировка выделения и копирования текста, запрет правой кнопки мыши, защита картинок, скрытие строки состояния, шифрование html-кода и т.д. Открываем исходный код, смотрим. В самом верху уже знакомый нам document.write и зашифрованный скрипт. Запускаем его через декодер, получаем функцию расшифровки основного содержимого:

    Code (JavaScript) :

  • hp_ok = true ;function hp_d01 (s ){ ... вырезано ... o = ar . join ("" )+ os ; document . write (o )
  • Заменяем в функции последний document.write на decoder и вставляем после нее все три оставшихся зашифрованных скрипта:

  • < script type = "text/javascript" >
  • // Сюда вставить зашифрованный скрипт, предварительно
  • // заменить в нем все вызовы eval() и document.write() на decoder().
  • hp_ok = true ;function hp_d01 (s ){ .... o = ar . join ("" )+ os ; decoder (o );
  • hp_d01 (unescape (">QAPKRV%22NCLEWC ....
  • hp_d01 (unescape (">QAPKRV%22NCLEWCEG? HctcQa ...
  • hp_d01 (unescape (">`mf{%22`eamnmp? !DDDDDD %22v ...
  • Для удобства в статье скрипты приводятся не полностью, вы же должны копировать их целиком. Открываем декодер в браузере и видим защитные скрипты, добавленные программой, и расшифрованный исходный текст страницы. Для удобства можно расшифровывать только третий скрипт, в котором содержится html-код страницы. Вот и вся защита. Как видите, ничего сложного. Аналогично снимаются и другие защиты html-страниц.

    От ручной расшифровки перейдем к автоматической. Для снятия защит первого типа я немного модифицировал уже известный вам скрипт Beautify Javascript и откомпилировал его в exe-файл. Он без проблем справляется с большинством виденных мной защит и упаковщиков JavaScript.

    Eval.JavaScript.Unpacker.1.1-PCL.rar (12,124 bytes)


    Для более сложных случаев придется пускать в ход тяжелую артиллерию. Это бесплатный проект , предназначенный для исследования троянов и другого вредоносного кода. Поскольку все программы, предназначенные для защиты авторского права, являются однозначно вредоносными, Malzilla поможет нам в борьбе с ними. Качаем (на сегодняшний день это 1.2.0), распаковываем, запускаем. Открываем вторую вкладку Decoder, в верхнее окно вставляем код зашифрованного скрипта, нажимаем кнопочку Run script .



    В папке eval_temp складываются все результаты выполнения функций eval(), в том числе и промежуточные. Их можно посмотреть, нажав на кнопку Show eval() results , текст откроется в нижнем окне. Его можно скопировать, вставить в верхнее окно и сразу же отформатировать нажатием кнопки Format code . Кроме декодера Malzilla имеет еще множество инструментов и настроек, позволяющих легко снять любую защиту со скриптов JavaScript.



    Также можно обратить внимание на еще один бесплатный инструмент для работы с зашифрованными скриптами - FreShow . Функций в нем поменьше, но вполне имеет место быть. С офсайта можно скачать демонстрационный ролик, показывающий пример работы с программой.

    Как видите, нет ничего сложного в снятии защиты со скриптов JavaScript и с html-страниц. Вы все еще продолжаете защищать свои поганые "аффтарские права"? Тогда мы идем к вам!