
Инструмент, который отслеживает, анализирует и ограничивает пропускную способность устройств в локальной сети без административного доступа

Этот проект — поддерживаемый форк bitbrute/evillimiter. Исходный репозиторий больше не поддерживается, поэтому этот форк продолжает разработку — исправление ошибок, новые функции и обновления совместимости. См. раздел Изменения в форке ниже.
Инструмент для мониторинга, анализа и ограничения пропускной способности (загрузка/выгрузка) устройств в вашей локальной сети без физического или административного доступа.
evillimiter использует ARP-спуфинг и формирование трафика для ограничения пропускной способности хостов в сети. В сетях с поддержкой IPv6 наряду с ARP-спуфингом используется NDP-спуфинг, чтобы также отсекать IPv6-трафик хоста, который в противном случае обходил бы ограничение/блокировку, работающую только для IPv4.
Ищете версию, совместимую с Windows?
Ознакомьтесь с альтернативой с открытым исходным кодом EvilLimiter for Windows.
Запускайте это только против сети, которой вы владеете или на тестирование которой у вас есть письменное разрешение. ARP- и NDP-спуфинг по своей сути нарушает чужой трафик, и делать это в сети, которой вы не управляете, в большинстве мест незаконно.
Возможно отсутствующие пакеты Python будут установлены в процессе установки.
evillimiter находит tc, iptables и sysctl через PATH при запуске и выдаёт понятную ошибку, если какой-то из них отсутствует. Он обращается именно к бинарнику iptables — на дистрибутивах, где iptables является совместимым шлюзом iptables-nft, это обычно работает, но межсетевой экран, управляемый исключительно через нативные правила nft без установленного шлюза iptables, этот инструмент не поддерживает.
git clone https://github.com/DavidsonRafaelK/evillimiter.git
cd evillimiter
python3 -m venv .venv
source .venv/bin/activate
pip install .
Запускайте с помощью sudo (raw-сокеты, iptables/tc требуют прав root) — root нужен для запуска, а не для установки:
sudo .venv/bin/evillimiter
Примечание: sudo python3 setup.py install (старая инструкция) устарел в современных версиях setuptools и часто полностью завершается ошибкой ModuleNotFoundError: No module named 'setuptools' — sudo запускает системный Python, в котором обычно не установлен setuptools, в отличие от Python внутри venv, которым управляет pip. На дистрибутивах, применяющих PEP 668 (Arch, Debian 12+ и др.), установка вне venv по этой причине полностью заблокирована.
В качестве альтернативы вы можете скачать нужную версию со страницы релизов.
Введите evillimiter или python3 bin/evillimiter для запуска инструмента.
evillimiter попытается самостоятельно автоматически определить необходимую информацию (сетевой интерфейс, маску подсети, адрес шлюза и т. д.).
| Аргумент | Описание |
|---|---|
-h | Показывает справочное сообщение со всеми аргументами командной строки |
-i [Имя интерфейса] | Указывает сетевой интерфейс (определяется автоматически, если не указан) |
-g [IP-адрес шлюза] | Указывает IP-адрес шлюза (определяется автоматически, если не указан) |
-m [MAC-адрес шлюза] | Указывает MAC-адрес шлюза (определяется автоматически, если не указан) |
-n [Адрес маски подсети] | Указывает маску подсети (определяется автоматически, если не указана) |
-f | Сбрасывает текущую конфигурацию iptables и tc. Гарантирует корректную обработку пакетов. |
--colorless | Отключает цветной вывод |
-l [Путь к файлу], --log-file [Путь к файлу] | Также добавляет каждое сообщение об успехе/ошибке в этот файл (обычный текст, без цветовых кодов). |
--version | Выводит установленную версию и завершает работу. |
Любому из флагов выше (кроме -f/--flush, который является разовым действием, а не сохраняемой настройкой) можно задать значение по умолчанию в необязательном ini-файле по пути ~/.config/evillimiter/config.ini (или $XDG_CONFIG_HOME/evillimiter/config.ini). Флаг командной строки всегда имеет приоритет над файлом конфигурации.
[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] задаёт начальные значения, которые обычно устанавливаются во время выполнения через watch set interval/watch set range (см. ниже), чтобы их не нужно было вводить заново в каждой сессии.
auto_scan (опционально, по умолчанию выключено) автоматически выполняет scan, а затем hosts сразу после запуска, чтобы вам не приходилось вводить их в каждой сессии.
evillimiter