Хитрый хакер разместил 537 000 рекламных доменов в блокировщик размером с флешку — и всё это за смешные $5

leer en español

13074
Хитрый хакер разместил 537 000 рекламных доменов в блокировщик размером с флешку — и всё это за смешные $5

Как урезать блокировщик рекламы до размера флешки и не потерять мощность

image

Египетский разработчик ZedAxis собрал на микроконтроллере ESP32-C3 фильтр рекламы, который блокирует более 537 тыс. доменов и стоит около $5.

Устройство работает как резервный сервер доменных имён для домашней сети. Основную фильтрацию у разработчика выполняет Pi-hole на одноплатном компьютере Raspberry Pi, а миниатюрная плата подменяет его во время перезагрузки или отключения. Благодаря такой схеме домашние устройства не переключаются на обычный сервер без блокировки рекламы.

ESP32-C3 располагает лишь 400 КБ оперативной и 4 МБ флеш-памяти, поэтому сохранить сотни тысяч адресов в обычном текстовом виде невозможно. Разработчик решил хранить не сами домены, а их короткие цифровые отпечатки длиной 40 бит. Вариант на 32 бита давал бы слишком много совпадений, а 64-битные значения заняли бы лишнее место.

Фильтр рекламы на базе платы ESP32-C3

Фильтр рекламы на базе платы ESP32-C3 (ZedAxis)

Перед загрузкой базы программа скачивает открытые списки блокировки, удаляет комментарии и повторяющиеся записи, а затем преобразует каждый домен в цифровой отпечаток. Получившиеся значения сортируются и записываются во флеш-память платы. Когда в сеть поступает запрос, ESP32 таким же способом обрабатывает адрес сайта и ищет совпадение в базе. Найденный домен блокируется, остальные запросы перенаправляются на внешний сервер.

По словам ZedAxis, программа занимает около 50 КБ оперативной памяти, а на ответ на запрос к заблокированному домену уходит примерно 10 миллисекунд. На плате также работает простая панель управления, где можно посмотреть статистику и добавить собственные адреса в список блокировки.

Количество доменов зависит от разметки памяти. Обычно ESP32 хранит две копии программы, чтобы безопасно устанавливать обновления по беспроводной сети. Если сохранить такую возможность, в базу помещается около 250 тыс. адресов. Если отказаться от беспроводных обновлений и отдать второй раздел под список блокировки, ёмкость вырастает примерно до 537 тыс. доменов.

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

ZedAxis подключил устройство к разъёму USB на домашнем оптическом маршрутизаторе Huawei OptiXstar. Разъём передаёт только питание, а обмен данными проходит через встроенный модуль Wi-Fi. В результате небольшой фильтр почти полностью скрывается за маршрутизатором и продолжает блокировать рекламу даже при временном отключении основного сервера.