Архивация и шифрования JavaScript Архивирование JavaScript-а дело на мой взгляд неблагодарное. Бо разархивировать его придется средствами того-же JavaScript. При этом достигается эффект некого шифрования. Как показывает практика – далеко не у всех хватает ума или знаний расшифровать подобный заархивированный скрипт. Но о расшифровке я расскажу потом. Сейчас речь о шифровании или архивирвоании. Не суть важно как назвать :) Для того чтобы сделать из вашего скрипта какую-то неудобочитаемую хрень, которая однако будет работать, можно написать подобный архиватор самому. А можно воспользоваться уже готовым скриптом и быстренько зашифровать свой JavaScript. Пользоваться сим делом достаточно просто – нужно скопировать свой код в верхнее поле, не забыть поставить галочку Base62 encode, скопировать получившийся код из нижнего окошка.
Недавно меня попросили сделать одну простую вещь со скриптами на сайте. Естественно там все оказалось сложнее чем хотелось бы. Чуть позже я узнал что мой предшественник, что пытался разобраться с этим скриптом, не осилил уличной магии JavaScript. Основной затык, как я понимаю, был в функции eval(function(p,a,c,k,e,r){ …всякая хрень… )). Я думаю веб-разработчики видели это и знают как с этим обращаться. А для тех кто не знает, я попытаюсь пролить немного света.
Архивация и шифрования JavaScript
Архивирование JavaScript-а дело на мой взгляд неблагодарное. Бо разархивировать его придется средствами того-же JavaScript. При этом достигается эффект некого шифрования. Как показывает практика – далеко не у всех хватает ума или знаний расшифровать подобный заархивированный скрипт. Но о расшифровке я расскажу потом. Сейчас речь о шифровании или архивирвоании. Не суть важно как назвать :)
Для того чтобы сделать из вашего скрипта какую-то неудобочитаемую хрень, которая однако будет работать, можно написать подобный архиватор самому. А можно воспользоваться уже готовым скриптом и быстренько зашифровать свой JavaScript. Пользоваться сим делом достаточно просто – нужно скопировать свой код в верхнее поле, не забыть поставить галочку Base62 encode, скопировать получившийся код из нижнего окошка.
Стоит понимать – чем меньше скрипт, тем меньше эффект. Как от архивации так и от шифрования. На практике это имеет смысл использовать только для больших файлов. Этак от 300 строчек кода. К примеру сим инструментом очень активно пользуются jQuery-сты
как для самой библиотеки так и для плагинов к ней разнообразных.
Как сделать так чтобы код вернулся взад?
У большинства людей, что интересуются P.A.C.K.E.R-ом обычно стоит задача не заархивировать свой код, а разархивировать чужой. Внимательные или опытные веб-разработчики без труда смогут это сделать. Для криптоаналитиков это тоже не составит никаких проблем. А вот для начинающих программистов будет очень полезно узнать что такое команда eval и что возвращает эта страшная function(p,a,c,k,e,r){ … }
На самом деле все очень просто. Функция eval выполняет код, переданный ей в параметрах в виде строки. Функция пакера – function(p,a,c,k,e,r){ … } – возвращает строчку с кодом, который нужно выполнить. Соответственно если мы хотим прочитать код, мы можем использовать один из трех следующих вариантов:
// 1. Выводим в текстовое поле, откуда потом копируем это все
document.write('<textarea style="width:100%;height:100%">')
document.write(function(p,a,c,k,e,r){ ... всякая хрень ... })
document.write('</textarea>')
// 2. Выводим в firebug, откуда копируем код.
// Естественно firebug должен быть установлен
console.debug('Этот код был разархивирован:', function(p,a,c,k,e,r){ ... всякая хрень ... })
// 3. Просто выводим это в диалоговое окно.
// Но не все браузеры позволяют копировать текст из диалоговых окон.
alert(function(p,a,c,k,e,r){ ... всякая хрень ... })
К сожалению полученный код получится неотформатированным. Если хочется его комфортно читать и редактировать, придется перебрать код руками, сделав отступы везде где это нужно. Хотя если вам лень перебирать код руками, или вы двумя руками голосуется за автоматизацию рутинных операций – можно воспользоваться автоформатированием в своем любимом редакторе, или сходить на сайт автоформатирования для JavaScript
Вот так легко и просто мы можем получить красивый исходный код, чтобы иметь возможность сотворить с ним все, что пожелает наша душа.