
Tool, das die Bandbreite von Geräten im lokalen Netzwerk ohne Administratorzugriff überwacht, analysiert und begrenzt

Dieses Projekt ist ein gepflegter Fork von bitbrute/evillimiter. Das Upstream-Repository wird nicht mehr gepflegt, daher setzt dieser Fork die Entwicklung fort – Fehlerbehebungen, neue Funktionen und Kompatibilitätsupdates. Siehe Fork-spezifische Änderungen unten.
Ein Werkzeug zur Überwachung, Analyse und Begrenzung der Bandbreite (Upload/Download) von Geräten in Ihrem lokalen Netzwerk ohne physischen oder administrativen Zugriff.
evillimiter verwendet ARP-Spoofing und Traffic Shaping, um die Bandbreite von Hosts im Netzwerk zu drosseln. In Netzwerken mit IPv6-Unterstützung wird NDP-Spoofing zusätzlich zum ARP-Spoofing eingesetzt, um auch den IPv6-Verkehr eines Hosts zu unterbrechen, der ansonsten die rein IPv4-basierte Begrenzung/Sperre umgehen würde.
Auf der Suche nach einer Windows-kompatiblen Version?
Schauen Sie sich die Open-Source-Alternative EvilLimiter für Windows an.
Führen Sie dies nur gegen ein Netzwerk aus, das Ihnen gehört oder für dessen Test Sie eine schriftliche Genehmigung haben. ARP- und NDP-Spoofing stören absichtlich den Verkehr anderer Personen, und dies in einem Netzwerk zu tun, das Sie nicht kontrollieren, ist in den meisten Ländern illegal.
Möglicherweise fehlende Python-Pakete werden während des Installationsprozesses installiert.
evillimiter findet tc, iptables und sysctl über PATH beim Start und meldet einen klaren Fehler, wenn eines fehlt. Es greift gezielt auf die iptables-Binärdatei zu – auf Distributionen, auf denen iptables ein iptables-nft-Kompatibilitäts-Shim ist, funktioniert dies in der Regel, aber eine Firewall, die ausschließlich über native nft-Regeln ohne installierten iptables-Shim verwaltet wird, wird von diesem Werkzeug nicht angesprochen.
git clone https://github.com/DavidsonRafaelK/evillimiter.git
cd evillimiter
python3 -m venv .venv
source .venv/bin/activate
pip install .
Führen Sie es mit sudo aus (Raw-Sockets, iptables/tc benötigen Root-Rechte) – es ist die Ausführung, die Root benötigt, nicht die Installation:
sudo .venv/bin/evillimiter
Hinweis: sudo python3 setup.py install (die alten Anweisungen) ist in modernen setuptools veraltet und schlägt oft direkt mit ModuleNotFoundError: No module named 'setuptools' fehl – sudo führt das System-Python aus, das normalerweise kein setuptools installiert hat, im Gegensatz zum eigenen Python der venv, das pip für Sie verwaltet. Auf Distributionen, die PEP 668 durchsetzen (Arch, Debian 12+, ...), ist die Installation außerhalb einer venv aus diesem Grund vollständig blockiert.
Alternativ können Sie eine gewünschte Version von der Release-Seite herunterladen.
Geben Sie evillimiter oder python3 bin/evillimiter ein, um das Werkzeug auszuführen.
evillimiter versucht, die benötigten Informationen (Netzwerkschnittstelle, Netzmaske, Gateway-Adresse, ...) automatisch selbst aufzulösen.
Jedes der obigen Flags (außer -f/--flush, das eine einmalige Aktion und keine dauerhafte Einstellung ist) kann einen Standardwert in einer optionalen ini-Datei unter ~/.config/evillimiter/config.ini (oder $XDG_CONFIG_HOME/evillimiter/config.ini) erhalten. Ein Befehlszeilenflag überschreibt die Konfigurationsdatei immer.
[general]
interface = wlan0
colorless = true
auto_scan = true
log_file = /var/log/evillimiter.log
[watch]
interval = 30
range = 192.168.1.1-192.168.1.50
[watch] legt die Anfangswerte fest, die normalerweise zur Laufzeit über watch set interval/watch set range gesetzt werden (siehe unten), sodass sie nicht bei jeder Sitzung erneut eingegeben werden müssen.
auto_scan (optional, standardmäßig deaktiviert) führt scan und dann hosts direkt nach dem Start automatisch aus, sodass Sie sie nicht bei jeder Sitzung eingeben müssen.
evillimiter-Befehletc/iptables-Regeln, die den Verkehr formen, nur IPv4 sind.watch (das nach MAC abgleicht) ihnen nicht folgen kann; die alte Einschränkung bleibt an einer MAC/IP gebunden, die niemand mehr verwendet. Solche Adressen werden in der hosts-Tabelle als (random) gekennzeichnet (ihr lokal verwaltetes Bit ist gesetzt), sodass Sie ein Gerät erkennen können, das wahrscheinlich unter neuer Identität wieder auftaucht.Alles unten wurde in diesem Fork zusätzlich zur letzten Upstream-Version (v1.5.0) hinzugefügt:
limit/block auch den IPv6-Verkehr eines Hosts abdecken, statt nur IPv4~/.config/evillimiter/config.ini) für Standardflags und Watch-Einstellungen-l/--log-file zum Speichern von OK-/Fehlermeldungen in einer Datei--version-Flagblock blockiert jetzt auch die INPUT/OUTPUT-Ketten (Verkehr zu/von dieser Maschine selbst), nicht nur FORWARDwatch zeigt jetzt den Online/Offline-Status jedes überwachten Hosts an und überwacht Hosts bei limit/block automatischSiehe CHANGELOG für die vollständige Versionshistorie, einschließlich der des Upstreams.
Möchten Sie einen Fehler melden, eine Funktion anfragen oder einen Pull-Request einreichen? Siehe CONTRIBUTING.md für die Regeln zum Einreichen von Issues und Öffnen von PRs. Bitte lesen Sie auch den Verhaltenskodex.
Evil Limiter – ursprünglich erstellt von bitbrute, jetzt gepflegt von DavidsonRafaelK – wird „wie besehen" und „mit allen Fehlern" bereitgestellt. Weder der ursprüngliche Autor noch der aktuelle Betreuer gibt Zusicherungen oder Gewährleistungen jeglicher Art hinsichtlich Sicherheit, Eignung, Fehlen von Viren, Ungenauigkeiten, Tippfehlern oder anderen schädlichen Bestandteilen dieser Software ab. Mit der Verwendung jeglicher Software sind inhärente Gefahren verbunden, und Sie sind allein dafür verantwortlich zu bestimmen, ob Evil Limiter mit Ihrer Ausrüstung und anderer auf Ihrer Ausrüstung installierter Software kompatibel ist. Sie sind außerdem allein für den Schutz Ihrer Ausrüstung und die Sicherung Ihrer Daten verantwortlich, und keine der Parteien haftet für Schäden, die Ihnen im Zusammenhang mit der Verwendung, Änderung oder Verbreitung dieser Software entstehen können.
Copyright (c) 2019-2026 von bitbrute, Copyright (c) 2026 von DavidsonRafaelK für Fork-spezifische Änderungen. Einige Rechte vorbehalten.
Evil Limiter ist unter der MIT-Lizenz lizenziert, wie in der LIZENZDATEI angegeben.
| Argument | Erklärung |
|---|
-h | Zeigt Hilfemeldung mit allen Befehlszeilenargumenten an |
-i [Schnittstellenname] | Gibt die Netzwerkschnittstelle an (wird aufgelöst, wenn nicht angegeben) |
-g [Gateway-IP-Adresse] | Gibt die Gateway-IP-Adresse an (wird aufgelöst, wenn nicht angegeben) |
-m [Gateway-MAC-Adresse] | Gibt die Gateway-MAC-Adresse an (wird aufgelöst, wenn nicht angegeben) |
-n [Netzmaske] | Gibt die Netzmaske an (wird aufgelöst, wenn nicht angegeben) |
-f | Leert die aktuelle iptables- und tc-Konfiguration. Stellt sicher, dass Pakete korrekt verarbeitet werden. |
--colorless | Deaktiviert farbige Ausgabe |
-l [Dateipfad], --log-file [Dateipfad] | Hängt zusätzlich jede OK-/Fehlermeldung an diese Datei an (Klartext, ohne Farbcodes). |
--version | Gibt die installierte Version aus und beendet das Programm. |
| Befehl | Erklärung |
|---|
scan (--range [IP-Bereich]) (--intensity [1,2,3]) | Scannt Ihr Netzwerk nach Online-Hosts. Eine der ersten Aktionen nach dem Start.--range ermöglicht die Angabe eines benutzerdefinierten IP-Bereichs.--intensity tauscht Geschwindigkeit gegen Gründlichkeit: 1 schnell, 2 normal (Standard), 3 intensiv (mehr Wiederholungen/längeres Timeout, nützlich bei verlustbehafteten Netzwerken). Bleibt bis zur nächsten Änderung aktiv – gilt auch für die Hintergrund-Reconnect-Scans von watch.Zum Beispiel: scan --range 192.168.178.1-192.168.178.40 oder einfach scan, um das gesamte Subnetz zu scannen. |
hosts (--force) | Zeigt alle zuvor gescannten Hosts/Geräte mit Basisinformationen an. Zeigt die ID für jeden Host an, die für die Interaktion erforderlich ist.--force erzwingt die Anzeige der Tabelle, auch wenn sie nicht ins Terminal passt. |
limit [ID1,ID2,...] [Rate] (--upload) (--download) | Begrenzt die Bandbreite des/der Host(s), die der angegebenen ID zugeordnet sind. Die Rate bestimmt die Internetgeschwindigkeit. Host(s) werden automatisch zur Watchlist hinzugefügt.--upload begrenzt nur ausgehenden Verkehr.--download begrenzt nur eingehenden Verkehr.Gültige Raten: bit, kbit, mbit, gbitDie Rate kann auch up/down sein (z. B. 200kbit/1mbit) für unabhängige Upload-/Download-Raten – nur gültig mit beiden Richtungen (ohne --upload/--download).Zum Beispiel: limit 4,5,6 200kbit oder limit all 1gbit oder limit 4 200kbit/1mbit |
block [ID1,ID2,...] (--upload) (--download) | Blockiert die Internetverbindung des/der Host(s), die der angegebenen ID zugeordnet sind. Host(s) werden automatisch zur Watchlist hinzugefügt.--upload begrenzt nur ausgehenden Verkehr --download begrenzt nur eingehenden Verkehr. |
netem [ID1,ID2,...] (--delay [ms]) (--loss [%]) (--clear) | Simuliert Paketverzögerung/-verlust auf Host(s) – erfordert, dass der Host bereits limited wurde, da es an die bestehende Rate-Limit-tc-Klasse anknüpft. Hängt an die Richtung(en), in der/denen der Host begrenzt ist; kein separates Richtungsflag.--clear entfernt netem, während die Ratenbegrenzung bestehen bleibt.Zum Beispiel: netem 4 --delay 200ms --loss 10% oder netem 4 --clear |
free [ID1,ID2,...] | Entfernt die Begrenzung/Sperre des/der Host(s), die der angegebenen ID zugeordnet sind. Entfernt alle weiteren Einschränkungen. |
add [IP] (--mac [MAC]) | Fügt einen benutzerdefinierten Host zur Hostliste hinzu. Die MAC-Adresse wird automatisch aufgelöst oder kann manuell angegeben werden. Zum Beispiel: add 192.168.178.24 oder add 192.168.1.50 --mac 1c:fc:bc:2d:a6:37 |
monitor (--interval [Zeit in ms]) | Überwacht die Bandbreitennutzung jedes entdeckten Hosts, nicht nur begrenzter/blockierter (aktuelle Nutzung, insgesamt verbrauchte Bandbreite, ...).--interval legt das Intervall fest, nach dem die Bandbreiteninformationen in Millisekunden aktualisiert werden (Standard 500 ms).Zum Beispiel: monitor --interval 1000 |
analyze [ID1,ID2,...] (--duration [Zeit in s]) | Analysiert den Verkehr von Host(s) ohne Begrenzung, um festzustellen, wer wie viel Bandbreite nutzt.--duration gibt die Dauer der Analyse in Sekunden an (Standard 30 s).Zum Beispiel: analyze 2,3 --duration 120 |
watch | Zeigt den aktuellen Watch-Status an, einschließlich des Online/Offline-Zustands jedes überwachten Hosts seit dem letzten Scan-Durchlauf. Die Watch-Funktion erkennt, wenn ein Host sich mit einer anderen IP-Adresse neu verbindet. Hosts werden automatisch zur Watchlist hinzugefügt, wenn limit oder block verwendet wird. |
watch add [ID1,ID2,...] | Fügt den/die angegebenen Host(s) zur Watchlist hinzu. Zum Beispiel: watch add 6,7,8 |
watch remove [ID1,ID2,...] | Entfernt den/die angegebenen Host(s) aus der Watchlist. Zum Beispiel: watch remove all |
watch set [Attribut] [Wert] | Ändert die aktuellen Watch-Einstellungen. Die folgenden Attribute können geändert werden:range ist der IP-Bereich, der nach Reconnects gescannt wird.interval ist die Wartezeit zwischen jedem Netzwerkscan (in Sekunden).Zum Beispiel: watch set interval 120 |
clear | Leert das Terminalfenster. |
quit | Beendet die Anwendung. |
?, help | Zeigt Befehlsinformationen ähnlich wie diese an. |
limit/block melden tc/iptables-Fehler, statt stillschweigend Erfolg zu behauptenByteValue-Formatierung für Summen im Terabyte-Bereich behoben~/.config/evillimiter/history), mit ↑/↓ navigierbarhosts-Tabelle zeigt die zugewiesene Rate/Richtung für begrenzte/blockierte Hosts an, statt nur „Limited"/„Blocked"scan --intensity [1,2,3], um Scangeschwindigkeit gegen Gründlichkeit zu tauschen (schnell/normal/intensiv)auto_scan-Konfigurationsoption, um scan und dann hosts automatisch beim Start auszuführenmonitor verfolgt jeden entdeckten Host, nicht nur begrenzte/blockiertelimit akzeptiert up/down-Raten (z. B. 200kbit/1mbit) für unabhängige Upload-/Download-Begrenzungen in einem Aufrufnetem [ID] --delay [ms] --loss [%] zur Simulation von Paketverzögerung/-verlust auf einem bereits begrenzten Host (--clear zum Entfernen)