• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья SEED-фразы: нестандартные подходы

lisa99

Мисс Марпл
Пользователь
Регистрация
07.02.2009
Сообщения
2 102
Решения
1
Реакции
905
Автор: lisa99
Источник https://xss.pro


1. Цели и задачи


Основные цели статьи: систематизировать информацию по seed-фразам, показать новичкам (в этой теме) какими могут быть нестандартные подходы к получению балансов, поднять вопрос о качестве отработки данных.

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

Новички часто задаются вопросом - можно ли заработать на паблике? И хотя все написанное ниже не о/для публичных данных, можно будет сделать выводы в конце статьи.

Факты. База в 6 млн сид-фраз из паблика (форумы), скинутая в здесь в ЛС юзеру («я простой отраб») принесла 300 баксов - с его слов, за счет мощного софта.

Ну и второй пример , что может дать поиск из паблика (да, с ловушками, мусором, мультисигами и проч., проч.)

ris1.jpg


Рис.1 Найденная из паблика сид-фраза в кошельке Guarda​


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

2. BIP-39 и понятие валидности seed-фраз

Большая часть добытых фраз состоит из 12 слов, реже 24, и намного реже из 15 слов в формате BIP-39, самом популярном на сегодняшний день.
Заглянем в софт для поиска сид-фраз GitHub - xssis/seed-parser _github.com/xssis/seed-parser:
Программа производит рекурсивный поиск парольных фраз от криптокошельков внутри файлов, проверяет их валидность (т.е. выдает только те фразы которые удовлетворяют стандарту bip39) и выводит парольную фразу и путь к файлу в котором она была найдена. Валидация фраз на соттветствие стандарту bip39 производится с помощью библиотеки из репозитория аппаратного криптокошелька trezor

Вполне себе типовое решение. Сид-фразы у автора валидны только если соответствуют BIP-39. Понятно, почему:​
а) проще программный код валидации, в паблике представлены множество вариантов реализации
б) большинство кошельков действительно используют BIP-39,
в) фильтр в этом формате избегает выдавать тонны мусора из случайного набора слов, чем порой грешит различный софт файлграбберов.

Намного меньше конкуренция и больше шансов найти приятные суммы, если работать с невалидными фразами, которые не очень интересны тем, кто сидит на потоке прибылей от EVM-сетей и отбрасывает фразы, проверка балансов которых затруднена.

Однако, кто-то может возразить, что даже непосредственная отработка отработанного (экспроприированного) в самых разных направлениях намного полезней и даже привести примеры из паблика вроде этих - под спойлером: полумертвые токены, ханипоты, призрачный стейкинг, мифические и не очень эйрдропы и проч., проч. Может быть и так.​

ris2.gif


Рис.2 Распространяемые сид-фразы. Цель заработка — поймать нубов на оплате за газ (автовывод)​

Во вложении - файлик с этими кошельками. Внимание — много левой инфы, заодно и примеры как debank.com может выдавать недостоверные балансы.​
Исходим из того, что абсолютное большинство фраз действительно относятся к BIP-39. Однако, если фраза не из BIP-39, то еще не значит, что перед нами мусор. Не все кошельки (и блокчейны) поддерживают BIP-39.
Общеизвестным контрпримером является Электрум.
"blue spider alarm beyond isolate rent ordinary service want fragile invite pumpkin"​

- проверка покажет невалидность в отношении BIP-39. Другие рассмотрим ниже (п.4.).
До сих пор используются варианты brainwallet-а в том или ином формате, где исходной фразой может быть что угодно, а не слова из строго утвержденного списка.

ris4.jpg

Рис.4 Сид-фраза из произвольных слов​

"QWERTY ..." стало рабочей сид-фразой современного кошелька для популярного блокчейна 2 уровня, то есть адреса, привязанные к ней в блокчейнах (BTC, ETH, ATOM, etc) сгенерированы и представлены в интерфейсе.
А вот еще пример.
.ris5-1.jpgris5.jpg

Рис.5 Мнемоника даже из 26 слов, и даже из 29

Что это значит на практике? Если чекер "стандартный", то все приведенные мнемоники он сочтет невалидными, и отбросит (как в описании выше).

Выводы. (1) невалидные фразы лучше отложитьв отдельную папочку для последующей обработки; (2) Невалидные в BIP-39 фразы, но похожие на мнемонику, нуждаются в своей классификации (да, откровенного мусора тоже хватает, который просто удаляется).


3. Под капотом криптокошелька: простая мнемоника и кривые вычисления


