
Ferramenta que monitora, analisa e limita a largura de banda de dispositivos na rede local sem acesso administrativo

Este projeto é um fork mantido do bitbrute/evillimiter. O repositório upstream não é mais mantido, portanto este fork dá continuidade ao desenvolvimento — correções de bugs, novos recursos e atualizações de compatibilidade. Consulte Alterações específicas do fork abaixo.
Uma ferramenta para monitorar, analisar e limitar a largura de banda (upload/download) de dispositivos na sua rede local sem acesso físico ou administrativo.
evillimiter utiliza ARP spoofing e traffic shaping para limitar a largura de banda dos hosts na rede. Em redes habilitadas para IPv6, o NDP spoofing é usado em conjunto com o ARP spoofing para também cortar o tráfego IPv6 de um host, que de outra forma contornaria o limite/bloqueio apenas IPv4.
Procurando uma versão compatível com Windows?
Confira a alternativa de código aberto EvilLimiter para Windows.
Execute isso apenas em uma rede que você possua ou para a qual tenha permissão por escrito para testar. O ARP e o NDP spoofing interrompem o tráfego de outras pessoas por design, e fazer isso em uma rede que você não controla é ilegal na maioria dos lugares.
Pacotes Python possivelmente ausentes serão instalados durante o processo de instalação.
O evillimiter localiza tc, iptables e sysctl via PATH na inicialização e gera erros claros se algum estiver ausente. Ele executa o binário iptables especificamente — em distribuições onde iptables é um shim de compatibilidade iptables-nft isso geralmente funciona, mas um firewall gerenciado puramente por regras nativas nft sem shim iptables instalado não é algo com que esta ferramenta interaja.
git clone https://github.com/DavidsonRafaelK/evillimiter.git
cd evillimiter
python3 -m venv .venv
source .venv/bin/activate
pip install .
Execute com sudo (raw sockets, iptables/tc exigem root) — é a execução que precisa de root, não a instalação:
sudo .venv/bin/evillimiter
Nota: sudo python3 setup.py install (as instruções antigas) está obsoleto no setuptools moderno e frequentemente falha diretamente com ModuleNotFoundError: No module named 'setuptools' — o sudo executa o Python do sistema, que normalmente não tem setuptools instalado, ao contrário do Python do venv que o pip gerencia para você. Em distribuições que aplicam o PEP 668 (Arch, Debian 12+, ...), instalar fora de um venv é totalmente bloqueado por esse motivo.
Alternativamente, você pode baixar uma versão desejada na página de Releases.
Digite evillimiter ou python3 bin/evillimiter para executar a ferramenta.
O evillimiter tentará resolver as informações necessárias (interface de rede, máscara de rede, endereço do gateway, ...) por conta própria, automaticamente.
| Argumento | Explicação |
|---|---|
-h | Exibe mensagem de ajuda listando todos os argumentos de linha de comando |
-i [Nome da Interface] | Especifica a interface de rede (resolvida se não especificada) |
-g [Endereço IP do Gateway] | Especifica o endereço IP do gateway (resolvido se não especificado) |
-m [Endereço MAC do Gateway] | Especifica o endereço MAC do gateway (resolvido se não especificado) |
-n [Endereço da Máscara] | Especifica a máscara de rede (resolvida se não especificada) |
-f | Limpa a configuração atual de iptables e tc. Garante que os pacotes sejam tratados corretamente. |
--colorless | Desativa a saída colorida |
-l [Caminho do Arquivo], --log-file [Caminho do Arquivo] | Também anexa cada mensagem de ok/erro a este arquivo (texto simples, sem códigos de cor). |
--version | Exibe a versão instalada e sai. |
Qualquer uma das opções acima (exceto -f/--flush, que é uma ação única, não uma preferência persistida) pode receber um padrão em um arquivo ini opcional em ~/.config/evillimiter/config.ini (ou $XDG_CONFIG_HOME/evillimiter/config.ini). Uma opção de linha de comando sempre substitui o arquivo de configuração.
[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] define os valores iniciais normalmente definidos em tempo de execução via watch set interval/watch set range (veja abaixo), para que não precisem ser reinseridos a cada sessão.
auto_scan (opt-in, desativado por padrão) executa scan e depois hosts automaticamente logo após a inicialização, para que você não precise digitá-los a cada sessão.
evillimiter