
Outil qui surveille, analyse et limite la bande passante des appareils sur le réseau local sans accès administratif.

Ce projet est un fork maintenu de bitbrute/evillimiter. Le dépôt en amont n'est plus maintenu, ce fork poursuit donc le développement — corrections de bugs, nouvelles fonctionnalités et mises à jour de compatibilité. Voir Modifications spécifiques au fork ci-dessous.
Un outil pour surveiller, analyser et limiter la bande passante (téléchargement/envoi) des appareils de votre réseau local sans accès physique ou administratif.
evillimiter utilise l'empoisonnement ARP et la régulation de trafic pour limiter la bande passante des hôtes du réseau. Sur les réseaux compatibles IPv6, l'empoisonnement NDP est utilisé en complément de l'empoisonnement ARP pour également couper le trafic IPv6 d'un hôte, qui contournerait sinon la limite/blocage limité à l'IPv4.
Vous cherchez une version compatible Windows ?
Consultez l'alternative open source EvilLimiter pour Windows.
N'utilisez cet outil que sur un réseau dont vous êtes propriétaire ou pour lequel vous avez une autorisation écrite de test. L'empoisonnement ARP et NDP perturbe volontairement le trafic d'autrui, et l'utiliser sur un réseau que vous ne contrôlez pas est illégal dans la plupart des pays.
Les paquets Python éventuellement manquants seront installés pendant le processus d'installation.
evillimiter localise tc, iptables et sysctl via PATH au démarrage et signale clairement une erreur si l'un d'eux manque. Il fait appel au binaire iptables spécifiquement — sur les distributions où iptables est un shim de compatibilité iptables-nft, cela fonctionne généralement, mais un pare-feu géré uniquement via des règles nft natives sans shim iptables installé n'est pas pris en charge par cet outil.
git clone https://github.com/DavidsonRafaelK/evillimiter.git
cd evillimiter
python3 -m venv .venv
source .venv/bin/activate
pip install .
Exécutez-le avec sudo (les sockets bruts, iptables/tc nécessitent les droits root) — c'est l'exécution qui nécessite root, pas l'installation :
sudo .venv/bin/evillimiter
Remarque : sudo python3 setup.py install (les anciennes instructions) est obsolète dans les setuptools modernes et échoue souvent avec ModuleNotFoundError: No module named 'setuptools' — sudo exécute le Python système, qui n'a généralement pas setuptools installé, contrairement au Python du venv géré par pip. Sur les distributions qui appliquent la PEP 668 (Arch, Debian 12+, ...), l'installation hors venv est entièrement bloquée pour cette raison.
Vous pouvez également télécharger une version souhaitée depuis la page des versions.
Tapez evillimiter ou python3 bin/evillimiter pour exécuter l'outil.
evillimiter tentera de résoudre automatiquement les informations requises (interface réseau, masque de sous-réseau, adresse de passerelle, ...).
| Argument | Explication |
|---|---|
-h | Affiche le message d'aide listant tous les arguments de ligne de commande |
-i [Nom de l'interface] | Spécifie l'interface réseau (résolue si non spécifiée) |
-g [Adresse IP de la passerelle] | Spécifie l'adresse IP de la passerelle (résolue si non spécifiée) |
-m [Adresse MAC de la passerelle] | Spécifie l'adresse MAC de la passerelle (résolue si non spécifiée) |
-n [Adresse du masque] | Spécifie le masque de sous-réseau (résolu si non spécifié) |
-f | Vide la configuration iptables et tc actuelle. Garantit que les paquets sont traités correctement. |
--colorless | Désactive la sortie colorée |
-l [Chemin du fichier], --log-file [Chemin du fichier] | Ajoute également chaque message ok/erreur à ce fichier (texte brut, sans codes de couleur). |
--version | Affiche la version installée puis quitte. |
Chacun des indicateurs ci-dessus (sauf -f/--flush, qui est une action ponctuelle et non une préférence persistante) peut recevoir une valeur par défaut dans un fichier ini optionnel situé à ~/.config/evillimiter/config.ini (ou $XDG_CONFIG_HOME/evillimiter/config.ini). Un argument de ligne de commande a toujours priorité sur le fichier de configuration.
[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] définit les valeurs initiales normalement configurées à l'exécution via watch set interval/watch set range (voir ci-dessous), afin de ne pas avoir à les ressaisir à chaque session.
auto_scan (optionnel, désactivé par défaut) exécute scan puis hosts automatiquement juste après le démarrage, pour éviter de les taper à chaque session.
evillimiter