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

256 BTC

Пожалуйста, обратите внимание, что пользователь заблокирован

C#:
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using NBitcoin;


class Program
{
    // Искомый адрес
    static readonly string targetAddress = "1nxg2UemSevaQ5cm12cb2TpLb2TXuSXtF";


    // Глобальная переменная, сигнализирующая, что адрес найден
    static volatile bool found = false;


    // Объект для синхронизации записи результата
    static object foundLock = new object();


    // Счётчик обработанных перестановок
    static long processedCount = 0;
    // Общее число перестановок для 12 слов: 12! = 479001600
    static long totalPermutations = Factorial(12);
    // Период логирования
    static long logInterval = 1_000_000;


    static void Main()
    {
        // Ваши 12 слов
        var words = new string[]
        {
            "engage", "antenna", "option", "soft", "master", "grunt",
            "federal", "dwarf", "squeeze", "cupboard", "long", "rebuild"
        };


        var permutationQueue = new BlockingCollection<string[]>(boundedCapacity: 10000);
        int consumerCount = 250;


        var validResults = new ConcurrentBag<(string Mnemonic, string Address)>();


        var cts = new CancellationTokenSource();
        CancellationToken token = cts.Token;


        // Продюсер
        Task producerTask = Task.Run(() =>
        {
            foreach (var permutation in GetPermutations(words, words.Length))
            {
                if (found) // Если уже нашли, прекращаем генерацию
                    break;
                permutationQueue.Add(permutation, token);
            }
            permutationQueue.CompleteAdding();
        }, token);


        // Потребители
        var consumerTasks = new List<Task>();
        for (int i = 0; i < consumerCount; i++)
        {
            consumerTasks.Add(Task.Run(() =>
            {
                while (!permutationQueue.IsCompleted && !found)
                {
                    string[] perm;
                    try
                    {
                        if (!permutationQueue.TryTake(out perm, TimeSpan.FromMilliseconds(100)))
                            continue;
                    }
                    catch (OperationCanceledException)
                    {
                        break;
                    }


                    if (perm == null) continue;


                    ProcessPermutation(perm, validResults);


                    if (found)
                    {
                        // Если в процессе обработки найден адрес, завершаем работу
                        break;
                    }
                }
            }, token));
        }


        // Ждём завершения продюсера
        Task.WaitAll(new[] { producerTask }, -1, token);


        // Ждём завершения всех потребителей
        Task.WaitAll(consumerTasks.ToArray(), -1, token);


        Console.WriteLine($"Поиск завершён. Найдено валидных мнемоник: {validResults.Count}");
        if (found)
        {
            Console.WriteLine("Искомый адрес был найден! Данные записаны в found.txt");
        }
    }


    static void ProcessPermutation(string[] permutation, ConcurrentBag<(string Mnemonic, string Address)> validResults)
    {
        if (found)
            return;


        string mnemonicStr = string.Join(" ", permutation);


        // Инкрементируем счётчик обработанных перестановок
        long currentCount = Interlocked.Increment(ref processedCount);


        // Периодический вывод статистики
        if (currentCount % logInterval == 0)
        {
            long remain = totalPermutations - currentCount;
            Console.WriteLine($"Обработано: {currentCount} перестановок, Осталось примерно: {remain}");
        }


        try
        {
            var mnemo = new Mnemonic(mnemonicStr, Wordlist.English);
            if (!mnemo.IsValidChecksum)
                return;


            ExtKey extKey = mnemo.DeriveExtKey();


            KeyPath path = new KeyPath("m/44'/0'/0'/0/0");
            var key = extKey.Derive(path);


            var address = key.Neuter().PubKey.GetAddress(ScriptPubKeyType.Legacy, Network.Main);
            validResults.Add((mnemonicStr, address.ToString()));


            // Проверяем, тот ли это адрес
            if (address.ToString().Equals(targetAddress, StringComparison.OrdinalIgnoreCase))
            {
                lock (foundLock)
                {
                    if (!found) // Двойная проверка внутри lock
                    {
                        found = true;
                        Console.WriteLine("Адрес найден!");
                        Console.WriteLine($"Мнемоника: {mnemonicStr}");
                        Console.WriteLine($"Адрес: {address}");


                        // Записываем в файл
                        File.WriteAllText("found.txt", $"Mnemonic: {mnemonicStr}\r\nAddress: {address}");
                    }
                }
            }
        }
        catch
        {
            // Игнорируем ошибки
        }
    }


