Эта статья - дополнение к статье про деобфускацию скриптов. Здесь будут рассмотрены основные принципы шифровки и упаковки, слабые места защит, способы ручного снятия, а также универсальные инструменты для автоматического снятия упаковщиков и навесной защиты со скриптов JavaScript. В последнее время все чаще исходный код скриптов шифруется или пакуется. Этим начали увлекаться Яндекс, DLE и другие популярные проекты, а красивые байки про "заботу о пользователях", "экономию трафика" и прочую чушь выглядят очень смешно. Что ж, если кому-то есть что скрывать, значит наша задача вывести их на чистую воду.
Начнем с теории. Из-за особенностей выполнения JavaScript все шифровщики и упаковщики, несмотря на их разнообразие, имеют всего два варианта алгоритма:или как вариант:Второй способ чаще всего используется для защиты исходного html-кода страницы, а также разными троянами для внедрения в страницу вредоносного кода, например скрытого фрейма. Оба алгоритма могут комбинироваться, "навороченность" и запутанность расшифровщика может быть любой, неизменным остается только сам принцип.
В обеих случаях получается, что функциям eval() и document.write() передаются полностью расшифрованные данные. Как их перехватить? Попробуйте заменить eval() на alert() , и в открывшемся MessageBox"е вы сразу увидите расшифрованный текст. Некоторые браузеры позволяют копировать текст из MessageBox"ов, но лучше воспользоваться таким вот полуавтоматическим декодером:
- < html >
- < head >< title > JavaScript Decoder title > head >
- < body >
- < script type = "text/javascript" >
- // Функция записи в лог результатов расшифровки
- function decoder (str ) {
- document . getElementById ("decoded" ). value += str + "\n" ;
- < textarea id = "decoded" style = "width:900px; height:500px;" > textarea >
- < script type = "text/javascript" >
- body >
- html >
Для примера возьмем какой-нибудь скрипт с Яндекса, посмотрев исходный код видим что-то нездоровое:
Сразу скажу, что этот скрипт обработан 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-страниц. Вы все еще продолжаете защищать свои поганые "аффтарские права"? Тогда мы идем к вам!
Просматривая бесчисленное множество сайтов в интернете, можно встретить такие, которые очень нам нравятся. Сразу же возникает ряд вопросов. Сайт сделан с помощью самописного кода или какой-нибудь 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. Таким образом, вы в любое время сможете изучить её глубже и найти больше полезной для себя информации.
HTML код это по сути и есть сама ваша страничка, он указывает то, как именно ваш сайт будет строиться и отображаться на дисплее пользователя. Как правило, этот код открытый, то есть любой пользователь может беспрепятственно его увидеть и прочитать. Если же вы по тем или иным причинам не желаете того, чтобы кто-угодно имел доступ к вашему коду , вы можете . Это подразумевает собой создание особого алгоритма, который кодирует ваш код , то есть прячет его первичный вид, делая недоступным для пользователей сайта.Когда и кому это может понадобится?
Сделать такое шифрование может абсолютно любой веб-мастер или владелец сайта. Вопрос в том, на сколько это обоснованно и нужно. К примеру, если у вас обычная лендинг-страничка, сделанная по шаблону, и которая не отличается от других, нету смысла заниматься кодировкой, так как такой шаблон и так является общедоступным. В таком случае вряд ли кто-то будет заниматься копированием и изучением вашего кода. А вот если у вас сайт, который имеет уникальный дизайн, вы долго и кропотливо над ним трудились, или заплатили за это немалые деньги, то о кода все же стоит подумать. Очень часты случаи, когда владелец имеет сайт, в который было вложено немало сил, времени и денег, и через некоторое время тем или иным образом обнаруживает точно такой же сайт, с таким же дизайном и структурой, но на другом домене и хостинге. Очень часто владельцам сайтов об этом говорят в комментариях сами пользователи. В этом случае можно смело сделать вывод, что кто-то попросту скопировал HTML код вашего сайта и запустил его на своем.Что же делать чтобы обезопасить себя?
От ситуаций копирования и использования без разрешения чужого HTML кода не так уж и просто себя обезопасить. Да и вообще если человек уже увидел ваш сайт, он даже и без кода сможет его дублировать, при условии наличия определенных знаний в сфере веб-разработки. Но, что касается самого HTML кода, то его можно зашифровать. Работает это на основе специального javascript-скрипта. С помощью нашего инструмента вы . При этом создается специальный скрипт, который предназначен для расшифровки. Работает это довольно-таки просто: когда посетитель переходит на ваш сайт, загружается зашифрованный код, понять который он не сможет. В этот же момент запускается созданный javascript, который расшифровывает код и отображает сайт на экране пользователя. При этом, сам посетитель не может увидеть настоящий код. Однако, в этом методе есть и небольшой недостаток. Есть пользователи в браузерах которых запрещен запуск javascript на сайте, в таком случае скрипт не запустится, соответственно HTML код не расшифруется и сайт не будет отображен. Но, расстраиваться не стоит, такая настройка браузеров встречается очень редко, можно сказать что на 99% браузерах разрешен запуск javascript.Как это сделать?
Делается это очень просто, с помощью нашего инструмента. Все что от вас требуется это вставить ваш HTML код в поле на этой страничке, и нажать на кнопку для запуска шифрования. В результате, в другом поле вы получите уже зашифрованный код, который уже можно использовать непосредственно на вашем сайте. Введите текст для шифрования:Для чего предназначен инструмент "Шифровальщик html"?
Инструмент "Шифровальщик html " будет полезен веб-мастерам, которые хотят защитить свои программные продукты от поисковых роботов, хакеров и любителей воспользоваться результатами чужого труда. Речь идет о защите HTML-кода, который на большинстве ресурсов находится в свободном доступе, и его легко может воспроизвести любой желающий. С помощью инструмента "Шифровальщик (Encoder) для HTML" вы без лишних усилий сможете обфусцировать (зашифровать, запутать) исходный HTML –код.
На самом деле, энкодером можно защитить все, что отображается на страницах сайтов: тексты, изображения и прочие элементы веб-страницы, созданные с помощью языка программирования HTML (HyperText Markup Language). Или CSS-коды (Cascading Style Sheets) – особые таблицы, в которых код прописывается один раз и сохраняется в отдельном файле.
Как это работает?
Инструмент "Шифровальщик html" позволяет преобразовать исходный код программного продукта так, чтобы его функциональность сохранилась, а анализ и расшифровка кода третьими лицами или роботами стал практически невозможен.
В первую очередь, в защите нуждаются HTML-код страницы и код CSS, то есть те программные продукты, которые может увидеть на своем компьютере конечный пользователь. Конечно, 100%-ной защиты кода от сервисов-шифровальщиков ожидать не следует, но и облегчать жизнь любителям легкой наживы тоже не стоит. Поэтому введите текст для шифрования в поле, которое вы видите ниже, и нажмите кнопку "Закодировать". В результате вы получите новый текст, зашифрованный через JavaScript, который не смогут прочитать посетители вашего ресурса и поисковые роботы.
Стоит ли перестраховываться и шифровать все подряд?
На наш взгляд, защищать нужно не только ценные программные продукты, которые являются дорогостоящей интеллектуальной собственностью, но и просто удачные проекты, в которые вложено немало усилий и времени. Навряд ли кто-то будет заниматься копированием программы, написанной по шаблону. А вот воспользоваться "красивым" кодом или скопировать удачный дизайн сайта захотят многие. Именно в таких случаях вам поможет наш инструмент "Шифровальщик html". Когда пользователь зайдет на ваш сайт, он увидит лишь зашифрованный код, а "за кулисами" браузера в это же время javascript расшифрует код и отобразит страницы ресурса в надлежащем виде.
Стоит отметить, что такой метод шифрования имеет свои минусы. Например, если в браузере пользователя запуск javascript запрещен, то сайт не отобразится. К счастью, такое встречается довольно редко.
Mozilla FireFox раскройте в меню раздел «Вид» и щелкните пункт «Исходный код ». Такой же пункт есть и в контекстном меню, которое , если щелкнуть правой кнопкой мыши текст страницы. Можно использовать и сочетание клавиш CTRL + U. Mozilla FireFox при этом не использует внешних программ - исходный код страницы с подсветкой синтаксиса будет открыт в отдельном окне браузера.
В обозревателе Internet Explorer щелкните в меню раздел «Файл» и выберите «Править в Блокнот». Вместо названия Блокнот может быть написана другая , вы назначили в настройках браузера для просмотра исходного кода. По щелчку страницы правой кнопкой мыши выпадает контекстное меню, в котором тоже есть пункт, позволяющий открыть исходный код страницы во внешней программе - «Просмотр HTML-кода».
В браузере Opera откройте меню, перейдите в раздел «Страница» и у вас будет возможность выбрать в подразделе «Средства разработки» пункт «Исходный код» или пункт «Исходный код фрейма». Такому выбору назначены горячие клавиши CTRL + U и CTRL + SHIFT + U соответственно. В контекстном меню, привязанном к щелчку страницы правой кнопкой мыши, тоже есть пункт «Исходный код». Opera открывает исходник страницы во внешней программе, которая назначена в ОС или в настройках браузера для редактирования HTML-файлов.
Браузер Google Chrome безо всяких сомнений имеет лучшую организацию просмотра исходного кода. Щелкнув страницу правой кнопкой мыши, вы можете выбрать пункт «Просмотра кода страницы» и тогда исходник с подсветкой синтаксиса будет открыт на отдельной вкладке. А можете выбрать в том же меню строку «Просмотр кода элемента» и браузер в этой же вкладке откроет два дополнительных фрейма, в которых вы можете инспектировать HTML- и CSS-код любого элемента страницы. Браузер будет реагировать на перемещение курсора по строкам кода, подсвечивая на странице элементы, соответствующие этому участку HTML-кода.