🧅
Знакомься: onion-gen - Fast Tor v3 onion vanity address generator.
Кто поднимал сервис в Tor, знает, как выглядит его адрес: 56 случайных символов, которые не запомнить и не продиктовать. Но адрес можно «выбрать» — перебирать ключи, пока не попадётся тот, что начинается с нужного слова. Этим и занимается onion-gen.
Инструменты для этого есть давно, самый известный — mkp224o (написан на Си). Мне хотелось, чтобы было быстрее, работало на видеокартах без возни со сборкой и умело искать не только начало адреса.
Что у меня получилось (фичи и фишки):⚡️ На процессоре — до 3,9 раза быстрее mkp224o. На видеокарте — 1,86 млрд вариантов в секунду на RTX 4060 и 255 млн на M1 Pro. С prefix32 на CPU идём примерно вровень, но он не работает на маке, все замеры лежат в
README.
🎮 CUDA, Metal, Vulkan и OpenCL в одном файле, ничего не надо собирать под свою карту — нужен только драйвер. Нет видеокарты — считает процессор.
🔍 Суффикс, подстрока, маски вроде t[eo]st и регулярки. Словарь на тысячу слов работает с той же скоростью, что одно слово, а находки идут в тысячу раз чаще.
🌐 Если одной машины мало — есть режим master/worker, то есть можно делать поиск распределенный, метрики для Prometheus и Helm-чарт. Находки можно складывать в SQLite, PostgreSQL или MySQL.
🛡 Остановленный поиск продолжается с того же места, а verify проверяет ключи сторонней реализацией — чтобы быстро проверить найденные ключи, что они корректные.
🚀
Как попробовать Сборки для Linux, macOS и Windows, amd64 и arm64: бинарник со
страницы релизов 📥
Для Linux и MacOS можно через Homebrew 🍺
brew install mihalych-pro/tap/onion-gen
Есть подписанный через cosign 🐳Docker образ:
docker run ghcr.io/mihalych-pro/onion-gen
Пример запуска: onion-gen -d ./keys -n 1 -F test
В папке keys будет всё, что нужно tor: копируете в HiddenServiceDir — и готово.
⚠️ Важно: секретный ключ и есть адрес. У кого файл — тот владеет адресом навсегда, отозвать нельзя. Так что не свети приватным ключом)
👨💻 Код открыт (Rust, Apache 2.0):
github.com/mihalych-pro/onion-genЗвёздочки, issue и любая обратная связь очень помогут — особенно замеры с вашего железа 🙌