Witam,
Zlecę wykonanie prostej aplikacji dla Windowsa która będzie szukała prawidłowego rozwiązania w podanym zakresie BIN lub DEC do poz danej wartości szukanej. Oto jak będzie to przebiegało (wraz z wariantem do wyboru przed rozpoczęciem pracy):

  1. Wybór trybu pracy: [1] GPU+CPU [2[ GPU [3] CPU
  2. Wpisz wartość dla której szukany będzie wynik: (tu wpisuję przykładowo treść do której chcę odnaleźć rozwiązanie: (np: 19ZewH8Kk1PDbSNdJ97FP4EiCjTRaZMZQA)
  3. Wybór zakresu w którym będzie wyszukiwane rozwiązanie w DEC (np. 288230376151711744 - 396351951589101572)
  4. (opcjonalnie) Wskazanie dodatkowej wartości, która wykluczy z puli niepasujące pozycje z pomiędzy wybranego zakresu poprzez wybór ilości występujących zer i jedynek w binarnym zapisie rozwiązania [np. wiem że klucz do mojej szukanej znajduje się w 50 "keyspace" czyli 2^50 , a więc będzie miał 50 znaków i dodatkowo wiem, że w zapisie binarnym będzie zaczynał się od "1" i później zawierał 24x 0 i 25x 1 [na tej podstawie będą sprawdzane kombinacje z podanego zakresu DEC wszystkich wartości binarnych zaczynających się na "1" składających się z tylu właśnie zer i jedynek)
  5. Wybór miejsca i pliku do zapisu rozwiązania w przypadku jego znalezienia.
  6. (opcjonalnie) wskazanie pliku źródłowego z zawartą większą liczbą jednocześnie szukanych kluczy [każdy w nowej linii]
  7. START oraz widoczny stan postępu zadania wraz z zawarciem pozostałego czasu oraz czasu który już minął.

Zależy mi na rozwiązaniu i formie tej aplikacji która będzie najmniej problematyczna pod względem obsługi i umożliwiała użycie GPU w celu przyspieszenia znacząco procesu wyszukiwania odpowiedzi (z zawarciem widoku postępu wraz z czasem).

Dla zrozumienia dodam tylko, że apllikacją chcę zastąpić skrypt manualny pythona, który nie ma opcji korzystania z GPU i nie podaje wartości pozostałego czasu:

import random
from bit import *
from PyRandLib import *
rand = FastRand63()
random.seed(rand())

c1 = '1'
b1  = "1010101010101010101010101010101010101010101010101010101010"
b2  = "1101101101101101101101101101101101101101101101101101101100"
b3  = "1110111101110111011101110111011101110111011101110111011100" 
b4  = "1111111111111111111111111111111111111111111111111111111000" 
b5  = "1111111111111111111111111111111111111111111111111111110000" 
b6  = "1111111111111111111111111111111111111111111111111111100000" 
b7  = "1111111111111111111111111111111111111111111111111111000000" 
b8  = "1111111111111111111111111111111111111111111111111110000000" 
b9  = "1111111111111111111111111111111111111111111111111100000000" 
b10 = "1111111111111111111111111111111111111111111111111000000000" 
b11 = "1111111111111111111111111111111111111111111111110000000000" 
b12 = "1111111111111111111111111111111111111111111111100000000000" 
b13 = "1111111111111111111111111111111111111111111111000000000000" 
b14 = "1111111111111111111111111111111111111111111110000000000000" 
b15 = "1111111111111111111111111111111111111111111100000000000000" 
b16 = "1111111111111111111111111111111111111111111000000000000000" 
b17 = "1111111111111111111111111111111111111111110000000000000000" 
b18 = "1111111111111111111111111111111111111111100000000000000000" 
b19 = "1111111111111111111111111111111111111111000000000000000000" 
b20 = "1111111111111111111111111111111111111110000000000000000000" 
b21 = "1111111111111111111111111111111111111100000000000000000000" 
b22 = "1111111111111111111111111111111111111000000000000000000000" 
b23 = "1111111111111111111111111111111111110000000000000000000000" 
b24 = "1111111111111111111111111111111111100000000000000000000000" 
b25 = "1111111111111111111111111111111111000000000000000000000000"
b26 = "1111111111111111111111111111111110000000000000000000000000"
b27 = "1111111111111111111111111111111100000000000000000000000000"
b28 = "1111111111111111111111111111111000000000000000000000000000"
b29 = "1111111111111111111111111111110000000000000000000000000000"
b30 = "1111111111111111111111111111100000000000000000000000000000"
b31 = "1111111111111111111111111111000000000000000000000000000000"
b32 = "1111111111111111111111111110000000000000000000000000000000"
b33 = "1111111111111111111111111100000000000000000000000000000000"
b34 = "1111111111111111111111111000000000000000000000000000000000"
b35 = "1111111111111111111111110000000000000000000000000000000000"
b36 = "1111111111111111111111100000000000000000000000000000000000"
b37 = "1111111111111111111111000000000000000000000000000000000000"
b38 = "1111111111111111111110000000000000000000000000000000000000"
b39 = "1111111111111111111100000000000000000000000000000000000000"
b40 = "1111111111111111111000000000000000000000000000000000000000"
b41 = "1111111111111111110000000000000000000000000000000000000000"
b42 = "1111111111111111100000000000000000000000000000000000000000"
b43 = "1111111111111111000000000000000000000000000000000000000000"
b44 = "1111111111111110000000000000000000000000000000000000000000"
b45 = "1111111111111100000000000000000000000000000000000000000000"
b46 = "1111111111111000000000000000000000000000000000000000000000"
b47 = "1111111111110000000000000000000000000000000000000000000000"
b48 = "1111111111100000000000000000000000000000000000000000000000"
b49 = "1111111111000000000000000000000000000000000000000000000000"
b50 = "1111111110000000000000000000000000000000000000000000000000"
b51 = "1111111100000000000000000000000000000000000000000000000000"
b52 = "1111111000000000000000000000000000000000000000000000000000"
b53 = "1111110000000000000000000000000000000000000000000000000000"
b54 = "1111100000000000000000000000000000000000000000000000000000"
b55 = "1111000000000000000000000000000000000000000000000000000000"
b56 = "1100000000000000000000000000000000000000000000000000000000"
b57 = "1000000000000000000000000000000000000000000000000000000011"

while True:
    spisok = [b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b18,b19,b20,b21,b22,b23,b24,b25,b26,b27,b28,b30,b31,b32,b33,b34,b35,b36,b37,b38,b39,b40,b41,b42,b43,b44,b45,b46,b47,b48,b49,b50,b51,b52,b53,b54,b55,b56,b57]
    for element in (spisok):
        for spisok in range(1000):
            s = element
            d = ''.join(random.sample(s,len(s)))
            bina = (c1+d)
            b = int(c1+d,2)
            key = Key.from_int(b)
            addr = key.address
            if addr == "19ZewH8Kk1PDbSNdJ97FP4EiCjTRaZMZQA":
                print ("found!!!",b,addr)
                s1 = str(b)
                s2 = addr
                f=open(u"C:/a.txt","a")
                f.write(s1)
                f.write(s2)       
                f.close()
                pass
            else:
                print (s,bina,b,addr)
    pass

Mam nadzieję że wszystko jest jasne :-) BTW: szukane będą klucze priv do adresów z zagadki BTC w której każdy kolejny klucz priv adresu znajduje się w wyższym "keyspace" o 1, a więc jest drastycznie trudniejszy do obliczenia (2^30 => 2^31 => 2^32 itd.) i zaczyna się od jedynki :-] , podany przykład z szukanej znajdzie się natychmiast ponieważ jego rozwiązanie zapisane w DEC to "3"