Document write unescape script type text javascript

Document write unescape script type text javascript

Почему некоторые скрипты нужно подключать так:
document.write(unescape(«%3Cscript src='» + ((«https:» == document.location.protocol) ? «https://» : «http://») +
«site.ru/scripts/script.js’ type=’text/javascript’%3E%3C/script%3E»));

Почему нельзя подключить просто, через
Тот же jQuery рекомендуют грузить так:
document.write(unescape(«%3Cscript src=’/js/jquery-1.6.1.min.js’ type=’text/javascript’%3E%3C/script%3E»));

Тебя обманули =)
Скрипт можно подключать через
И имхо: все скрипты должны быть в шапке HTML рядом с другими скриптами.

в случае с врайт результат выполнения этой js функции «впечатывается» html код на клиенте и результатом «впечатывания» можно управлять программно, в случае

Спасибо, dmitriymar, что вписывается в документ это ясно, не понятны последствия, в каких случаях недопустим вариант

Сообщение от MallSerg
И имхо: все скрипты должны быть в шапке HTML рядом с другими скриптами.
тебя обманули

Это мои собственное мнение и мне его никто не навязывал. =)
Для подключения скриптов есть общепринятое расположение в . К сожалению стандарт HTML достаточно свободен и не запрещает размещать скрипты где угодно.
Попробую привести аналогию например ходить по большому в своей квартире можно где угодно в зале на кухне или же на балконе
но имхо лучше делать это только в туалете =)))).

ПО поводу приведенного примера =)
В нем очень много плохого
1. Подключаются разные версии jQuery
2. Условие if (typeof jQuery == ‘undefined’) всегда истинно и не имеет смысла
3. сначала подключается
document.write(unescape(«%3Cscript src=’/js/jquery-1.6.1.min.js’ type=’text/javascript’%3E%3C/script%3E»));
Затем подгружается и подключается

т.е. всегда будут подключатся две библиотеки разных версий
4. document.write может уничтожить текущую страницу если на момент выполнения скрипта document.onreadystatechange == «true»

Читайте также:  Highlight row table javascript

И еще одно имхо
Ни когда не пользуйтесь советами и статьями под которыми нет комментариев

Источник

Document write unescape script type text javascript

Распаковка и расшифровка скриптов JavaScript

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

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

  1. var encrypted = ‘зашифрованные данные’ ;
  2. function decrypt ( str )
  3. // функция расшифровки или распаковки
  4. >
  5. // Выполнить расшифрованный скрипт
  6. eval( decrypt ( encrypted ));
  1. var encrypted = ‘зашифрованные данные’ ;
  2. function decrypt ( str )
  3. // функция расшифровки или распаковки
  4. >
  5. // Вывести на экран расшифрованные данные
  6. document . write ( decrypt ( encrypted ));

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

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

  1. < head >< title >JavaScript Decoder
  2. < script type = "text/javascript" >
  3. // Функция записи в лог результатов расшифровки
  4. function decoder ( str )
  5. document . getElementById ( ‘decoded’ ). value += str + ‘\n’ ;
  6. >
  7. < script type = "text/javascript" >
  8. // Сюда вставить зашифрованный скрипт, предварительно
  9. // заменить в нем все вызовы eval() и document.write() на decoder().

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

eval(function(p,a,c,k,e,r){e=function(c){return(c c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!
».replace(/^/,String))];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-страничку.

  1. < script type = "text/javascript" >
  2. // Сюда вставить зашифрованный скрипт, предварительно
  3. // заменить в нем все вызовы eval() и document.write() на decoder().
  4. decoder (function( p , a , c , k , e , r ) < e =function( c )

Открываем ее в любом браузере и видим, что в textarea сразу появился распакованный скрипт. Радоваться пока рано, в нем убраны все переносы строчек и форматирование кода. Как с этим бороться написано в статье про деобфускацию.

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

Заменяем в функции последний document.write на decoder и вставляем после нее все три оставшихся зашифрованных скрипта:

  1. < script type = "text/javascript" >
  2. // Сюда вставить зашифрованный скрипт, предварительно
  3. // заменить в нем все вызовы eval() и document.write() на decoder().
  4. hp_ok = true ;function hp_d01 ( s ) < . o = ar . join ( "" )+ os ; decoder ( o );
  5. hp_d01 ( unescape ( «>QAPKRV%22NCLEWC .
  6. hp_d01 ( unescape ( «>QAPKRV%22NCLEWCEG? HctcQa .
  7. hp_d01 ( unescape ( «>`mf

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

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

Eval JavaScript Unpacker 1.1 (pass: manhunter.ru)

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

Malzilla за работой

Malzilla за работой

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

Скрипт успешно расшифрован и отформатирован

Скрипт успешно расшифрован и отформатирован

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

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

Источник

How to decode an encoded string in JavaScript?

In JavaScript, to decode a string unescape() method is used. This method takes a string, which is encoded by escape() method, and decodes it. The hexadecimal characters in a string will be replaced by the actual characters they represent using unescape() method.

Syntax

Example

In the following the two exclamation marks have converted to hexadecimal characters using escape() method. Later on those marks were decoded in to their natural characters using unescape() method.

     

Output

Encoded : Tutorialspoint%21%21 Decoded : Tutorialspoint!!

There is an exception that the characters .(dot) and @ wont convert in to hexadecimal characters. For instance, in the following code when escape() method is used all the characters have converted to hexadecimal except .(dot) and @.

Example

     

Output

Encoded : My%20gmail%20address%20is%20robbinhood@rocketmail.com Decoded : My gmail address is robbinhood@rocketmail.com

Источник

Оцените статью