Немного самой базовой информации, максимально сжато, о которой нельзя не написать- для дальнейшего и потому что на форумах поднимались соответствующие вопросы, которые хочется закрыть в начале статьи по-простому.​
Самый распространенный протокол BIP-39 работает так (тоже упрощенно):
- энтропия (в криптографии): очень большое случайное число,
- мнемоническая фраза: формируется в соответствии с энтропией из зафиксированного списка слов.
- PBKDF2: стандартная криптографическая функция, аргументом которой служит строка мнемоники (в том числе).
- стрелки означают однонаправленность: мнемоника связана с энтропией двунаправленно, а вот из хеша в 512 бит(seed в шестнадцатеричной форме) получить мнемонику в формате слов уже невозможно.


ris6.gif

Рис.6


Таким образом, задача BIP-39 выдать пользователю случайную детерминированную мнемоническую фразу на определенном языке, сохранить ее локально, и сформировать из нее master-seed. И все.​
"Продолжением" BIP-39, двигаясь сверху-вниз, служит система BIP-32, и далее BIP-44 (нет на схеме) для последующего вычисления приватного, публичного ключей и адресов с учетом деривации.

Простые выводы из схемы:

1. Спор на форуме о мнемонике и приватном ключе (что из чего происходит и что важнее) решается (в BIP-39) однозначно: вначале сид-фраза, потом приватный ключ из нее, и никак не иначе.​
2. Вопросы (в частной беседе) о восстановлении сид-фразы кошельком из приват-кея (например, для эфира) также решаются однозначно: невозможно.
3. Приватный ключ у большинства монет вычисляется по-разному, хотя совпадения не исключены (отдельная тема).
4. Зная только приватный ключ кошелька (например) для btc, ни мнемонику, ни приватный ключ solana, сгенерированные в том же кошельке, что и btc, из этого ключа не получить. Барьерами стоят криптографические необратимые хеш-функции. Хотя и есть редкие исключения (о них ниже в п.5-6). Поэтому приватные ключи конкретной криптовалюты всегда менее интересны, чем сид-фразы кошельков.
5. Сколько бы слов не содержала мнемоника (12, 15 или 24), master seed используемый для приватника всегда 512 бит. Одна из причин применения хеш-функции: сериализация.
Поэтому в скриптах, использующих seed (из seed-фразы) смело можно для экспериментов брать любое число слов из любого кошелька: 12 или 24 — неважно.

Однако. Кто-то возразит, что работает с файлами приватников пакетно, без всяких кошельков и мнемоник. Да, есть такое. И особенно если речь о генерированных приватниках и поисках "мозговых кошельков" с балансами на старых адресах.​

