-Cкрипт предназначен для проверки сид фраз и соответствующих им биткоин-адресов в базе данных.
- Он генерирует случайные сид фразы, создает ключи и адреса на их основе, а затем проверяет, есть ли совпадения с адресами из базы данных.
- Если найдено совпадение, скрипт записывает сид фразу и соответствующий адрес в файл.
- Для работы скрипта необходимо установить следующие модули и зависимости:
- `os`
- `random`
- `mnemonic`
- `bip32utils`
- Скрипт использует базу данных адресов для сравнения сгенерированных адресов.
- База адресов должна находится в файле `base.txt`.
- Каждый адрес должен быть записан в отдельной строке файла.
- Для генерации сид фраз скрипт использует ворд лист.
- Список слов должен быть сохранен в файле `word_list.txt`.
- Каждое слово должно быть записано в отдельной строке файла.
-Используем ворд лист, для того что бы человек мог записать в этот файл не все 2048 слов, а нужные ему 12 или другое количество.
- Скрипт использует два различных метода деривации ключей для генерации адресов: BIP32 и BIP44.
- BIP32 (иерархическая детерминированная ключевая серия) использует структуру дерева ключей для создания производных ключей.
- BIP44 (Bitcoin Improvement Proposal 44) является стандартом, который определяет дерево ключей и пути для создания адресов для определенного кошелька.
- Для генерации ключей и адресов скрипт использует энтропию, которая является случайной последовательностью слов из ворд листа.
- Для каждого пути (BIP32 и BIP44) скрипт генерирует производный ключ и соответствующий адрес на основе энтропии.
-Вы можете внести свои изменения относительно ваших нужд
- Когда скрипт находит совпадение между сгенерированным адресом и адресом из базы данных, он записывает сид фразу и адрес в файл `seedyes.txt`.
- Каждое совпадение записывается на отдельных строках файла, сид фраза и адрес разделены строкой.
- Если файл `seedyes.txt` не существует, скрипт создаст его и добавит записи в конец файла.
Сам код:
- Он генерирует случайные сид фразы, создает ключи и адреса на их основе, а затем проверяет, есть ли совпадения с адресами из базы данных.
- Если найдено совпадение, скрипт записывает сид фразу и соответствующий адрес в файл.
- Для работы скрипта необходимо установить следующие модули и зависимости:
- `os`
- `random`
- `mnemonic`
- `bip32utils`
- Скрипт использует базу данных адресов для сравнения сгенерированных адресов.
- База адресов должна находится в файле `base.txt`.
- Каждый адрес должен быть записан в отдельной строке файла.
- Для генерации сид фраз скрипт использует ворд лист.
- Список слов должен быть сохранен в файле `word_list.txt`.
- Каждое слово должно быть записано в отдельной строке файла.
-Используем ворд лист, для того что бы человек мог записать в этот файл не все 2048 слов, а нужные ему 12 или другое количество.
- Скрипт использует два различных метода деривации ключей для генерации адресов: BIP32 и BIP44.
- BIP32 (иерархическая детерминированная ключевая серия) использует структуру дерева ключей для создания производных ключей.
- BIP44 (Bitcoin Improvement Proposal 44) является стандартом, который определяет дерево ключей и пути для создания адресов для определенного кошелька.
- Для генерации ключей и адресов скрипт использует энтропию, которая является случайной последовательностью слов из ворд листа.
- Для каждого пути (BIP32 и BIP44) скрипт генерирует производный ключ и соответствующий адрес на основе энтропии.
-Вы можете внести свои изменения относительно ваших нужд
- Когда скрипт находит совпадение между сгенерированным адресом и адресом из базы данных, он записывает сид фразу и адрес в файл `seedyes.txt`.
- Каждое совпадение записывается на отдельных строках файла, сид фраза и адрес разделены строкой.
- Если файл `seedyes.txt` не существует, скрипт создаст его и добавит записи в конец файла.
Сам код:
Python:
import os
import random
from mnemonic import Mnemonic
from bip32utils import BIP32Key
# берем слова из word list
def load_word_list():
word_list_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'word_list.txt')
with open(word_list_path, 'r') as file:
word_list = file.read().splitlines()
return word_list
# генерируем случайный сид
def generate_seed_phrase(word_list):
mnemonic = Mnemonic("english")
return mnemonic.generate(128)
# генерируем адресацию в BIP32, плюс деревацию и количество аков
def generate_bip32_address(seed_phrase, path):
mnemonic = Mnemonic("english")
seed = mnemonic.to_seed(seed_phrase)
root_key = BIP32Key.fromEntropy(seed)
path_parts = path.replace("Bip32 m/", "").split("/")
for part in path_parts:
if part.isdigit():
derived_key = root_key.ChildKey(int(part))
root_key = derived_key
return derived_key.Address()
# генерируем адресацию в BIP44, плюс деревацию и количество аков
def generate_bip44_address(seed_phrase, path):
mnemonic = Mnemonic("english")
seed = mnemonic.to_seed(seed_phrase)
root_key = BIP32Key.fromEntropy(seed)
path_parts = path.replace("BIP44 m/44'/0'/0'", "").split("/")
for part in path_parts:
if part.isdigit():
derived_key = root_key.ChildKey(int(part))
root_key = derived_key
return derived_key.Address()
# читаем базу
def read_address_database():
addresses_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'base.txt')
with open(addresses_path, 'r') as file:
addresses = file.read().splitlines()
return addresses
# сохраняем совпадения в файл
def write_matched_seeds(seed_phrase, address):
with open('seed_yes.txt', 'a') as file:
file.write(f"Seed Phrase: {seed_phrase}\nAddress: {address}\n\n")
# проверка адресов
def check_seeds():
word_list = load_word_list()
addresses = read_address_database()
seed_count = 0
match_count = 0
while True:
seed_phrase = generate_seed_phrase(word_list)
for i in range(5):
for j in range(3):
path_bip32 = f"Bip32 m/{i}/{j}"
address_bip32 = generate_bip32_address(seed_phrase, path_bip32)
if address_bip32 in addresses:
write_matched_seeds(seed_phrase, address_bip32)
match_count += 1
seed_count += 1
path_bip44 = f"BIP44 m/44'/0'/0'/{i}/{j}"
address_bip44 = generate_bip44_address(seed_phrase, path_bip44)
if address_bip44 in addresses:
write_matched_seeds(seed_phrase, address_bip44)
match_count += 1
seed_count += 1
print(f"All: {seed_count} . Found: {match_count}", end="\r")
# можете увеличить количество проверяемых аков и глубину адресов {j} и {i}
check_seeds()