AdBlock теперь будет работать прямо в роутере

leer en español

5622
AdBlock теперь будет работать прямо в роутере

Проект получил удобную настройку, обновления по Wi-Fi и защиту опасных функций управления.

image

Блокировщик рекламы за $2, который помещается на ESP32-C3 размером с флешку, заметно повзрослел. Летняя версия проекта esp32-c3-adblock уже умела держать до 537 тыс. доменов, а нынешняя сборка получила более удобную настройку и заметно укреплённую защиту панели управления.

Фильтр работает на уровне DNS. Вместо длинного списка адресов в оперативной памяти ESP32-C3 записывает во флеш-память 40-битные хеши FNV-1a и ищет совпадения бинарным поиском. Около 140 тыс. доменов занимают примерно 0,7 МБ, на работу уходит около 50 КБ ОЗУ, а поиск занимает порядка 10 мс. При совпадении плата отвечает адресом 0.0.0.0, остальные запросы отправляет обычному DNS-серверу.

После первых публикаций проект заметно доработали. Wi-Fi теперь настраивается через локальный портал, списки блокировки и прошивку можно обновлять по воздуху, а панель показывает статистику по клиентам. Управляющие запросы требуют HTTP Basic Auth и отдельный пароль для OTA. Разработчик также закрыл путь к хранимому XSS и защитил устройство от поддельных межсайтовых запросов, поскольку раньше в локальной сети можно было менять список и даже перепрошивать плату без учётных данных.

Актуальный код проекта опубликован под лицензией MIT, а короткая видеодемонстрация показывает работу миниатюрного фильтра. Веб-панель по-прежнему использует обычный HTTP, поэтому Basic Auth не защищает от атакующего, который уже умеет перехватывать локальный трафик.

По принципу работы устройство близко к Pi-hole. DNS-фильтрация режет рекламные и трекинговые домены сразу для всей сети, включая телевизоры и IoT-устройства, но не убирает рекламу, если сервис отдаёт её с того же домена, что и основной контент.