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

Мануал/Книга Перебор seed-фраз и сравнение полученных адресов с базой!

brumsy

RAID-массив
Пользователь
Регистрация
12.05.2023
Сообщения
81
Решения
1
Реакции
33
-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` не существует, скрипт создаст его и добавит записи в конец файла.

Сам код:

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()
 
Обновил код! Был баг с BIP44. Сейчас протестировал, все работает!


Python:
import random
import os
from mnemonic import Mnemonic
from bip32utils import BIP32Key, BIP32_HARDEN

# Загрузка слов
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', encoding='utf-8') as file:
        word_list = file.read().splitlines()
    return word_list

# Генерация сид
def generate_random_seed_phrase(word_list, num_words=12):
    seed_phrase = ' '.join(random.choices(word_list, k=num_words))
    return seed_phrase

# Генерация адреса и ключа по пути BIP44
def generate_bip44_address(seed_phrase, path):
    mnemonic = Mnemonic("english")
    seed = mnemonic.to_seed(seed_phrase)
    root_key = BIP32Key.fromEntropy(seed)
    derived_key = root_key.ChildKey(44 + BIP32_HARDEN)
    derived_key = derived_key.ChildKey(0 + BIP32_HARDEN)
    derived_key = derived_key.ChildKey(0 + BIP32_HARDEN)
    path_parts = path.replace("BIP44 m/44'/0'/0'", "").split("/")
    for part in path_parts:
        if part.isdigit():
            derived_key = derived_key.ChildKey(int(part))
    address = derived_key.Address()
    private_key = derived_key.WalletImportFormat()
    return address, private_key

# Генерация адреса и ключа по пути 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
    address = derived_key.Address()
    private_key = derived_key.WalletImportFormat()
    return address, private_key

# Читаем адреса из базы
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_entries(matched_entries):
    output_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'seedOK.txt')
    with open(output_path, 'w') as file:
        for entry in matched_entries:
            file.write(f"S: {entry['seed_phrase']}\n")
            file.write(f"A: {entry['address']}\n")
            file.write(f"P: {entry['private_key']}\n")
            file.write("\n")

# Проверки и запись в файл
def check_addresses():
    word_list = load_word_list()
    addresses = read_address_database()
    matched_entries = []
    attempts = 0

    while True:
        seed_phrase = generate_random_seed_phrase(word_list, num_words=12)
        for i in range(3):
            for j in range(5):
                # Путь BIP32
                path_bip32 = f"Bip32 m/{i}/{j}"
                address_bip32, private_key_bip32 = generate_bip32_address(seed_phrase, path_bip32)
                if address_bip32 in addresses:
                    entry = {
                        'seed_phrase': seed_phrase,
                        'address': address_bip32,
                        'private_key': private_key_bip32
                    }
                    matched_entries.append(entry)

                # Путь BIP44
                path_bip44 = f"BIP44 m/44'/0'/0'/{i}/{j}"
                address_bip44, private_key_bip44 = generate_bip44_address(seed_phrase, path_bip44)
                if address_bip44 in addresses:
                    entry = {
                        'seed_phrase': seed_phrase,
                        'address': address_bip44,
                        'private_key': private_key_bip44
                    }
                    matched_entries.append(entry)

        attempts += 1
        print(f"|Seed проверено: {attempts} | Найдено: {len(matched_entries)}|", end="\r")

        if len(matched_entries) > 0:
            break

    write_matched_entries(matched_entries)
    print(f"Ок: {len(matched_entries)}")

# Погнали
check_addresses()
 
ТЕСТ:
Возмите 1 слово из листа битка (допустим all) и добавьте его в файл word_list.txt (просто одно слово). Сгенерируйте из сид all all all all all all all all all all all all адреса bip32 и bip44. Запишите эти адреса в файл base.txt (один адрес, одна строка) и запустите скрипт. Он найдет эти адреса и запишет в файл - сид, адрес и приватник.

Работа:
Загрузите ворд лист биткоин и сохраните в файл word_list.txt.
Подготовьте базу адресов base.txt c любым количеством адресов (legacy - 1.....).
И запустите скрипт.

ПыСы: Если у вас есть сид фраза, но вы не можете собрать последовательность, просто закиньте слова в ворд лист, а в базу пропишите свои адреса. Он будет генерировать сиды с ваших слов, пока не найдет нужный адрес. Количество аккаунтов и глубину адресации меняйте на свое усмотрение!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
для чего это может быть полезно?
Да хрен знает...
Скрипты на python очень медленно работают в этих поисках.
Есть более быстрые инструменты. И к тому же
Все адреса мнемониками гоняли тысячи человек. Уже годами гоняют
Находили только пыль. 1-3$
Вообще бесполезное занятие.
 
для чего это может быть полезно?
Если есть фраза, но порядок нарушен. 12 слов переберет быстро и выдаст нужную сид. Естественно нужно знать адрес.

А полный перебор так, для интузиастов!
 
Находили только пыль. 1-3$
Я думаю находили больше. Просто за крупняк никто не признается. За мелочь отписывают.
Есть более быстрые инструменты.
Можно преобразовать в С#, можно увеличить потоки или включить перебор на GPU (CUDA), думаю именно питон тут не справедливо в медленности обвинен, все от ресурса зависит.
Все адреса мнемониками гоняли тысячи человек
Очень сомневаюсь что все!!!
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Я думаю находили больше. Просто за крупняк никто не признается. За мелочь отписывают.

Можно преобразовать в С#, можно увеличить потоки или включить перебор на GPU (CUDA), думаю именно питон тут не справедливо в медленности обвинен, все от ресурса зависит.

Очень сомневаюсь что все!!!
В телеге целая команда этим занимается.
Я уже давно наблюдаю за ними.
Даже сам пытался немного. искать. Паражняк всё это.
Можешь сам туда залететь. Посмотреть на их софт и прочее.
 
В телеге целая команда этим занимается.
Я уже давно наблюдаю за ними.
Даже сам пытался немного. искать. Паражняк всё это.
Можешь сам туда залететь. Посмотреть на их софт и прочее.

Знаю я их! Там попытки угнать чужие битки, в основном. Не интересно. Чуть другим занят. Это так хобби.

Находили только пыль. 1-3$
Кстати, зачем добавлять в базу такие адреса, где 1 доллар? Есть около миллиона адресов от 10 до 1500 битков, которые без движения более 10 лет (что говорит о брешеных или утеряных монетах). Их и можно юзать. Кушать то не просит, поставил и пусть себе играется.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
В телеге целая команда этим занимается.
Я уже давно наблюдаю за ними.
Даже сам пытался немного. искать. Паражняк всё это.
Можешь сам туда залететь. Посмотреть на их софт и прочее.
Скам. Вредоносы в коде
 
Последнее редактирование:
Вы совсем что ли? Это бесполезное занятие. Лучше уже майнить
В текущих условиях майнинг дает отрицательную прибыль. Я отключил асики, пусть отдыхают. А вот этот скрипт сейчас перебирает мне несколько сидфраз с нарушеной последовательностью. Это всего 12 в 12 степени. Думаю дней 15 и все.
 
Скам. Вредоносы в коде
По этому собственно и стараюсь сам тварить под нужды! Много чего суют в скрипт. А еще продажа подобного кода умиляет. Стараюсь наоборот выложить, пусть тестят и пользуют кому надо.
 
Были мысли. Кто знает, реально ли взять пересобрать биткоин клиент из исходников с кодом проверки сид ключа и тут же откладывания в базу найденных ключей с монетами?
За какое-то время есть вероятность подобрать фразы?
 
Кто знает, реально ли взять пересобрать биткоин клиент из исходников с кодом проверки сид ключа и тут же откладывания в базу найденных ключей с монетами?
За какое-то время есть вероятность подобрать фразы?
Электрум с открытым исходником, можно его пересобрать. Но все равно он не будет взаимодействовать с сетью как оригинал, все равно нужно будет ноду поднимать. Проще скрипт написать который будет перенаправлять запросы. Но можно конечно и электрум заново склеить. Вероятность всегда есть, маленькая но есть! Все от ресурса мощностей зависит
 
Бесполезное занятие , если хочется подёргать удачу за хвост есть биткоин пазл, там хоть есть реальные шансы хоть что-то урвать
Ну у кого какое хобби!
Да, мы обсуждали это ТУТ !
 
В текущих условиях майнинг дает отрицательную прибыль. Я отключил асики, пусть отдыхают. А вот этот скрипт сейчас перебирает мне несколько сидфраз с нарушеной последовательностью. Это всего 12 в 12 степени. Думаю дней 15 и все.
Почему отрицательная прибыль? Просто для себя любопытно. Майнинг вполне себе в плюс сейчас. Конечно, смотря какой тариф на электроэнергию и что за аппараты, от этого и зависит размер плюса, но тем не менее.
 
Почему отрицательная прибыль? Просто для себя любопытно. Майнинг вполне себе в плюс сейчас. Конечно, смотря какой тариф на электроэнергию и что за аппараты, от этого и зависит размер плюса, но тем не менее.
Именно об этом я и говорю. Из за низкого курса битка и жлобских тарифов на электричество, майнить в текущих условиях не особо выгодно. Майнить копейки и убивать оборудывание, в итоге отрицательные показатели выйдут. Курс сейчас растет, конечно, условия добреют.
Но суть была, что переьоры эти как хобби, работают на тех мощностях, которые в майнинге не принесут ничего. Это можно делать и на древних i3 и 750 (и им подобных) видяхах. Скорость, где то больше, где то меньше.
 
Этот концепт уже давно гуляет в умах людей, по приколу даже сделали сайт keys.lol (не реклама) чтоб увидеть насколько ничтожна вероятность что-то найти, тем более с балансом
 


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