    static IEnumerable<T[]> GetPermutations<T>(T[] items, int count)
    {
        if (count == 1)
            return items.Select(t => new T[] { t });


        return GetPermutations(items, count - 1)
            .SelectMany(t => items.Where(o => !t.Contains(o)),
                (t1, t2) => t1.Concat(new T[] { t2 }).ToArray());
    }


    static long Factorial(int n)
    {
        long res = 1;
        for (int i = 2; i <= n; i++)
            res *= i;
        return res;
    }
}
Мб кому повезет
Просто поменять слова местами это не то что задумал автор картинки (я так думаю), он бы вообще бы тогда не нумеровал их в каком порядке они должны идти. Надпись возле первого слова - в ней и смысл по ходу, в первом слове
Монета на фото это типо как подкова на удачу - на нее и внимание нехер обращать
 
Просто поменять слова местами это не то что задумал автор картинки (я так думаю), он бы вообще бы тогда не нумеровал их в каком порядке они должны идти. Надпись возле первого слова - в ней и смысл по ходу, в первом слове
Монета на фото это типо как подкова на удачу
Я вот слово не могу это разобрать
 
Я вот слово не могу это разобрать
Фрам или Фран(?) или Знак бесконечности

Screenshot 2024-12-07 035120.png
 
Последнее редактирование:
Python:
import bip32utils
import base58
import hashlib
from mnemonic import Mnemonic
import itertools


def get_bitcoin_address(seed_phrase):
    mnemo = Mnemonic("english")
    seed = mnemo.to_seed(seed_phrase, passphrase="")
    bip32_root_key_obj = bip32utils.BIP32Key.fromEntropy(seed)
    bip32_child_key_obj = bip32_root_key_obj.ChildKey(44 + bip32utils.BIP32_HARDEN).ChildKey(0 + bip32utils.BIP32_HARDEN).ChildKey(0 + bip32utils.BIP32_HARDEN).ChildKey(0).ChildKey(0)
    private_key_wif = bip32_child_key_obj.WalletImportFormat()
    public_key_hex = bip32_child_key_obj.PublicKey().hex()
    # Create the Bitcoin address (P2PKH address)
    public_key_bytes = bytes.fromhex(public_key_hex)
    sha256_hash = hashlib.sha256(public_key_bytes).digest()
    ripemd160_hash = hashlib.new('ripemd160', sha256_hash).digest()
    versioned_payload = b'\x00' + ripemd160_hash
    checksum = hashlib.sha256(hashlib.sha256(versioned_payload).digest()).digest()[:4]
    final_payload = versioned_payload + checksum
    bitcoin_address = base58.b58encode(final_payload).decode('utf-8')
    return private_key_wif, bitcoin_address



words = ["engage", "antenna", "option", "soft", "master", "grunt","federal", "dwarf", "squeeze", "cupboard", "long", "rebuild"]

counter = 1
for perm in itertools.permutations(words):
    counter += 1
    seed_phrase = " ".join(perm)
    private_key_wif, bitcoin_address = get_bitcoin_address(seed_phrase)
    if bitcoin_address == "1nxg2UemSevaQ5cm12cb2TpLb2TXuSXtF":
        print("Seed Phrase:", seed_phrase)
        print("Private Key (WIF):", private_key_wif)
        print("Bitcoin Address:", bitcoin_address)
        break
    print(counter)
 

C#:
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using NBitcoin;


class Program
{
    // Искомый адрес
    static readonly string targetAddress = "1nxg2UemSevaQ5cm12cb2TpLb2TXuSXtF";


    // Глобальная переменная, сигнализирующая, что адрес найден
    static volatile bool found = false;


    // Объект для синхронизации записи результата
    static object foundLock = new object();


    // Счётчик обработанных перестановок
    static long processedCount = 0;
    // Общее число перестановок для 12 слов: 12! = 479001600
    static long totalPermutations = Factorial(12);
    // Период логирования
    static long logInterval = 1_000_000;


