Хардуер и гейминг

Редакция Overclock.bg ·

Хакер побра 537 000 домейна в 5-доларов ESP32 донгъл за блокиране на реклами

Хакер побра 537 000 домейна в 5-доларов ESP32 донгъл за блокиране на реклами

Разработчик под името M-Abozaid показа нещо, което на пръв поглед звучи невъзможно: пълноценен блокировач на реклами от класа на Pi-hole, побран в мъничък ESP32-C3 чип за около 2–5 долара (приблизително €2–5). Firmware-ът пази 537 000 домейна, използва едва ~50KB RAM и отговаря на блокирана DNS заявка за около 10 милисекунди — при това без нито един байт PSRAM. Историята беше подхваната от Tom’s Hardware, който описва устройството като 5-доларов донгъл.

Какво прави устройството

Проектът работи като DNS sinkhole — точно както Pi-hole на Raspberry Pi. Когато телефонът или лаптопът ви пита „към кой IP адрес води ads.example.com”, донгълът проверява домейна в своя списък. Ако е рекламен или тракер, връща 0.0.0.0 и заявката отива в нищото. Ако домейнът е чист, ESP32 просто препраща запитването към нормален DNS сървър нагоре по веригата.

Резултатът е, че рекламите изчезват за всички устройства в мрежата ви — без разширение в браузъра и без софтуер на всяка машина.

Защо е впечатляващо: хешове вместо текст

Тук е истинският трик. Класическите блокировачи зареждат целия списък с домейни като текст в паметта, а списъците често надхвърлят половин милион записа. За ESP32-C3, който разполага с шепа килобайти RAM, това е абсолютно немислимо.

Вместо това M-Abozaid не пази самите домейни. Всеки домейн се прекарва през 40-битов FNV-1a хеш — тоест се свежда до само 5 байта. Тези хешове се подреждат сортирани във флаш паметта, а не в RAM. За около 141 000 домейна това заема едва ~0,67 MB флаш; целите 537 000 се събират спокойно.

Проверката става с двоично търсене директно във флаша: логаритмична сложност, която намира (или отхвърля) домейн за около 10 ms, без изобщо да товари оперативната памет. Затова RAM отпечатъкът остава около 50KB.

домейн → FNV-1a (40 бита / 5 байта) → сортиран масив във флаш → binary search

Цената на този подход са колизиите — два различни домейна, дали един и същ хеш. По данни на автора те са 0 при 141 000 домейна и само 1 при пълните 537 000. Тоест в най-лошия случай един-единствен легитимен домейн може да бъде надблокиран. Приемлив компромис за чип за няколко долара.

Контрастът е забавен: докато новите GPU залежават заради скъпата DRAM памет, тук някой прави мрежов блокировач в 50 килобайта.

Уеб табло и удобства

Устройството не е само команден ред. Firmware-ът включва уеб табло, достъпно през mDNS на адрес c3adblock.local, което показва:

  • брой блокирани и позволени заявки за всеки клиент в мрежата;
  • възможност да баннете конкретно устройство;
  • добавяне на собствени домейни в черния списък;
  • OTA обновления на firmware-а и на самия blocklist;
  • разписание за автоматично изтегляне на нови списъци.

Проектът е с отворен код под лиценз MIT и е публикуван в GitHub, заедно с STL файл за 3D-принтиран корпус за платката ESP32-C3 SuperMini.

Защо това има значение

Pi-hole отдавна е любимец на домашните мрежи, но изисква Raspberry Pi, който днес струва десетки евра и консумира осезаемо повече ток. Този проект показва, че същата идея се събира в устройство, което е практически безплатно, работи от USB порт и не се нуждае от активно охлаждане.

По-широкият урок е инженерен: умната структура от данни бие суровата мощ. С правилния хеш и двоично търсене във флаш паметта дори чип за 2 долара се справя със задача, за която обикновено хвърляме цял мини-компютър. Ако търсите уикенд проект за домашната мрежа — този вероятно е един от най-изгодните.

Харесва ви? Отбележете ни и ще ни виждате по-нагоре в Google.

Предпочитан източник в Google

Прочетете още