
Strumento che monitora, analizza e limita la larghezza di banda dei dispositivi sulla rete locale senza accesso amministrativo

Questo progetto è un fork mantenuto di bitbrute/evillimiter. Il repository upstream non è più mantenuto, quindi questo fork ne prosegue lo sviluppo - correzioni di bug, nuove funzionalità e aggiornamenti di compatibilità. Vedi Modifiche specifiche del fork qui sotto.
Uno strumento per monitorare, analizzare e limitare la larghezza di banda (upload/download) dei dispositivi sulla tua rete locale senza accesso fisico o amministrativo.
evillimiter utilizza lo spoofing ARP e il traffic shaping per limitare la larghezza di banda degli host sulla rete. Sulle reti con IPv6 abilitato, lo spoofing NDP viene utilizzato insieme allo spoofing ARP per interrompere anche il traffico IPv6 di un host, che altrimenti aggirerebbe il limite/blocco limitato al solo IPv4.
Cerchi una versione compatibile con Windows?
Dai un'occhiata all'alternativa open-source EvilLimiter per Windows.
Esegui questo strumento solo su una rete di tua proprietà o per la quale hai ricevuto autorizzazione scritta per i test. Lo spoofing ARP e NDP interrompe di proposito il traffico di altre persone, e farlo su una rete che non controlli è illegale nella maggior parte dei luoghi.
I pacchetti Python eventualmente mancanti verranno installati durante il processo di installazione.
evillimiter individua tc, iptables e sysctl tramite PATH all'avvio e segnala chiaramente un errore se uno di essi manca. Esegue specificamente il binario iptables - sulle distribuzioni dove iptables è uno shim di compatibilità iptables-nft questo generalmente funziona, ma un firewall gestito esclusivamente tramite regole nft native senza shim iptables installato non è qualcosa con cui questo strumento interagisce.
git clone https://github.com/DavidsonRafaelK/evillimiter.git
cd evillimiter
python3 -m venv .venv
source .venv/bin/activate
pip install .
Eseguilo con sudo (i raw socket, iptables/tc richiedono i privilegi di root) - è l'esecuzione che richiede root, non l'installazione:
sudo .venv/bin/evillimiter
Nota: sudo python3 setup.py install (le vecchie istruzioni) è deprecato nei setuptools moderni e spesso fallisce direttamente con ModuleNotFoundError: No module named 'setuptools' - sudo esegue il Python di sistema, che di solito non ha setuptools installato, a differenza del Python del venv che pip gestisce per te. Sulle distribuzioni che applicano il PEP 668 (Arch, Debian 12+, ...), l'installazione al di fuori di un venv è completamente bloccata per questo motivo.
In alternativa, puoi scaricare una versione desiderata dalla pagina delle Release.
Digita evillimiter o python3 bin/evillimiter per eseguire lo strumento.
evillimiter tenterà di risolvere automaticamente le informazioni richieste (interfaccia di rete, netmask, indirizzo del gateway, ...).
A qualsiasi dei flag sopra (eccetto -f/--flush, che è un'azione singola, non una preferenza persistente) può essere assegnato un valore predefinito in un file ini opzionale in ~/.config/evillimiter/config.ini (o $XDG_CONFIG_HOME/evillimiter/config.ini). Un flag da riga di comando ha sempre la precedenza sul file di configurazione.
[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] imposta i valori iniziali normalmente configurati a runtime tramite watch set interval/watch set range (vedi sotto), così non devono essere reinseriti a ogni sessione.
auto_scan (opt-in, disattivato di default) esegue scan e poi hosts automaticamente subito dopo l'avvio, così non devi digitarli a ogni sessione.
evillimitertc/iptables che modellano il traffico sono solo IPv4.watch (che abbina per MAC) non può seguirli; la restrizione precedente rimane legata a un MAC/IP che nessuno usa più. Tali indirizzi vengono contrassegnati come (random) nella tabella hosts (il loro bit di amministrazione locale è impostato) così puoi individuare un dispositivo che probabilmente riapparirà con una nuova identità.Tutto ciò che segue è stato aggiunto in questo fork, in aggiunta all'ultima release upstream (v1.5.0):
limit/block coprono anche il traffico IPv6 di un host invece del solo IPv4~/.config/evillimiter/config.ini) per flag predefiniti e impostazioni del watch-l/--log-file per salvare i messaggi ok/errore su un file--versionblock ora blocca anche le catene INPUT/OUTPUT (traffico verso/da questa stessa macchina), non solo FORWARDwatch ora mostra lo stato Online/Offline di ogni host osservato e osserva automaticamente gli host su limit/blockVedi CHANGELOG per la cronologia completa delle versioni, inclusa quella upstream.
Vuoi segnalare un bug, richiedere una funzionalità o inviare una pull request? Vedi CONTRIBUTING.md per le regole su come aprire issue e PR. Leggi anche il Codice di Condotta.
Evil Limiter - originariamente creato da bitbrute, ora mantenuto da DavidsonRafaelK - è fornito "così com'è" e "con tutti i difetti". Né l'autore originale né il mantenitore attuale forniscono dichiarazioni o garanzie di alcun tipo riguardo alla sicurezza, idoneità, assenza di virus, imprecisioni, errori tipografici o altri componenti dannosi di questo software. Ci sono pericoli intrinseci nell'uso di qualsiasi software, e sei l'unico responsabile di determinare se Evil Limiter è compatibile con la tua attrezzatura e con altro software installato sulla tua attrezzatura. Sei anche l'unico responsabile della protezione della tua attrezzatura e del backup dei tuoi dati, e nessuna delle parti sarà ritenuta responsabile per eventuali danni che potresti subire in relazione all'uso, alla modifica o alla distribuzione di questo software.
Copyright (c) 2019-2026 di bitbrute, copyright (c) 2026 di DavidsonRafaelK per le modifiche specifiche del fork. Alcuni diritti riservati.
Evil Limiter è concesso in licenza sotto la MIT License come indicato nel file LICENSE.
| Argomento | Spiegazione |
|---|
-h | Mostra il messaggio di aiuto con tutti gli argomenti da riga di comando |
-i [Nome Interfaccia] | Specifica l'interfaccia di rete (risolta se non specificata) |
-g [Indirizzo IP Gateway] | Specifica l'indirizzo IP del gateway (risolto se non specificato) |
-m [Indirizzo MAC Gateway] | Specifica l'indirizzo MAC del gateway (risolto se non specificato) |
-n [Indirizzo Netmask] | Specifica la netmask (risolta se non specificata) |
-f | Svuota la configurazione corrente di iptables e tc. Garantisce che i pacchetti vengano gestiti correttamente. |
--colorless | Disabilita l'output colorato |
-l [Percorso File], --log-file [Percorso File] | Aggiunge anche ogni messaggio ok/errore a questo file (testo semplice, senza codici colore). |
--version | Stampa la versione installata ed esce. |
| Comando | Spiegazione |
|---|
scan (--range [Intervallo IP]) (--intensity [1,2,3]) | Scansiona la tua rete per host online. Una delle prime cose da fare dopo l'avvio.--range ti permette di specificare un intervallo IP personalizzato.--intensity scambia velocità con accuratezza: 1 rapido, 2 normale (default), 3 intenso (più tentativi/timeout più lungo, utile su reti con perdita di pacchetti). Persistente finché non viene modificato di nuovo - si applica anche alle scansioni di riconnessione in background di watch.Per esempio: scan --range 192.168.178.1-192.168.178.40 o semplicemente scan per scansionare l'intera sottorete. |
hosts (--force) | Mostra tutti gli host/dispositivi precedentemente scansionati e le informazioni di base. Mostra l'ID per ogni host necessario per l'interazione.--force forza la visualizzazione della tabella, anche quando non si adatta al terminale. |
limit [ID1,ID2,...] [Velocità] (--upload) (--download) | Limita la larghezza di banda degli host associati agli ID specificati. La velocità determina la velocità internet. Gli host vengono automaticamente aggiunti alla watchlist.--upload limita solo il traffico in uscita.--download limita solo il traffico in entrata.Velocità valide: bit, kbit, mbit, gbitLa velocità può anche essere up/down (es. 200kbit/1mbit) per velocità di upload/download indipendenti - valida solo con entrambe le direzioni (senza --upload/--download).Per esempio: limit 4,5,6 200kbit o limit all 1gbit o limit 4 200kbit/1mbit |
block [ID1,ID2,...] (--upload) (--download) | Blocca la connessione internet degli host associati agli ID specificati. Gli host vengono automaticamente aggiunti alla watchlist.--upload limita solo il traffico in uscita --download limita solo il traffico in entrata. |
netem [ID1,ID2,...] (--delay [ms]) (--loss [%]) (--clear) | Emula ritardo/perdita di pacchetti sugli host - richiede che l'host sia già stato limitato, poiché si aggancia alla classe tc di limitazione della velocità esistente. Si aggancia a qualunque direzione in cui l'host è limitato; nessun flag di direzione separato.--clear rimuove netem lasciando il limite di velocità in posizione.Per esempio: netem 4 --delay 200ms --loss 10% o netem 4 --clear |
free [ID1,ID2,...] | Rimuove il limite/blocco dagli host associati agli ID specificati. Rimuove tutte le ulteriori restrizioni. |
add [IP] (--mac [MAC]) | Aggiunge un host personalizzato alla lista host. L'indirizzo MAC verrà risolto automaticamente o può essere specificato manualmente. Per esempio: add 192.168.178.24 o add 192.168.1.50 --mac 1c:fc:bc:2d:a6:37 |
monitor (--interval [tempo in ms]) | Monitora l'utilizzo della larghezza di banda di ogni host scoperto, non solo di quelli limitati/bloccati (utilizzo corrente, larghezza di banda totale utilizzata, ...).--interval imposta l'intervallo dopo il quale le informazioni sulla larghezza di banda vengono aggiornate in millisecondi (default 500ms).Per esempio: monitor --interval 1000 |
analyze [ID1,ID2,...] (--duration [tempo in s]) | Analizza il traffico degli host senza limitarli per determinare chi usa quanta larghezza di banda.--duration specifica la durata dell'analisi in secondi (default 30s).Per esempio: analyze 2,3 --duration 120 |
watch | Mostra lo stato attuale del watch, incluso lo stato Online/Offline di ogni host osservato dall'ultima scansione. La funzione watch rileva quando un host si riconnette con un indirizzo IP diverso. Gli host vengono aggiunti alla watchlist automaticamente dopo limit o block. |
watch add [ID1,ID2,...] | Aggiunge gli host specificati alla watchlist. Per esempio: watch add 6,7,8 |
watch remove [ID1,ID2,...] | Rimuove gli host specificati dalla watchlist. Per esempio: watch remove all |
watch set [Attributo] [Valore] | Modifica le impostazioni correnti del watch. I seguenti attributi possono essere modificati:range è l'intervallo IP da scansionare per le riconnessioni.interval è il tempo di attesa tra ogni scansione di rete (in secondi).Per esempio: watch set interval 120 |
clear | Pulisce la finestra del terminale. |
quit | Esce dall'applicazione. |
?, help | Mostra informazioni sui comandi simili a questa tabella. |
limit/block segnalano i fallimenti di tc/iptables invece di dichiarare silenziosamente il successoByteValue per i totali nell'intervallo dei terabyte~/.config/evillimiter/history), navigabile con ↑/↓hosts mostra la velocità/direzione assegnata per gli host limitati/bloccati, invece di solo "Limited"/"Blocked"scan --intensity [1,2,3] per scambiare la velocità di scansione con l'accuratezza (rapido/normale/intenso)auto_scan per eseguire scan e poi hosts automaticamente all'avviomonitor traccia ogni host scoperto, non solo quelli limitati/bloccatilimit accetta velocità up/down (es. 200kbit/1mbit) per limiti di upload/download indipendenti in un'unica chiamatanetem [ID] --delay [ms] --loss [%] per emulare ritardo/perdita di pacchetti su un host già limitato (--clear per rimuoverlo)