Все изложенное оживает в "калькуляторе" BIP-39 (https://iancoleman.io/bip39/#english) где можно играться с параметрами всего - энтропии, фразы, приватных ключей (BASE58), деривации и тд.[/JUSTIFY]


4. Различные типы сид-фраз


4.1.Протоколы (алгоритмы, технологии) мнемоники
Детально проработаны, имеют свои списки слов, используют отличные от других хеш-функции. Отсортированы по степени популярности

Калькулятор: https://iancoleman.io/bip39/#english

Electrum1_wordlist https://github.com/spesmilo/electrum/blob/master/electrum/old_mnemonic.py

https://iancoleman.io/slip39/

Калькулятор: https://guggero.github.io/cryptography-toolkit/#!/aezeed
Таблица 1.​
НаименованиеБлокчейныВсего словСостав словseed-фразы, кол-во словКошельки
BIP-39 Большинство204812,15, 24Большинство
Electrum v1BTC1626свои13Electrum
PolyseedMonero2048BIP-3916,14 oldFeather, Cake Wallet
SLIP-39Любые1024BIP-3920,23,27,30,33
Aezeed Lightning Network2048BIP-3924BlueWallet


4.2.Мнемоника, формируемая отдельными кошельками/блокчейнами (не BIP39)

1.Electrum v2
. BTC (+форки LTC,DASH), используются 2048 слов BIP-39, генерация по своему алгоритму, с BIP-39 не совпадает, но может импортировать фразы BIP-39​
Генерирует сид из 12 слов, импортирует старые версии из 24 слов
2. Monero
Legacy (25 слов), MyMonero (13 слов), Polyseed (16 слов)
Feather использует Polyseed для сид-фраз из 16 слов. Версии до 2.0.0 использовали (устаревшую) библиотеку monero-seed для мнемоники из 14 слов.
https://github.com/monero-project/monero/blob/master/src/mnemonics/english_old.h

ris8.gif


Рис.8 Связь между сид-фразами одного набора ключей и адреса Монеро.

"Калькуляторы":​
4. Экзотические малопопулярные кошельки и небольшие блокчейны. Например, Zana (рис. 5).


4.3.Разное

1.Использование произвольных слов/текста в качестве сид-фраз.
Современные brainwallet'ы с разными вариантами хеширования (криптографии)​
2. Бэкапы и 2FA
а. Algorand Secure Backup - 12 words BIP-39 + файл
б. Использование двухфакторной авторизации 2FA: PIN-CODE 12*4 букв +e-mail verification. Например, кошелек Muun (btc)
Намечается некая тенденция привязки 2фа и бэкапов к кошелькам => возрастает роль стилеров/логов

5.Мультичейн-кошельки с "мульти-сидами". Algorand & Monero

Постановка текущей задачи: решение проблемы вычисления приватных ключей (сид-фраз) блокчейнов Algorand и Monero в мультичейновых кошельках.​
Вводные.
0. Во всех кошельках ниже используется сид-фраза: skin spot olympic dice column permit diagram ugly traffic gentle trend angle
1.Пусть мы имеем файлы со списком сид-фраз, которые нужно проверить. Очень вероятно, что они относятся к мнемоникам, сгенерированными популярными мультичейновыми кошельками — Trust Wallet, Exodus, Guarda, Atomic и др. (млн юзеров).
2. Кошельки (и блокчейны) Monero и Algorand не поддерживают ни формат сид-фраз (см.п.4.1-4.2), ни BIP-39, BIP-32, BIP44
Популярные криптокошельки показывают адреса, приватные ключи «нестандартных» блокчейнов, а некоторые кошельки генерируют и сид-фразы.​

ris9.gif

Рис.9 Пример сид-фразы из блокчейна Алгоранд​

Более того, разные кошельки конвертируют свои 12/24-словные мнемоники в разные адреса/приватники/мнемоники этих двух блокчейнов (нередко и для других криптовалют).
Результат работы программы (python):
Код:
BIP39 mnemonic: skin spot olympic dice column permit diagram ugly traffic gentle trend angle


Wallet:Exodus

  Algorand private key: 7167c65cefaadb6e7777cd8b08c3f4c7297e4c1651c34d39537d84c1c86d82a5
  Algorand mnemonic: until book purpose puzzle resemble sweet roof sniff badge around whip organ wisdom narrow master select claim erupt dirt blue muscle opinion clown absent nerve

Wallet:Atomic

  Algorand private key: 67cb62c307b627a19937a3a8c7baf0c6aa9bfcf135a0f7cbcf61f29b13c6eb48
  Algorand mnemonic: hollow menu ticket gather exhaust hair rubber permit vital twelve joke property dance left question parent leave dish couch sand cheese various elder able wing


Wallet:Coinomi, Trust Wallet

  Algorand private key: 3080b44b9d1c3de2d9183c2af1893a8824eb33b5ef7c76ee3faf1cf929b915ef
  Algorand mnemonic: alcohol spirit place six kick joy short despair census chief bubble embrace stone erupt laundry language solution zero fiscal mushroom fault hour judge abstract medal


Wallet:Leger

  Algorand private key: b860fef09200fcae30745a33a0df433c530c78e78432d4776fd53763cc0bee5e
  Algorand mnemonic: blade wet journey ankle way close pave foil all leader capable critic board task cheese crater whisper saddle turkey cricket occur load wash able parrot

Здесь 4 варианта мнемоник. И наверняка найдется и 5й, и 6й. Почему так происходит?

Во-первых, так проще разработчикам — использовать какой-то класс в коде, для KDF на базе криптографии конкретной эллиптической кривой (ECC) для всех случаев, где необязательно поддерживать классический BIP-44 (см.рис.6). Это истинно 100%.

А во-вторых (уже мое личное предположение), так проще привязать клиента( = =$). Что он сделает увидев нулевой баланс в другом кошельке, после переноса сид-фразы?...Останется где и был, от греха подальше - особенно если балансы раскинуты по многим токенам и отправлять их поштучно не хочется(%,$).
Упрощенная схема мультикошелька

ris10.gif

Рис.10 Уточнение схемы рис.6​

Приватные ключи разные, (см. формулу под схемой). Так как в каждом блокчейне вычисляются из хеш-функции, параметрами которой служат Key = chaincode (первый раз — правая половина master-seed), Data =паблик ключ, вычисляемый из приватного, и 32-битное число (индекс), включающее в себя как глубину в иерархии, так и индекс криптовалюты m/purpose'/coin_type'/account'/change/

Важно. Зная мастер-сид, 64 символа, программным образом можно получить приватники любой крипты кошелька, при этом не зная самой сид-фразы кошелька.

Вывод: библиотеке Алгоранда (открытой), включенной в состав мультичейнового кошелька, закрытый код кошелька может «скормить» в качестве приватного ключа любые 32 байта, полученные из общей исходной seed-фразы.

Практически все написанное об Алгоранде выше относится и к Monero (XMR) в мультивалютных кошельках.

Мне удалось подобрать кривые, получить код (питон) и потестировать его для нескольких популярных кошельков (Atomic, Coinomi, Exodus, Guarda) которые вычисляют из мнемоники BIP-39 соответствующую мнемонику (25 слов) Monero.​
В контексте главной темы статьи — мы получили примеры, как из одной сид-фразы BIP39 на практике может быть получено не менее 8 рабочих вариантов мнемонических фраз не-BIP39, связанных с исходной, для двух блокчейнов.

6. Получение новых сид-фраз путем анализа зависимостей

Давайте внимательно посмотрим на скриншот
ris12.gif

Рис.12 Алгоранд

Как и во всех кошельках, по-прежнему та же мнемоника: skin spot olympic dice column permit diagram ugly traffic gentle trend angle и ниже ее seed (hex).
Легко заметить, что приватный ключ Algorand — левая половина seed. То есть Master Priv_key всего нашего кошелька. И 25 слов — соответствующая приватному ключу мнемоника в Алгоранде. Да, в отличие от BIP-39, здесь мнемоника получается из приватного ключа. Однако, верно и обратное. Вот так

ris13.gif

Рис.13 Сид-фраза либо генерируется из энтропии, либо получается из приватного ключа​

Ниже простой код, с использованием официального SDK Algorand-a, иллюстрирующий эту схему .

Python:
import algosdk
import base64
from algosdk import encoding
from algosdk import mnemonic
import nacl
from nacl.signing import SigningKey

#генерируем случайное 32 байтное число (энтропия), считаем его приватным ключом
# Private key for producing digital signatures using the Ed25519 algorithm. - из подсказки-описания класса SigningKey
sk = SigningKey.generate()
print (bytes(sk).hex())

# вычисяем публичный ключ
vk = sk.verify_key
print (bytes(vk).hex())

# получаем адрес
addr = encoding.encode_address(vk.encode())
print (addr)

#формируем расширенный приватный ключ
print (bytes(sk.encode() + vk.encode()).hex())
private_key = base64.b64encode(sk.encode() + vk.encode()).decode()
print (private_key)
#Получаем мнемонику из приватного ключа
print (f"Mnemonika:{mnemonic.from_private_key(private_key)}")

А что это дает? Навскидку - приходит идея, что можно пойти «обратным ходом», снизу вверх. И первая (наивная) мысль — если заполучить 25 слов Алгоранда (из официального кошелька, из облака, логов и проч.), то можно же добраться и до мастер-сид (снизу-вверх) всего кошелька, со всеми его балансами(!). Но, увы, нет... Так как 32 символа из 64 мало, и без правой половины (chaincode) сделать ничего нельзя не имея расширенного публичного ключа.
Итак, речь о кошельке Atomic. Заходим в его настройки, смотрим приватные ключи всех coins и, удивляемся. Результат в схеме (подчеркну, не полный). Из нашего сида без какого-то бы ни было хеширования Атомик раздает приватный ключ встроенным библиотекам блокчейнов (как минимум, трем), напрямую.
ris14.gif


Рис.14 Схема зависимостей от одного priv_key​

То есть, если монеты этих трех криптовалют были изначально созданы в Атомике, то заполучив приватный ключ Polkadot (на стороне, не через сид мультикошелька)– можно получить приватники Алгоранда и Монеро из этого же кошелька, а заодно их сид-фразы (25 слов), не зная сид кошелька Атомик.​
На практике это может выглядеть так:

priv_keypolkadot → (seed XMR; seed ALGO)​

Где приватный ключ polkadot, вообще говоря, — любой.​
Отмечу, что импортировать приватный ключ из Атомика в кошелек polkadot.js.org легко. Сид-фразы мы при этом не получим (ECC sr25519, поле мнемоники останется пустым), но доступ ко всем богатствам парачейнов обеспечен (солидная система крипто-пирамид, кстати).

polk.jpg

Рис. 15-1 Интерфейс веб-кошелька Polkadot, c импортированным приватным ключом​

Первый адрес на скриншоте — тот что получен из нашей seed-фразы (отличается, ибо это уже хеш sr25519), а второй — из приватника Атомика, и здесь уже адреса с Атомиком совпадают.

При этом сид фразы (приватники, адреса) Монеро и Алгоранда могут показать баланс если они были созданы одновременно с Polkadot в Атомике. Так как заранее это, вообще говоря неизвестно, то получается что нужно проверять любой приватник polkadot на связь с Алгорандом и Монеро.

А вот с Монеро обратный ход так легко не получится. Скромная функция sc_reduce, частично преобразует исходный приватный ключ. В элемент заданного поля (условно — на кривой). При определенных условиях возможна обратимость (опускаю детали), но редко и требуются вычисления. Зато однозначно ломается анонимность XMR, если ее можно связать с другими криптовалютами холдера — виден вектор потенциального деанона.​
Формально с сид-фразой Алгоранда можно сделать тоже самое
seed ALGO → (seed XMR; priv_keypolkadot)
priv_keyALGOt → (seed XMR; priv_keypolkadot)​

Но. С токеном Алгоранда в Атомике есть нюансы. Для того, чтобы сид фраза от Алго в Атомике где-то попалась (вам) вне кошелька, владелец кошелька должен ее получить для начала. А это, оказывается, проблематично.​
Юзеры кошельки меняют часто (хочется быстрее, надежнее, меньше %, у которых есть моб. версия и тд и тп), комиссию же платить не хочется, хочется импортировать секрет.

ris15.jpg

В интерфейсе Атомика в разделе приватных ключей пользователь видит сид кошелька — 64 символа ( hex) у токена алгоранда, т. е. мастер-сид кошелька целиком. Но не видит мнемонику алгоранда из 25 слов, как в Exodus (рис.9)
С такой цифирью холдер далеко не уйдет, если захочет мигрировать, и прежде всего в официальный кошелек Алгоранда, ибо он (Pera Wallet) не поддерживает импорт приватных ключей.
Тогда куда? Например, Трастваллет откажет в импорте, пока не удалишь половину (предполагаем, что холдер= обыватель, который не захочет разбираться в длине ключа).
Перебрав разные кошельки, нашелся красивый, рабочий путь — импорт 64-символьного приватника в Guarda (ну очень дружелюбного). Так формируется цепочка импорта, если моделировать возможные действия холдера:

Atomic (прив_кей) —> Guarda (прив_кей + мнемоника 25 слов) —> Pera Wallet (25 слов)

Таким образом, если удастся слить приватник или сид-фразу Pera Wallet, то есть смысл проверить балансы на зависимых в Атомике криптовалютах:​

seed ALGO → (seed XMR; priv_keypolkadot)​

вероятность не самая маленькая, учитывая, что пользователей каждого из трех упомянутых кошельков — миллионы.
А что при таком раскладе в Guarda? Тоже интересненько. В отношении Guarda получаем схему:

ris16.gif

Рис.16 Кошелек Guarda, импортированные аккаунты​

При компрометации кошелька Guarda, если нашелся импортированный аккаунт Алгоранд из Атомика, увы/ура, мы получаем доступ ко всему кошельку Атомик, со всеми его валютами (эфир, биткойн и проч). Даже если пользователь вбил при импорте только приватный ключ Алгоранда. Так как Guarda любезно сохраняет и показывает все 64 символа master-seed Атомика, а не только те 32 символа, что нужны на самом деле (рис.17)​
ris17.jpg

Рис.17 Токен Алгоранда в кошельке Guarda

И, кстати, делает это с чистой совестью — он и сид-фразу чужого кошелька сохранит (есть такая опция при импорте). Но холдер-то знает, что сид лучше приберечь, а вот приватник — штука надежная. Вообще говоря — да. Но не с Атомиком & Алгорандом. Холдер наверняка и не догадывается, что при импорте приватника вручает ключ от всего кошелька Атомик.​

И да, кошельки Atomic и Guarda могут быть разделены в пространстве и времени (ноут, мобильник) — и не пострадать от стилера синхронно.

Вывод. Если в открытом Guarda находится два аккаунта Алгоранд (в логах это видно), есть смысл проверить тот, что импортирован (#2,#3,...) на «Атомик».
В сид-фразах это выглядит так:

(сид-фраза Guarda + пароль) → (сид-фраза Atomic) → (комплексный чекинг)

Если обобщить изложенное в п.6, то​
  • из-за нарушения безопасности криптокошельками создаются зависимости
    между сид-фразами разных блокчейнов и кошельков.Например, слитая сид-фраза Алгоранда из 25 слов кошелька Pera Wallet может показать сид-фразу Монеро из 16 слов (или приватный ключ), если их когда-то породил Атомик, а потом юзеры мигрировали в нативные или популярные кошельки блокчейнов.
Могу предположить, что большая часть отработки строится по такому принципу:​
из исходной сид-фразы вычисляется только лишь 4 ( или 4+) варианта мнемоник Алгоранда (по 25 слов), хотя можно расширить вычисления по схеме рис.18. Добавить вычисление из приватного ключа мнемоники Алгоранда еще и вычисление сид-фраз Монеро(рис.18) или не добавить, окупится потеря своего и серверного времени - решать вам. Но в любом случае нужно знать что такие связи в принципе существуют и пренебрегать ими абсолютно всегда- чревато потерями.

ris18.jpg


Рис.18. Пример связи сид-фраз Алгоранда и Монеро​



7. Расширение базы за счет устаревших сид-фраз

Рассмотрим на примере старых фраз Монеро и Электрума.

ris19.jpg

Рис.19 Старые версии кошельков Монеро, Электрума и разные форматы seed-фраз​



Устаревшие ныне версии Монеро пользовались набором слов для сид-фраз от Электрума — также устаревшей (для Электрума) версии. Соответственно, старая сид-фраза из 24 слов, невалидная для BIP-39, может относится либо к Электруму (поддерживает старый формат), либо к Монеро -либо одновременно к обоим. Старые сид-фразы Монеро также поддерживаются кошельками Монеро.​
На практике, сид-фраза монеро из 25 слов может быть конвертирована в старый формат 24 слова от Электрума, которые в свою очередь могут использоваться в Электруме и его клонах и по сей день (он их поддерживает).

seed ВАША → seed XMR → (seed_electrumBTC; seed_electrum lLTC, ….)​

Верно и обратное (электрум - монеро).

8. Дополнения сид-фраз в виде иерархических списков (BIP-85)

Одно из предложений по улучшению блокчейна - BIP-85 (https://github.com/bitcoin/bips/blob/master/bip-0085.mediawiki) развивает идею генерации индексированных дочерних сид-фраз из любой исходной. По некоторым правилам
Пусть master seed = "skin spot olympic dice column permit diagram ugly traffic gentle trend angle"
Тогда, если выбран параметр длина = 12 слов (а можно еще 18 и 24), язык = англ., то
seed(0) = "total adapt must job economy target bamboo force park guess pulp layer"
seed(1) = "ecology blur visit pen foam mention wrap rival crazy mango mouse similar"
........................

seed(1000) = "churn worry utility boil end maple trip flag post guess raven enrich"

.................... и тд

Все отсюда https://iancoleman.io/bip39/#english, c выставленной опцией BIP85. Логика такого изобретения оправдывается распределением по функционалу сид-фраз и контролем за всеми дочерними мнемониками (рис).
ris20.jpg

Рис.20 Резоны использовать BIP-85​

Иерархии нет, есть детерминированность, что означает восстановление дочерней фразы по индексу. И всего лишь. Ни мастер-сид, ни соседние фразы получить нельзя никак. Кошельков, которые бы поддерживали идею очень мало, но они есть. Как и есть энтузиасты BIP-85, судя по тредам на reddit и др. площадках .

Еще одно преимущество - в силу экзотичности отработчики на BIP-85 мнемонику обычно не проверяют. Вы будете в числе первых.
С "имплементацией" BIP85 в питон возникают проблемы, т.к. приходится опираться на чужие либы, подторможенные и проч. (решено)

9. ИТОГИ

Итак, у нас есть сид-фразы, из которых мы хотим извлечь как можно больше полезной информации. Что такое "стандартная проверка балансов"? Могу только предположить (я не знаю), что у профессиональных отработчиков софт должен опираться на зависимости, вроде таких:

table.gif

где KDF - функция деривации ключей, применяемая для конкретного блокчейна, включающая в себя и путь деривации. То есть, скорее всего, у профессионалов речь идет уже о БД .

Как изъясняется товарищ с эксплойта, кодер, подаривший полупаблик с жирком ( за что отдельная благодарность) "я делаю просто: хуяк-хуяк, подставил сид в траст валлет, он все и показывает - и балансы токенов, и “стейкинг". Увы, метод работает не на 100%. Чтоб далеко (в Polkadot) не ходить, достаточно эфира - баланс с кошелька Атомика Траст Валлет не покажет (разный путь).

Что касается наших целей - вычислить дополнительные сид-фразы, связанные с полученными, то результат сведен в схему. В подзаголовках- примеры.

ris21.gif


Рис.21 — Общая схема получения дополнительных сид-фраз​




Некоторые пояснения к новым блокам схемы, кратенько

1.Немного о Tron. Можно представить ситуацию, когда формальная, простая проверка через API Trona покажет что на аккаунте нашей мнемоники — 0 (овнер), а на подчиненном кошельке (тоже сид у нас) — крипта есть, но ограничена каким-то овнером. Не знаю при проверке trx, все сопоставляют сид-фразы по зависимости аккаунтов или нет.

2.Пример сайдчейна NEO X: адрес EVM, но debank не увидит в принципе (токен GAS) и со стороны NEO N3 тоже проблемы чекинга.

3. 12+1=13
Видела советы как сгенерировать сид-фразу Монеро из BIP-39 по-своему. Записывайте рецепт (из социалки). Берем 12 слов (можно и 24) и начинаем в «калькуляторе» Монеро подставлять по очереди в качестве 13го (25-го) каждое из слов мнемоники, пока не получим валидную в Монеро сид-фразу (последнее контрольное слово всегда совпадает с каким-то из предыдущих слов мнемоники). Затем импортируем ее в MyMonero и радуемся. Впрочем, есть и автоматизация — попадались скрипты, написанные на эту тему.

Зачем так причудливо? Могу предположить, что 12 слов уже выбито..отчеканено, распечатано и попрятано по сейфам. А одно слово к 12 уже можно как-то и упомнить . Чудаков в целом вроде немного. Но не так чтобы и мало. Для 12/24 слов с интересным балансом наверное есть смысл сгенерировать таким способом мнемонику из 13/25 слов и может быть пойти по цепочке дальше (рис.19).

Отмечу, что сид-фраза созданная вот так, «вручную», отличается от сгенерированной любыми другими распространенными методами (правила монеро из энтропии, криптокошельки).
То есть я показываю способ как из любой сид-фразы получить особым образом сид-фразу Монеро (12+1, 24+1) и точно знаю, что кто-то (небольшой %) этим способом пользовался.


Общие выводы

  1. Итак, можно ли заработать на паблике новичку? Решать вам. Учитывая, что 99% этого материала отработчики знают и используют. А они ведь тоже этот самый паблик мониторят и... кстати, постоянно возмущаются, что выкладывается шлак. Парадокс?
  2. По чекингу сид-фраз, отданных сервисам, претензий на самом деле много. А подозрений, о проводках мимо кассы - еще больше.
Если бы мне требовались чьи-то услуги на постоянной основе — наверное пришлось бы применять ханипот (кошелек, где все балансы мне известны). Или еще солидней - можно организовать тестовые группы сид-фраз от сгенерированных кошельков с балансами на определенных блокчейнах или токенах (отработка разных путей деривации). Мне кажется, что лучше сознательно рискнуть потерять на тестах сервисов 100-200 баксов и попытаться их вернуть через арбитраж, чем втемную потерять десятки тысяч$.

Ну и также можно проверить эффективность сервисов на редких монетах (старых, блокчейнах и тд)

3. Для только начинающих - если хочется потренироваться, скачивайте архивы (не мои, из паблика):
- "супер-кошельки" - из тг канала (забыла какого, аккуратней: автовывод)
- файл с сид-фразами (как бы с транзакциями) - тг,
- этот же файл отчеканный ботом в тг ("бесплатный сервис", бгг... аккуратней!)
- архив с bip-85.

4. В приведенных примерах и схемах видно как из тех сид-фраз, что есть в наличии можно различными способами получить десятки новых. В сумме- новые миллионы фраз.
Конечно, нестандартные методы дадут в итоге намного меньшие суммы, чем распространенные. И вопрос рентабельности с учетом траты времени также актуален.
Но по мере возможности можно расширить чекинг существующих баз. А также углубиться в анализ в отдельных случаях.


Онлайн инструменты
  1. https://iancoleman.io/bip39/#english
  2. https://coinomi.github.io/tools/bip39/
  3. https://algorand.oortnet.com/
  4. https://xmr.llcoins.net/addresstests.html
  5. https://monerotech.info/Home/Seed
  6. https://hdwallet.online/dumps/all/BTC
  7. https://tomeko.net/online_tools/base64.php?lang=en
  8. https://guggero.github.io/cryptography-toolkit/#!/aezeed
  9. https://secretscan.org/PrivateKey_wif_to_hex
  10. https://online.visual-paradigm.com/
P.S. Планировалось опубликовать чч. 2-3, но это маловероятно, хотя основа готова.
Часть II. Софт (чистка, уникализация и сортировка разными методами, бенчмарки, формирование антипаблика, генерация сид-фраз Algorand, фраз BIP-85 и проверка баланса оффлайн).
Часть III. Нестандартные решения (brainwallet, примеры находок кошельков, нетипичные методы генерация сид-фраз, идеи скам- и не-скам сервисов, задачки и загадки с балансами).

Если материал окажется вам полезным: 0xE8D5802d6285B1Ce9afcc0bF7646C041CDd5219c


За кадром. Рассмотрю любые коммерческие предложения по теме статьи.
 

Вложения

  • ris7.png
    ris7.png
    15.2 КБ · Просмотры: 114
Последнее редактирование модератором:
обещанные паблик-базы (приложение к статье):
Еще раз напомню, что все подобные базы выкладываются отработчиками исключительно для заработка на новичках: непосредственно (автовывод) и косвенно (реклама канала).

Мой интерес в этих файлах более общественный, чем личный.
Интересно спросить у профи - можно ли найти что-то >0 после отработчиков на этом конкретном примере?

Предлагаю услуги:
  • сбор данных по блокчейнам и кошелькам (например, полный список вроде этого https://walletsrecovery.org/ но с нужными характеристиками);
  • тестовые векторы и кошельки для проверки сервисов отработчиков
  • софт по генерации сид-фраз и аналогичный криптософт
  • есть софт по сбору всех текущих адресов блокчейна Алгоранд с балансами и их чекинг оффлайн

Также приму в дар невалидные фразы — если они уже всеми проверены и терять вам нечего. Если что-то найдется - 50/50. Неспешно.
 
Отличая статья, я новичок в отработке и сидках тем более, много нового и интересного для себя почерпнул, один прикреплённый материал чего стоит, много кто искал кучу сидок.
 
Также приму в дар невалидные фразы — если они уже всеми проверены и терять вам нечего. Если что-то найдется - 50/50. Неспешно.
Могу нагенерить сколько угодно BIP фраз любой длины с валидной checksum из любого словаря (если надо - обращайтесь), но какой смысл? Проверять у всех баланс через инет или локально базу? Смешно. Возьмем BTC: из сид фразы master-seed получается 64 байта, причем это число теоретически до 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - это математически обычное огромное число = количеству вариантов мастер - seed. В реальности и нужен этот master seed, ибо нафиг мнемоническая фраза не нужна (она только для "очеловечивания" и облегчения записи). Если подбирать этот ключ хоть рандомно хоть пошагово то к его астрономическому (вселенскому) значению нужно еще одну вселенную добавить - деривацию.
 
деривацию
Скорее добавить не одну вселенную, а несколько - так как в стандарте BIP 32 есть 5 уровней что позволяет организовывать ключи в многоуровневую древовидную структуру.

Код:
m / purpose' / coin_type' / account' / change / address_index

Purpose - константна со значением 44' (или 0x8000002C), она указывает на спецификацию, которую использует наше дерево для генерации ключей.
Однако, если решат, что произошла эволюция системы ключей HD, вы сможете изменить ее на ту которая сейчас используется, чтобы кодеры снова могли различить старую систему и новую систему.

Coin type - это блокчейн к которуму вы обращаетесь, ключи которого мы хотим создать. Гугл SLIP-0044(как раз наша спецификация purpose). Каждый блокчейн имеет номер, который его представляет. Биткойн это 0. Эфириум это 60. Aion это 425 и тд.

Account - простое значение, которое позволяет отделать множества "счетов". Для различных задач.

change - Иногда используется в Ethereum, а иногда нет. Первоначально был создан для Биткойна, который на самом деле не имеет «учетных записей», а имеет «неизрасходованные выходы транзакций». Значение, которое не используется в большинстве современных криптовалют.

address_index - это просто номера кошельков, которые используется как child index в стандарте BIP32.
Номера от 0 до 2^32, то есть около 4 миллиардов уникальных ключей, именно столько кошельков может создать мнемоническая фраза с 1 номером в Account, и даже так подобное число просто невероятно огромно.
 
Количество возможных комбинаций для 12 слов составляет 2048^12=5,4445178707350154154139937189083e+39, что означает, что перебор займет миллиарды лет (добавьте к этому деривацию, скорости вычисления хешей и т.д.). По некоторым данным песка на Земле примерно 7,5x10^18 песчинок (грубо говоря в 2 раза меньше чем комбинаций в seed фразе из 12 слов :) Давно пора закрыть подобную тему, если было бы хотя бы более менее приемлемое количество комбинаций, хотя бы близко соизмеримых с современными мощностями -то другое дело.
 
Последнее редактирование:
Отличный материал, буду ждать второй части
нет стимулов. неинтересно.
и да - все это продается, см. в коммерческих разделах.
 
Статья зачет, мне также из паблика удавалось вытаскивать монеты некоторыми способами описаными и здесь. Хотя и были случаи и прямого чека сид фраз без конвертации очень непопулярных токенов, где были суммы.
 
lisa99
Привет, если будет не сложно обнови ссылки
выполнено
_ttps://ru.files.fm/u/97ybsam87z
 
Отличная статья , специально ждал пока твой материал уйдет в хороший паблик , чтобы просмотреть на что хватит моих сил.
Итог 270$. Сейчас отправлю тебе донатом.
 
Хотя и были случаи и прямого чека сид фраз без конвертации очень непопулярных токенов, где были суммы
можешь привести пример токенов (для юзеров)?

Также приму в дар невалидные фразы — если они уже всеми проверены и терять вам нечего. Если что-то найдется - 50/50. Неспешно.

Могу нагенерить сколько угодно BIP фраз любой длины с валидной checksum из любого словаря (если надо - обращайтесь), но какой смысл? Проверять у всех баланс через инет или локально базу? Смешно.
Я понимаю, что можно мусора накидать сколько угодно - чем занимаются некоторые для раскрутки тг-каналов.
Я исхожу немного из другого. Небольшой список где вперемежку адреса с транзакциями и невалид.
Еще раз- это покопаться, а не "отработать" - с непонятным результатом и несрочно.

Отличная статья , специально ждал пока твой материал уйдет в хороший паблик , чтобы просмотреть на что хватит моих сил. Итог 270$. Сейчас отправлю тебе донатом.
спасибо, и правда закинули))
 
Последнее редактирование:
спасибо, и правда закинули))
Видишь, а ты не верила в разумное, доброе, вечное и светлое =) Не всё потеряно =)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх