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
bypass-url-parser — Testet hunderte von URL-Bypass-Techniken gegen 40X-geschützte Seiten unter Verwendung von raw curl-Anfragen, mit Multi-Mode-Scanning, Header-Spoofing und JSON/HTML-Ergebnisexport zur Bewertung der Zugriffskontrolle. | Kitploit
Tools/GitHubGitHub/laluka/bypass-url-parser
SchwachstellenanalyseInformationsbeschaffungWAF-UmgehungWebsicherheitPenetrationstests
GitHublaluka/bypass-url-parser

bypass-url-parser

Testet hunderte von URL-Bypass-Techniken gegen 40X-geschützte Seiten unter Verwendung von raw curl-Anfragen, mit Multi-Mode-Scanning, Header-Spoofing und JSON/HTML-Ergebnisexport zur Bewertung der Zugriffskontrolle.

Repository anzeigen
1.1k1225vor 1 JahrVon Kitploit geprüft
Webseite

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Bypass Url Parser

PyPI - Version PyPI - Python Version PyPI - License pdm-managed

Werkzeug, das MANY URL-Bypässe testet, um eine 40X protected page zu erreichen.

Wenn Sie sich fragen, warum dieser Code nothing but a dirty curl wrapper ist, hier ist der Grund:

  • Die meisten Python-Requests führen URL/Pfad/Parameter-Kodierung/Dekodierung durch, und ich hasse das.
  • Wenn ich rohe Zeichen übermittle, möchte ich, dass rohe Zeichen gesendet werden.
  • Wenn ich einen seltsamen Pfad sende, möchte ich ihn seltsam, nicht normalisiert.

Dies ist surprisingly hard in Python zu erreichen, ohne alle Vorzüge der Bibliothek wie Parsing, SSL/TLS-Kapselung usw. zu verlieren. Also, seien Sie wie ich, verwenden Sie , das wird schon gut gehen.

)...] [-r ] [-s ] [--spoofip-replace] [-p ] [--spoofport-replace] [-t ] [-T ] [--request-tls] [--jsonl] [--dump-payloads] [-x <proxy_url>] [-v | -d | -dd] Header(s) to use, format: "Cookie: can_i_haz=fire" -m, --mode Bypass modes. See 'Bypasser.BYPASS_MODES' in code [Default: all] -o, --outdir Output directory for results -x, --proxy <proxy_url> Set a proxy in the format http://proxy_ip:port. -S, --save-level Save results level. From 0 (DISABLE) to 3 (FULL) [Default: 2] -s, --spoofip IP(s) to inject in ip-specific headers -p, --spoofport Port(s) to inject in port-specific headers -r, --retry Retry attempts of failed requests. Set 0 to disable all retry tentatives [Default: 1] -t, --threads Scan with N parallel threads [Default: 1] -T, --timeout Request times out after N seconds [Default: 5]

curl as a backend

Außerdem kann dieses Tool als Bibliothek verwendet werden, siehe lib_sample_usage.py

Installation

Wir empfehlen die Installation mit pipx:```bash pipx install bypass-url-parser

or for the latest dev version

pipx install git+https://github.com/laluka/bypass-url-parser

root@kitploit:~
Alternativ können Sie `pip` verwenden:```bash
pip install bypass-url-parser

Verwendung```

Bypass Url Parser, made with love by @TheLaluka A tool that tests MANY url bypasses to reach a 40X protected page.

Usage: bypass-url-parser (-u | -R ) [-m ] [-o ] [-S ] [ (-H

Program options: -u, --url URL (path is optional) to run bypasses against -R, --request Load HTTP raw request from a file -H, --header

General options: -h, --help Show help, you are here :) -v, --verbose Verbose output -d, --debug Show more details like curl commands generated by this tool -dd, --debug Print Debug level 2 (with all classes debug_class output) -V, --version Show version info

Misc options: --spoofip-replace Disable list of default internal IPs in 'http_headers_ip' bypass mode --spoofport-replace Disable list of default internal ports in 'http_headers_port' bypass mode --request-tls Force usage of TLS/HTTPS for the request load with the '-R, --request' option --dump-payloads Print all payloads (curls) generated by this tool. --jsonl Print results in JSON lines format (pipe command output)

Examples: bypass-url-parser -u "http://127.0.0.1/juicy_403_endpoint/" -s 8.8.8.8 -d bypass-url-parser -u /path/urls -t 30 -T 5 -H "Cookie: me_iz=admin" -H "User-agent: test" bypass-url-parser -R /path/request_file --request-tls -m "mid_paths, end_paths"

root@kitploit:~
## Erwartetes Ergebnis```bash
bypass-url-parser -u http://127.0.0.1:8000/foo/bar
2022-08-09 14:52:40 lalu-perso bup[361559] WARNING Trying to bypass 'http://127.0.0.1:8000/foo/bar' url (3213 payloads)...
2022-08-09 14:52:40 lalu-perso bup[361559] INFO Doing: 50 / 3213
[...]
2022-08-09 14:52:54 lalu-perso bup[361559] INFO Doing: 3200 / 3213
2022-08-09 14:52:54 lalu-perso bup[361559] INFO Retry (1/3) the '16' failed curl commands with 10 threads and 10s timeout
2022-08-09 14:52:54 lalu-perso bup[361559] INFO Retry (2/3) the '16' failed curl commands with 5 threads and 20s timeout
2022-08-09 14:52:54 lalu-perso bup[361559] INFO Retry (3/3) the '16' failed curl commands with 1 threads and 30s timeout
2022-08-09 14:52:55 lalu-perso bup[361559] INFO
[#####] [bypass_method] [payload] => [status_code] [content_type] [content_length] [lines_count] [word_counts] [title] [server] [redirect_url]
[GROUP (1587)] [original_request] [http://127.0.0.1:8000/foo/bar] => [404] [text/html] [469] [14] [95] [Error response] [SimpleHTTP/0.6 Python/3.8.10] []
[GROUP (10)] [http_methods] [-X CONNECT http://127.0.0.1:8000/foo/bar] => [501] [text/html] [500] [14] [96] [Error response] [SimpleHTTP/0.6 Python/3.8.10] []
[SINGLE] [mid_paths] [http://127.0.0.1:8000/???foo/bar] => [200] [text/html] [913] [26] [27] [Directory listing for /???foo/bar] [SimpleHTTP/0.6 Python/3.8.10] []
[SINGLE] [mid_paths] [http://127.0.0.1:8000//???foo/bar] => [301] [] [] [0] [0] [] [SimpleHTTP/0.6 Python/3.8.10] [/???foo/bar]
[SINGLE] [mid_paths] [http://127.0.0.1:8000/??foo/bar] => [200] [text/html] [911] [26] [27] [Directory listing for /??foo/bar] [SimpleHTTP/0.6 Python/3.8.10] []
[SINGLE] [mid_paths] [http://127.0.0.1:8000//??foo/bar] => [301] [] [] [0] [0] [] [SimpleHTTP/0.6 Python/3.8.10] [/??foo/bar]
[SINGLE] [mid_paths] [http://127.0.0.1:8000/?foo/bar] => [200] [text/html] [909] [26] [27] [Directory listing for /?foo/bar] [SimpleHTTP/0.6 Python/3.8.10] []
[SINGLE] [mid_paths] [http://127.0.0.1:8000//?foo/bar] => [301] [] [] [0] [0] [] [SimpleHTTP/0.6 Python/3.8.10] [/?foo/bar]
[SINGLE] [mid_paths] [http://127.0.0.1:8000///?anythingfoo/bar] => [200] [text/html] [929] [26] [27] [Directory listing for ///?anythingfoo/bar] [SimpleHTTP/0.6 Python/3.8.10] []
[SINGLE] [mid_paths] [http://127.0.0.1:8000////?anythingfoo/bar] => [200] [text/html] [931] [26] [27] [Directory listing for ////?anythingfoo/bar] [SimpleHTTP/0.6 Python/3.8.10] []
[GROUP (2)] [mid_paths] [http://127.0.0.1:8000/#?foo/bar] => [200] [text/html] [893] [26] [27] [Directory listing for /] [SimpleHTTP/0.6 Python/3.8.10] []
[GROUP (2)] [mid_paths] [http://127.0.0.1:8000//#?foo/bar] => [301] [] [] [0] [0] [] [SimpleHTTP/0.6 Python/3.8.10] [/]

Einrichtung

LINUX```bash

Deps

sudo apt install -y bat curl virtualenv python3

Tool

virtualenv -p python3 .py3 source .py3/bin/activate PDM_BUILD_SCM_VERSION="$(git describe --abbrev=0)-dev" pip install .

If bup installed globally, use

python src/bypass_url_parser/init.py -u https://thinkloveshare.com/juicy_403_endpoint/

Else this should work

bypass-url-parser -u https://thinkloveshare.com/juicy_403_endpoint/ cat /tmp/tmpRANDOM-bypass-url-parser/triaged-bypass.json | jq -r '.results[].request_curl_cmd' cat /tmp/tmpRANDOM-bypass-url-parser/triaged-bypass.json | jq -r '.results[].response_data'

root@kitploit:~
### DOCKER```bash
docker run --rm -it -v "$PWD:/host" -w /host ghcr.io/laluka/bypass-url-parser:latest bash -il
# Then bup -h, keep the docker open as the output is saved by default in /tmp
# Or specify the output to the current directory, and consult them later! :)

Mehr über unterstützte Argumente

Analyse von Argumenten

Bypass_url_parser ermöglicht es, einige Argumente auf verschiedene Weisen zu definieren:

  • -m, --mode, -s, --spoofip und -p, --spoofport-Argumente können ein Dateiname, eine Zeichenkette, eine kommagetrennte Zeichenkettenliste oder eine Liste sein (wenn Bypasser als Bibliothek verwendet wird);
  • -u, --url-Argumente können ein Dateiname, eine Zeichenkette oder eine Liste sein (wenn Bypasser als Bibliothek verwendet wird);
  • stdin (mit -) wird für alle diese Argumente unterstützt.

Wenn Sie beispielsweise mehrere Ziel-URLs (-u, --url) definieren möchten, liefern alle folgenden Befehle das gleiche Ergebnis:```bash bypass-url-parser -u http://thinkloveshare.com/test bypass-url-parser -u /path/urls cat /path/urls | bypass-url-parser -u - echo 'http://thinkloveshare.com/test' | bypass-url-parser -u -

root@kitploit:~
### Zieldefinition

Ein Ziel muss definiert werden, damit das Tool funktioniert. 2 Optionen:

- `-u, --url`: URL(s), in GET
- `-R, --request`: Request-Datei. Das Protokoll kann nicht aus der Datei erraten werden, daher standardmäßig `http` oder `https`, wenn die Option `--request-tls` vorhanden ist.

### Bypass-Modus

Wenn `-m, --mode` angegeben ist, können Sie den gewünschten Bypass-Modus auswählen, um einen bestimmten Test (oder Tests) auszuführen und die Anzahl der vom Tool gesendeten Anfragen zu reduzieren.

Derzeit werden folgende Bypass-Modi unterstützt:```
all, mid_paths, end_paths, case_substitution, char_encode, http_methods, http_versions, http_headers_method, http_headers_scheme, http_headers_ip, http_headers_port, http_headers_url, user_agent

Beispiel:```bash bypass-url-parser -u /path/urls -m "case_substitution, char_encode, http_headers_scheme"

root@kitploit:~
### Spoofip / Spoofport

Um die IP-Adressen und Ports anzupassen, die bei Bypass-Versuchen verwendet werden, unterstützt das Tool die folgenden Optionen:

- Mit `-s, --spoofip` können Sie einige IP(s) festlegen, die in `ip-spezifische` Header eingefügt werden (`X-Forwarded-For`, `X-Real-Ip`, etc.)
- Mit `-p, --spoofport` können Sie einige Ports festlegen, die in `port-spezifische` Header eingefügt werden (`X-Forwarded-Port`)

Standardmäßig werden diese benutzerdefinierten Einträge zu den internen IP/Port-Listen hinzugefügt. Wenn Sie nur Ihre IP(s)/Port(s) verwenden möchten, können Sie die Argumente `--spoofip-replace` und/oder `--spoofport-replace` nutzen.

Beispiel:```bash
bypass-url-parser -u /path/urls -s /path/custom_ip --spoofip-replace
bypass-url-parser -u /path/urls -p "3000, 9443, 10443"

JSON-Lines-Ausgabe und Befehlspipen

Mit der Option --jsonl ist es möglich, die Ergebnisse im JSON-Lines-Format auf stdout auszugeben. Die normale Ausgabe und Ergebnisse des Tools werden mit einem Logger auf stderr angezeigt, sodass das JSON-Line-Ausgabeformat an andere Tools weitergeleitet werden kann:```bash bypass-url-parser -u "https://thinkloveshare.com/juicy_403_endpoint/" -t 20 -S 0 -m case_substitution,char_encode --jsonl | jq

root@kitploit:~
***Hinweise:** Mit `-S 2` oder `-S 3` enthält die JSON-Lines-Ausgabe auch den Pfad und den Namen der gespeicherten HTML-Dateien.*

### Ergebnisse speichern

Standardmäßig speichert das Tool eine Kopie der Ergebnisse im Verzeichnis `/tmp/tmpXXX-bypass-url-parser/`, wenn die Ziel-URL eindeutig ist.

***Hinweise:** Wenn mehrere Ziel-URLs mit `-u` übergeben werden, werden die Ergebnisse mit der URL als Verzeichnis versehen (`/tmp/tmpXXX-bypass-url-parser/http-target-com-8080-api-users/`).*

Es gibt zwei Argumente, um dieses Verhalten anzupassen:

- `-o, --outdir` zum Festlegen eines benutzerdefinierten Ausgabeverzeichnisses
- `-S, --save-level` zum Auswählen einer Speicherstufe

Die Speicherstufen sind:

- `0` (NONE): Ausgabe speichern und Erstellung des Ausgabeverzeichnisses deaktivieren;
- `1` (MINIMAL): Nur die Programm-Logdatei mit den Ergebnissen speichern: `triaged-bypass.log`;
- `2` (PERTINENT): Die Programm-Logdatei `triaged-bypass.log` und **relevante (Ergebnis-)** curl-Antworten in der Datei `triaged-bypass.json` und separate HTML-Dateien speichern (Standard);
- `3` (FULL): Die Programm-Logdatei `triaged-bypass.log` und **alle** curl-Antworten in der Datei `triaged-bypass.json` und separate HTML-Dateien speichern.

#### Beispiel```bash
bypass-url-parser -S 0
bypass-url-parser -S 1 -o /tmp/bypass-res
bypass-url-parser -S 2 -o /tmp/bypass-res2 -H "User-Agent: curl 7.74.0" -u http://thinkloveshare.com/juicy_403_endpoint/
tree /tmp/bypass-res2/
├── bypass-2469eecf6c38b5817d2248e911ad4382.html
├── bypass-6f7cce7caf0a0a4b440859fa189d496d.html
├── bypass-80f4ab5d32b4e74c20630c7e67f2e42f.html
├── bypass-93079abffe63d34f79ac4a511cd6b5e6.html
├── bypass-945822230d58d1ad4680d5dfbc470ecb.html
├── bypass-e6118c315eea0e5b2ebc4fcafe0559c0.html
├── triaged-bypass.json
└── triaged-bypass.log

0 directories, 8 files

Ergebnis-Export

Ab dem MINIMAL-Level werden die vom Programm angezeigten Ergebnisse in der Datei triaged-bypass.log gespeichert.

JSON-Export

Mit den Speicher-Leveln PERTINENT und FULL exportiert das Programm zusätzlich alle Ergebnisse in die Datei triaged-bypass.json:```json { "url": "http://thinkloveshare.com/juicy_403_endpoint/", "bypass_modes": "all", "results": [ { "request_curl_cmd": "/usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is -H 'X-BlueCoat-Via: localhos[...SNIP...]", "request_curl_payload": "-H X-BlueCoat-Via: localhost http://thinkloveshare.com/juicy_403_endpoint/", "response_headers": "HTTP/1.1 301 Moved Permanently\nConnection: keep-alive\nContent-Length: 162\nServer: GitHub.c[...SNIP...]", "response_data": "\n301 Moved Permanently\n\n

301 Moved Permane[...SNIP...]", "response_status_code": 301, "response_content_type": "text/html", "response_content_length": 162, "response_lines_count": 7, "response_words_count": 4, "response_title": "301 Moved Permanently", "response_server_type": "GitHub.com", "response_redirect_url": "https://thinkloveshare.com/juicy_403_endpoint/", "response_html_filename": "bypass-e6118c315eea0e5b2ebc4fcafe0559c0.html" }, { "request_curl_cmd": "/usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is -X PROPFIND http://thinklove[...SNIP...]", "request_curl_payload": "-X PROPFIND http://thinkloveshare.com/juicy_403_endpoint/", "response_headers": "HTTP/1.1 405 Method Not Allowed\nConnection: close\nContent-Length: 131\nServer: Varnish\nRet[...SNIP...]", "response_data": "\n405 Not Allowed\n<body bgcolor="white">\n

405 N[...SNIP...]", "response_status_code": 405, "response_content_type": "", "response_content_length": 131, "response_lines_count": 5, "response_words_count": 5, "response_title": "405 Not Allowed", "response_server_type": "Varnish", "response_redirect_url": "", "response_html_filename": "bypass-945822230d58d1ad4680d5dfbc470ecb.html" }, { "...": "[...SNIP...]"}, { "request_curl_cmd": "/usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is 'http://thinkloveshare.com/j[...SNIP...]", "request_curl_payload": "http://thinkloveshare.com/juicy_403_endpoint/\u00b0//", "response_headers": "HTTP/1.1 400 Bad request\nConnection: keep-alive\nContent-Length: 90\nCache-Control: no-cache[...SNIP...]", "response_data": "

400 Bad request

\nYour browser sent an invalid request.\n\n", "response_status_code": 400, "response_content_type": "text/html", "response_content_length": 90, "response_lines_count": 3, "response_words_count": 7, "response_title": "", "response_server_type": "", "response_redirect_url": "", "response_html_filename": "bypass-2469eecf6c38b5817d2248e911ad4382.html" } ] }

root@kitploit:~
Damit sie mit `jq` einfacher zu handhaben sind:```bash
$ jq -r '.results[] | [.request_curl_payload, .response_status_code, .response_content_type, .response_content_length] | join("|")' /tmp/bypass-res2/triaged-bypass.json

-H X-BlueCoat-Via: localhost http://thinkloveshare.com/juicy_403_endpoint/|301|text/html|162
-X PROPFIND http://thinkloveshare.com/juicy_403_endpoint/|405||131
http://thinkloveshare.com/%3b%2f%2e%2e%2f%2e%2e%2f%2fjuicy_403_endpoint/|400|text/html|9121
-H Host: 8.8.8.8 http://thinkloveshare.com/juicy_403_endpoint/|404|text/html|9115
-X CONNECT http://thinkloveshare.com/juicy_403_endpoint/|400|text/plain|15
http://thinkloveshare.com/juicy_403_endpoint/°//|400|text/html|90

HTML-Dateien

Mit den Speicherstufen PERTINENT und FULL werden curl-Befehle und vollständige HTTP-Antworten ebenfalls in pseudo .html-Dateien gespeichert:```bash $ echo /tmp/bypass-res2/*.html | xargs batcat ───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ File: /tmp/bypass-res2/bypass-2469eecf6c38b5817d2248e911ad4382.html ───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1 │ /usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is 'http://thinkloveshare.com/juicy_403_endpoint/°//' 2 │ 3 │ HTTP/1.1 400 Bad request 4 │ Connection: keep-alive 5 │ Content-Length: 90 6 │ Cache-Control: no-cache 7 │ Content-Type: text/html 8 │ Accept-Ranges: bytes 9 │ Date: Tue, 25 Apr 2023 23:51:38 GMT 10 │ Via: 1.1 varnish 11 │ X-Served-By: cache-par-lfpg1960025-PAR 12 │ X-Cache: MISS 13 │ X-Cache-Hits: 0 14 │ X-Timer: S1682466698.230664,VS0,VE10 15 │ Vary: Accept-Encoding 16 │ X-Fastly-Request-ID: b6bbb82302420db4f101a316dca39cc283a4fd44 17 │ 18 │

400 Bad request

19 │ Your browser sent an invalid request. 20 │ ───────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ File: /tmp/bypass-res2/bypass-6f7cce7caf0a0a4b440859fa189d496d.html ───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1 │ /usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is -X CONNECT http://thinkloveshare.com/juicy_403_endpoint/ 2 │ 3 │ HTTP/1.1 400 Bad Request 4 │ Connection: close 5 │ Content-Length: 15 6 │ content-type: text/plain; charset=utf-8 7 │ x-served-by: cache-par-lfpg1960083 8 │ 9 │ invalid request ───────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ File: /tmp/bypass-res2/bypass-80f4ab5d32b4e74c20630c7e67f2e42f.html ───────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1 │ /usr/bin/curl -sS -kgi -H 'User-Agent: curl 7.74.0' --path-as-is http://thinkloveshare.com/%3b%2f%2e%2e%2f%2e%2e%2f%2fjuicy_403_endpoint/ 2 │ 3 │ HTTP/1.1 400 Bad Request 4 │ Connection: keep-alive 5 │ Content-Length: 9121 6 │ Server: GitHub.com 7 │ Content-Type: text/html; charset=utf-8 8 │ ETag: "64417b9f-23a1" 9 │ Content-Security-Policy: default-src 'none'; style-src 'unsafe-inline'; img-src data:; connect-src 'self' 10 │ X-GitHub-Request-Id: 598E:F13E:26EE27D:284F5D2:64486731 11 │ Accept-Ranges: bytes 12 │ Date: Tue, 25 Apr 2023 23:50:11 GMT 13 │ Via: 1.1 varnish 14 │ X-Served-By: cache-par-lfpg1960046-PAR 15 │ X-Cache: MISS 16 │ X-Cache-Hits: 0 17 │ X-Timer: S1682466611.396077,VS0,VE101 18 │ Vary: Accept-Encoding 19 │ X-Fastly-Request-ID: 30bd6af5892c40da130ee49bbeacd147a1a6b3c3 20 │ 21 │ 22 │ 23 │ 24 │ 25 │ 26 │ Bad request · GitHub Pages 27 │ [...SNIP...]
root@kitploit:~
## Mitwirkende

- Erstveröffentlichung von [@TheLaluka](https://twitter.com/TheLaluka)
- Großes Refactoring & Bibliotheksmodus mit Dank an [@jtop_fap](https://twitter.com/jtop_fap)
- Unterstützung für `Docker` & `Pypi`-Builds durch die freundliche Arbeit von [@DugnyG](https://twitter.com/DugnyG)

## Lizenz

Copyright (C) 2022 Laluka

Dieses Programm ist freie Software: Sie können es unter den Bedingungen der GNU Affero General Public License, wie von der Free Software Foundation veröffentlicht, entweder Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version weitergeben und/oder modifizieren.

Dieses Programm wird in der Hoffnung verbreitet, dass es nützlich sein wird, jedoch OHNE JEGLICHE GARANTIE; selbst ohne die implizite Garantie der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Weitere Details finden Sie in der GNU Affero General Public License.

Sie sollten eine Kopie der GNU Affero General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, siehe <https://www.gnu.org/licenses/>.
Tool herunterladen