
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, ...).
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.
evillimitertc/iptables qui régulent le trafic sont limitées à l'IPv4.watch (qui fait correspondre par MAC) ne peut pas les suivre ; l'ancienne restriction reste liée à une MAC/IP que plus personne n'utilise. Ces adresses sont signalées comme (aléatoire) dans le tableau hosts (leur bit d'administration locale est défini) pour repérer un appareil susceptible de réapparaître sous une nouvelle identité.Tout ce qui suit a été ajouté dans ce fork, en plus de la dernière version en amont (v1.5.0) :
limit/block couvrent également le trafic IPv6 d'un hôte au lieu de seulement l'IPv4~/.config/evillimiter/config.ini) pour les indicateurs par défaut et les paramètres de surveillance-l/--log-file pour consigner les messages ok/erreur dans un fichier--versionblock bloque désormais aussi les chaînes INPUT/OUTPUT (trafic vers/depuis la machine elle-même), pas seulement FORWARDwatch affiche désormais l'état En ligne/Hors ligne de chaque hôte surveillé et surveille automatiquement les hôtes lors d'un limit/blockVoir CHANGELOG pour l'historique complet des versions, y compris celui de l'amont.
Vous souhaitez signaler un bug, demander une fonctionnalité ou soumettre une pull request ? Consultez CONTRIBUTING.md pour les règles concernant le dépôt de problèmes et l'ouverture de PR. Veuillez également lire le Code de conduite.
Evil Limiter — créé à l'origine par bitbrute, désormais maintenu par DavidsonRafaelK — est fourni « tel quel » et « avec tous ses défauts ». Ni l'auteur original ni le mainteneur actuel ne font de déclarations ou de garanties d'aucune sorte concernant la sécurité, l'adéquation, l'absence de virus, les inexactitudes, les erreurs typographiques ou d'autres composants nuisibles de ce logiciel. L'utilisation de tout logiciel comporte des dangers inhérents, et vous êtes seul responsable de déterminer si Evil Limiter est compatible avec votre équipement et les autres logiciels installés sur votre équipement. Vous êtes également seul responsable de la protection de votre équipement et de la sauvegarde de vos données, et aucune des parties ne sera tenue responsable des dommages que vous pourriez subir en lien avec l'utilisation, la modification ou la distribution de ce logiciel.
Copyright (c) 2019-2026 par bitbrute, copyright (c) 2026 par DavidsonRafaelK pour les modifications spécifiques au fork. Certains droits réservés.
Evil Limiter est sous licence MIT comme indiqué dans le fichier LICENSE.
| 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. |
| Commande | Explication |
|---|
scan (--range [Plage IP]) (--intensity [1,2,3]) | Analyse votre réseau à la recherche d'hôtes en ligne. L'une des premières choses à faire après le démarrage.--range permet de spécifier une plage IP personnalisée.--intensity fait un compromis entre vitesse et exhaustivité : 1 rapide, 2 normal (par défaut), 3 intense (plus de nouvelles tentatives/délai d'attente plus long, utile sur les réseaux avec pertes). Persistant jusqu'à modification — s'applique également aux analyses de reconnexion en arrière-plan de watch.Par exemple : scan --range 192.168.178.1-192.168.178.40 ou simplement scan pour analyser tout le sous-réseau. |
hosts (--force) | Affiche tous les hôtes/appareils précédemment analysés et leurs informations de base. Affiche l'ID de chaque hôte nécessaire pour interagir.--force force l'affichage du tableau, même s'il ne tient pas dans le terminal. |
limit [ID1,ID2,...] [Débit] (--upload) (--download) | Limite la bande passante du/des hôte(s) associé(s) à l'ID spécifié. Le débit détermine la vitesse Internet. Le(s) hôte(s) est/sont automatiquement ajouté(s) à la liste de surveillance.--upload limite uniquement le trafic sortant.--download limite uniquement le trafic entrant.Débits valides : bit, kbit, mbit, gbitLe débit peut aussi être up/down (ex. 200kbit/1mbit) pour des débits d'envoi/téléchargement indépendants — valide uniquement avec les deux directions (sans --upload/--download).Par exemple : limit 4,5,6 200kbit ou limit all 1gbit ou limit 4 200kbit/1mbit |
block [ID1,ID2,...] (--upload) (--download) | Bloque la connexion Internet du/des hôte(s) associé(s) à l'ID spécifié. Le(s) hôte(s) est/sont automatiquement ajouté(s) à la liste de surveillance.--upload limite uniquement le trafic sortant--download limite uniquement le trafic entrant. |
netem [ID1,ID2,...] (--delay [ms]) (--loss [%]) (--clear) | Simule un délai/des pertes de paquets sur le(s) hôte(s) — nécessite que l'hôte soit déjà limité, car cela s'attache à la classe tc de limitation existante. S'attache aux directions dans lesquelles l'hôte est limité ; pas d'indicateur de direction séparé.--clear supprime netem tout en conservant la limitation de débit.Par exemple : netem 4 --delay 200ms --loss 10% ou netem 4 --clear |
free [ID1,ID2,...] | Lève la limitation/le blocage du/des hôte(s) associé(s) à l'ID spécifié. Supprime toutes les restrictions supplémentaires. |
add [IP] (--mac [MAC]) | Ajoute un hôte personnalisé à la liste des hôtes. L'adresse MAC sera résolue automatiquement ou peut être spécifiée manuellement. Par exemple : add 192.168.178.24 ou add 192.168.1.50 --mac 1c:fc:bc:2d:a6:37 |
monitor (--interval [temps en ms]) | Surveille l'utilisation de la bande passante de chaque hôte découvert, pas seulement ceux limités/bloqués (utilisation actuelle, bande passante totale utilisée, ...).--interval définit l'intervalle de rafraîchissement des informations de bande passante en millisecondes (500 ms par défaut).Par exemple : monitor --interval 1000 |
analyze [ID1,ID2,...] (--duration [temps en s]) | Analyse le trafic du/des hôte(s) sans le(s) limiter pour déterminer qui utilise quelle bande passante.--duration spécifie la durée de l'analyse en secondes (30 s par défaut).Par exemple : analyze 2,3 --duration 120 |
watch | Affiche l'état actuel de la surveillance, y compris l'état En ligne/Hors ligne de chaque hôte surveillé selon la dernière analyse. La fonction de surveillance détecte quand un hôte se reconnecte avec une adresse IP différente. Les hôtes sont ajoutés automatiquement à la liste de surveillance lors d'un limit ou block. |
watch add [ID1,ID2,...] | Ajoute le(s) hôte(s) spécifié(s) à la liste de surveillance. Par exemple : watch add 6,7,8 |
watch remove [ID1,ID2,...] | Retire le(s) hôte(s) spécifié(s) de la liste de surveillance. Par exemple : watch remove all |
watch set [Attribut] [Valeur] | Modifie les paramètres de surveillance actuels. Les attributs suivants peuvent être modifiés :range est la plage IP à analyser pour détecter les reconnexions.interval est le temps d'attente entre chaque analyse réseau (en secondes).Par exemple : watch set interval 120 |
clear | Efface la fenêtre du terminal. |
quit | Quitte l'application. |
?, help | Affiche des informations sur les commandes similaires à celles-ci. |
limit/block signalent les échecs tc/iptables au lieu de prétendre silencieusement avoir réussiByteValue pour les totaux dans la plage des téraoctets~/.config/evillimiter/history), navigable avec ↑/↓hosts affiche le débit/direction assigné pour les hôtes limités/bloqués, au lieu de simplement « Limited »/« Blocked »scan --intensity [1,2,3] pour faire un compromis entre vitesse d'analyse et exhaustivité (rapide/normal/intense)auto_scan pour exécuter scan puis hosts automatiquement au démarragemonitor suit chaque hôte découvert, pas seulement ceux limités/bloquéslimit accepte les débits up/down (ex. 200kbit/1mbit) pour des limites d'envoi/téléchargement indépendantes en un seul appelnetem [ID] --delay [ms] --loss [%] pour simuler un délai/des pertes de paquets sur un hôte déjà limité (--clear pour le supprimer)