    static void Main()
    {
        // Ваши 12 слов
        var words = new string[]
        {
            "engage", "antenna", "option", "soft", "master", "grunt",
            "federal", "dwarf", "squeeze", "cupboard", "long", "rebuild"
        };


        var permutationQueue = new BlockingCollection<string[]>(boundedCapacity: 10000);
        int consumerCount = 250;


        var validResults = new ConcurrentBag<(string Mnemonic, string Address)>();


        var cts = new CancellationTokenSource();
        CancellationToken token = cts.Token;


        // Продюсер
        Task producerTask = Task.Run(() =>
        {
            foreach (var permutation in GetPermutations(words, words.Length))
            {
                if (found) // Если уже нашли, прекращаем генерацию
                    break;
                permutationQueue.Add(permutation, token);
            }
            permutationQueue.CompleteAdding();
        }, token);


        // Потребители
        var consumerTasks = new List<Task>();
        for (int i = 0; i < consumerCount; i++)
        {
            consumerTasks.Add(Task.Run(() =>
            {
                while (!permutationQueue.IsCompleted && !found)
                {
                    string[] perm;
                    try
                    {
                        if (!permutationQueue.TryTake(out perm, TimeSpan.FromMilliseconds(100)))
                            continue;
                    }
                    catch (OperationCanceledException)
                    {
                        break;
                    }


                    if (perm == null) continue;


                    ProcessPermutation(perm, validResults);


                    if (found)
                    {
                        // Если в процессе обработки найден адрес, завершаем работу
                        break;
                    }
                }
            }, token));
        }


        // Ждём завершения продюсера
        Task.WaitAll(new[] { producerTask }, -1, token);


        // Ждём завершения всех потребителей
        Task.WaitAll(consumerTasks.ToArray(), -1, token);


        Console.WriteLine($"Поиск завершён. Найдено валидных мнемоник: {validResults.Count}");
        if (found)
        {
            Console.WriteLine("Искомый адрес был найден! Данные записаны в found.txt");
        }
    }


    static void ProcessPermutation(string[] permutation, ConcurrentBag<(string Mnemonic, string Address)> validResults)
    {
        if (found)
            return;


        string mnemonicStr = string.Join(" ", permutation);


        // Инкрементируем счётчик обработанных перестановок
        long currentCount = Interlocked.Increment(ref processedCount);


        // Периодический вывод статистики
        if (currentCount % logInterval == 0)
        {
            long remain = totalPermutations - currentCount;
            Console.WriteLine($"Обработано: {currentCount} перестановок, Осталось примерно: {remain}");
        }


        try
        {
            var mnemo = new Mnemonic(mnemonicStr, Wordlist.English);
            if (!mnemo.IsValidChecksum)
                return;


            ExtKey extKey = mnemo.DeriveExtKey();


            KeyPath path = new KeyPath("m/44'/0'/0'/0/0");
            var key = extKey.Derive(path);


            var address = key.Neuter().PubKey.GetAddress(ScriptPubKeyType.Legacy, Network.Main);
            validResults.Add((mnemonicStr, address.ToString()));


            // Проверяем, тот ли это адрес
            if (address.ToString().Equals(targetAddress, StringComparison.OrdinalIgnoreCase))
            {
                lock (foundLock)
                {
                    if (!found) // Двойная проверка внутри lock
                    {
                        found = true;
                        Console.WriteLine("Адрес найден!");
                        Console.WriteLine($"Мнемоника: {mnemonicStr}");
                        Console.WriteLine($"Адрес: {address}");


                        // Записываем в файл
                        File.WriteAllText("found.txt", $"Mnemonic: {mnemonicStr}\r\nAddress: {address}");
                    }
                }
            }
        }
        catch
        {
            // Игнорируем ошибки
        }
    }


    static IEnumerable<T[]> GetPermutations<T>(T[] items, int count)
    {
        if (count == 1)
            return items.Select(t => new T[] { t });


        return GetPermutations(items, count - 1)
            .SelectMany(t => items.Where(o => !t.Contains(o)),
                (t1, t2) => t1.Concat(new T[] { t2 }).ToArray());
    }


    static long Factorial(int n)
    {
        long res = 1;
        for (int i = 2; i <= n; i++)
            res *= i;
        return res;
    }
}
Мб кому повезет
1733528100018.png

Перебрал все до конца. Этого адреса не нашел
 
Посмотреть вложение 99611
Перебрал все до конца. Этого адреса не нашел
Бро, представь, что у тебя есть биткоин-адрес с 26 миллионами долларов. Я потрачу 500 тысяч, чтобы обезопасить его. Это чушь. Если они хотят раздать деньги, то для этого есть благотворительность.
 
Бро, представь, что у тебя есть биткоин-адрес с 26 миллионами долларов. Я потрачу 500 тысяч, чтобы обезопасить его. Это чушь. Если они хотят раздать деньги, то для этого есть благотворительность.
Это фейк как говорят
 
Бро, представь, что у тебя есть биткоин-адрес с 26 миллионами долларов. Я потрачу 500 тысяч, чтобы обезопасить его. Это чушь. Если они хотят раздать деньги, то для этого есть благотворительность.
Та-то понятно. Зато все будут знать, что, если всё перебрать, то ничего не будет
 


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