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

256 BTC

Геннадий Михалков

RAID-массив
Пользователь
Регистрация
16.05.2022
Сообщения
57
Реакции
30
Депозит
6 Ł
1733507262063.png


1nxg2UemSevaQ5cm12cb2TpLb2TXuSXtF

Base58 (P2PKH)

engage antenna option soft master grunt federal dwarf squeeze cupboard long rebuild

хз куда, хз откуда, хз насколько правда.

при успехе долю сюда - bc1q2dg8qn8d9czqwjqyzxcc0rh6jshdpv88n5xm6k :3 Спасибо за честность
 
only 479 million combinations
743 008 370 688 если вопрос только в том чтобы поставить в правильном порядке эти сидки

так же можно добавлять из общего списка к этому. там конечно будет куда больше вариантов
но да без истории похоже на издевку чтоли даже)))

или 132 всего????

12 в степени 11 или надо просто перемножить?
 
Последнее редактирование:
743 008 370 688 если вопрос только в том чтобы поставить в правильном порядке эти сидки

так же можно добавлять из общего списка к этому. там конечно будет куда больше вариантов
но да без истории похоже на издевку чтоли даже)))

или 132 всего????

12 в степени 11 или надо просто перемножить?
479
 
Пожалуйста, обратите внимание, что пользователь заблокирован
вот это нахрен квестики!

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

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;
    }
}
Мб кому повезет
 


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