2026-02-21   article

Утилита для конвертации сидов bipwords

Скрипт bipwords. Конвертирует сиды bip39 в разные системы исчисления и обратно. Написан для MacOS, подойдёт для Linux. Использует пакет qrencode (не обязательно).

В процессе работы сама скачает и сгенерирует словарь. Готовый: english-index.txt.

Формат вызова

./bipwords* [-b|-h|-d|-w] [-r] [-q] "input". Флаги:

Пример вызова: ./bipwords* -h "00a 00b 00c" (кавычки обязательны, если индексы через пробел)

Ответ: abuse access accident

Обратный вызов

Откуда взять сам ввод? Найдите индексы своих слов в желаемой системе исчисления, запишите в безопасное место через пробел или без пробелов. Словарь стандартный, количество символов в группе минимальное для поиска слова.

Для этого сделан вызов с флагом -r, который сгенерирует строку в нужной системе исчисления по словам. Есть защита от неверного слова. От слов важны только первые четыре символа, другие не нужны и игнорируются.

Пример:

./bipwords -h -r "abuse access accident" или ./bipwords -h -r "abus acce acci"

Ответ: 00a 00b 00c

Как работает

При каждом запуске проверяет, есть ли словарь english-index.txt. Если нет, скачивает стандартный словарь bip-0039/english с GitHub. Проставляет индексы вида

00000001001 0010 00a abuse
00000001010 0011 00b access
00000001011 0012 00c accident

Бинарные индексы идут от 0, потому что максимальное слово занимает 11 бит из всех единиц. Это настоящие индексы слов. Остальные системы начинаются с 1 (например, как в Krux).

Дальше:

Как видно, с флагом -h ищет по колонке hex-значений (третья), тогда находит, что 00a - это abuse. В сиде 12 или 24 слова, но скрипт работает с любым количеством.

С флагом -r разбивает ввод по пробелам, ищет слова у которых первые четыре символа совпадают с первыми четырьмя символами какого-то слова. Прибавляет к результату индекс слова в запрошенной системе исчисления.

Зачем

В первую очередь для себя. Люблю поиграть в прятки сидов. Главное, не спрятать от себя, поэтому методы только прикрывают "природу" данных, но не дают настоящей безопасности. Их по-прежнему нежелательно хранить в цифровом виде.

Зато при офлайн-хранении они не выглядят как "о, это слова от кошелька!". Уже все знают, что 12/24 слова = деньги. Но мало кто разберётся в цветах CSS-файла, неприметных пикселях фотографии, шахматных позициях (больше всего интересных вариантов с hex-системой). А ведь есть ещё pass-phrase...

Даже без инструмента слова несложно конвертировать, скрипт только автоматизирует процесс. Достаточно словаря и поиска по файлу, чтобы делать то же самое.