Hashcat на Game Boy Advance уже не шутка из чата, а рабочий проект. Security engineer solstICE, также известный как Ice, портировал утилиту для подбора хешей паролей на консоль Nintendo с ARM-чипом 16,8 МГц.
Результат получился честно смешной: оригинальная GBA перебирает SHA256 со скоростью 727 хешей/с. По оценке автора, год такой работы равен одной секунде современного GPU-рига. Разница — около 30 млн раз.
16,8 МГц против современных GPU
В обычной практике hashcat запускают на видеокартах, потому что подбор паролей быстро упирается в вычисления. Современные алгоритмы хеширования усложняют перебор. Поэтому перенос на старую карманную консоль выглядит как инженерная шутка с рабочим кодом.
Железо объясняет почти всё. Game Boy Advance работает на ARM7TDMI, это 32-битный RISC-процессор с частотой 16,8 МГц. При этом большинство шин данных и памяти у консоли 16-битные. Памяти тоже мало: 288 КБ RAM и 98 КБ VRAM.
Типичный GPU-риг берёт скоростью и параллельностью. GBA берёт только упрямством. Поэтому проект ценен не практической пользой, а чистой демонстрацией: hashcat можно ужать до платформы, где каждый килобайт заметен.
Словарь на миллион паролей занял 8 МБ
Парольные утилиты часто ускоряют перебор заранее подготовленными таблицами и словарями. На GBA такой роскоши нет: стандартные картриджи ограничены 32 МБ. Поэтому Ice положил в сборку ignis-1M — список из одного миллиона вариантов. Он занимает 8 МБ.
Само приложение получилось маленьким. Автор использовал Butano engine — библиотеку для разработки под GBA на обычном C++. Интерфейс тоже без украшений: стартовый экран, статистика прогресса и текущая попытка пароля.
Для реальных атак на сложные пароли скорости не хватает. Зато порт хорошо показывает разницу эпох. На ПК мы обсуждаем ядра CUDA, энергопотребление и охлаждение. Тут разработчик упёрся в 288 КБ RAM, 32 МБ картриджа и 16-битные ограничения шины.
Ice в коммите назвал gba-hashcat «самым тупым приложением за всё время». Формулировка грубая, но точная по настроению. Для тех, кто помнит картриджи, это почти бенчмарк из параллельной вселенной.
Код gba-hashcat опубликован на GitHub; заявленная производительность на оригинальной Game Boy Advance — 727 SHA256-хешей в секунду, а комплектный словарь ignis-1M занимает 8 МБ.