-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1f1c7ec
commit 7ace6a8
Showing
2 changed files
with
166 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
# -*- coding: utf-8 -*- | ||
""" | ||
Usage : | ||
> python snail.py -n 1200000 | ||
@author: iceland | ||
""" | ||
import secp256k1 as ice | ||
import time | ||
from datetime import datetime as dt | ||
import os | ||
import sys | ||
import random | ||
import argparse | ||
|
||
#============================================================================== | ||
parser = argparse.ArgumentParser(description='This tool use random number reusability for sequentially searching all unsolved BTC puzzles', | ||
epilog='Enjoy the program! :) Tips BTC: bc1q39meky2mn5qjq704zz0nnkl0v7kj4uz6r529at') | ||
parser.version = '02052023' | ||
parser.add_argument("-p", help = "Unsolved Puzzles file. default=unsolved.txt", action="store") | ||
parser.add_argument("-n", help = "Total sequential search in 1 loop. default=1000000", action='store') | ||
|
||
args = parser.parse_args() | ||
#============================================================================== | ||
|
||
seq = int(args.n) if args.n else 1000000 # 1 Million | ||
p_file = args.p if args.p else 'unsolved.txt' # 'unsolved.txt' | ||
|
||
if os.path.isfile(p_file) == False: | ||
print('File {} not found'.format(p_file)) | ||
sys.exit() | ||
puzz = {int(line.split()[0]):line.split()[1] for line in open(p_file,'r')} | ||
puzz_bits = list(puzz.keys()) | ||
puzz_h160 = [ice.address_to_h160(line) for line in puzz.values()] | ||
#============================================================================== | ||
|
||
# Very Very Slow. Made only to get a random number completely non pseudo stl. | ||
def randk(bits): | ||
dd = list(str(random.randint(1,2**256))) | ||
random.shuffle(dd); random.shuffle(dd) | ||
rs = int(''.join(dd)) | ||
random.seed(rs) | ||
return random.SystemRandom().randint(2**(bits-1), -1+2**bits) | ||
|
||
def print_success(my_key): | ||
print('============== KEYFOUND ==============') | ||
print(f'Puzzle FOUND PrivateKey: {hex(my_key)} Address: {ice.privatekey_to_address(0, True, my_key)}') | ||
print('======================================') | ||
with open('KEYFOUNDKEYFOUND.txt','a') as fw: | ||
fw.write('Puzzle_FOUND_PrivateKey '+hex(my_key)+'\n') | ||
#============================================================================== | ||
|
||
print('\n[+] Starting Program.... Please Wait !') | ||
print(f'[+] Search Mode: Sequential Random in each Loop. seq={seq}') | ||
print(f'[+] Total Unsolved: {len(puzz_bits)} Puzzles in the bit range [{min(puzz_bits)}-{max(puzz_bits)}]') | ||
|
||
key_int = randk(160) | ||
loop = 0 | ||
start = time.time() | ||
while True: | ||
try: | ||
loop += 1 | ||
counter = 0 | ||
for cbits in puzz_bits: | ||
counter += 1 | ||
bitkey = int('1'+bin(key_int)[2:][(1+160-cbits):], 2) | ||
P = ice.scalar_multiplication(bitkey) | ||
if ice.pubkey_to_h160(0, True, P) in puzz_h160: | ||
print_success(bitkey) | ||
|
||
Pv = ice.point_sequential_increment(seq, P) | ||
for t in range(seq): | ||
curr160 = ice.pubkey_to_h160(0, True, Pv[t*65:t*65+65]) | ||
if curr160 in puzz_h160: | ||
print_success(bitkey + t + 1) | ||
elapsed = time.time() - start | ||
speed = ( (loop-1)*(seq+1)*len(puzz_bits) + (seq+1)*counter ) / elapsed | ||
print(' '*120,end='\r') | ||
print(f'[Loop: {loop}] [Puzzle: {cbits} bit] [Speed: {speed:.2f} K/s] [{dt.strftime(dt.utcfromtimestamp(elapsed), "%H:%M:%S")}] [{hex(bitkey)}]', end='\r') | ||
except(KeyboardInterrupt, SystemExit): | ||
exit('\nSIGINT or CTRL-C detected. Exiting gracefully. BYE') | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
66 13zb1hQbWVsc2S7ZTZnP2G4undNNpdh5so | ||
67 1BY8GQbnueYofwSuFAT3USAhGjPrkxDdW9 | ||
68 1MVDYgVaSN6iKKEsbzRUAYFrYJadLYZvvZ | ||
69 19vkiEajfhuZ8bs8Zu2jgmC6oqZbWqhxhG | ||
71 1PWo3JeB9jrGwfHDNpdGK54CRas7fsVzXU | ||
72 1JTK7s9YVYywfm5XUH7RNhHJH1LshCaRFR | ||
73 12VVRNPi4SJqUTsp6FmqDqY5sGosDtysn4 | ||
74 1FWGcVDK3JGzCC3WtkYetULPszMaK2Jksv | ||
76 1DJh2eHFYQfACPmrvpyWc8MSTYKh7w9eRF | ||
77 1Bxk4CQdqL9p22JEtDfdXMsng1XacifUtE | ||
78 15qF6X51huDjqTmF9BJgxXdt1xcj46Jmhb | ||
79 1ARk8HWJMn8js8tQmGUJeQHjSE7KRkn2t8 | ||
81 15qsCm78whspNQFydGJQk5rexzxTQopnHZ | ||
82 13zYrYhhJxp6Ui1VV7pqa5WDhNWM45ARAC | ||
83 14MdEb4eFcT3MVG5sPFG4jGLuHJSnt1Dk2 | ||
84 1CMq3SvFcVEcpLMuuH8PUcNiqsK1oicG2D | ||
86 1K3x5L6G57Y494fDqBfrojD28UJv4s5JcK | ||
87 1PxH3K1Shdjb7gSEoTX7UPDZ6SH4qGPrvq | ||
88 16AbnZjZZipwHMkYKBSfswGWKDmXHjEpSf | ||
89 19QciEHbGVNY4hrhfKXmcBBCrJSBZ6TaVt | ||
91 1EzVHtmbN4fs4MiNk3ppEnKKhsmXYJ4s74 | ||
92 1AE8NzzgKE7Yhz7BWtAcAAxiFMbPo82NB5 | ||
93 17Q7tuG2JwFFU9rXVj3uZqRtioH3mx2Jad | ||
94 1K6xGMUbs6ZTXBnhw1pippqwK6wjBWtNpL | ||
96 15ANYzzCp5BFHcCnVFzXqyibpzgPLWaD8b | ||
97 18ywPwj39nGjqBrQJSzZVq2izR12MDpDr8 | ||
98 1CaBVPrwUxbQYYswu32w7Mj4HR4maNoJSX | ||
99 1JWnE6p6UN7ZJBN7TtcbNDoRcjFtuDWoNL | ||
101 1CKCVdbDJasYmhswB6HKZHEAnNaDpK7W4n | ||
102 1PXv28YxmYMaB8zxrKeZBW8dt2HK7RkRPX | ||
103 1AcAmB6jmtU6AiEcXkmiNE9TNVPsj9DULf | ||
104 1EQJvpsmhazYCcKX5Au6AZmZKRnzarMVZu | ||
106 18KsfuHuzQaBTNLASyj15hy4LuqPUo1FNB | ||
107 15EJFC5ZTs9nhsdvSUeBXjLAuYq3SWaxTc | ||
108 1HB1iKUqeffnVsvQsbpC6dNi1XKbyNuqao | ||
109 1GvgAXVCbA8FBjXfWiAms4ytFeJcKsoyhL | ||
111 1824ZJQ7nKJ9QFTRBqn7z7dHV5EGpzUpH3 | ||
112 18A7NA9FTsnJxWgkoFfPAFbQzuQxpRtCos | ||
113 1NeGn21dUDDeqFQ63xb2SpgUuXuBLA4WT4 | ||
114 174SNxfqpdMGYy5YQcfLbSTK3MRNZEePoy | ||
116 1MnJ6hdhvK37VLmqcdEwqC3iFxyWH2PHUV | ||
117 1KNRfGWw7Q9Rmwsc6NT5zsdvEb9M2Wkj5Z | ||
118 1PJZPzvGX19a7twf5HyD2VvNiPdHLzm9F6 | ||
119 1GuBBhf61rnvRe4K8zu8vdQB3kHzwFqSy7 | ||
121 1GDSuiThEV64c166LUFC9uDcVdGjqkxKyh | ||
122 1Me3ASYt5JCTAK2XaC32RMeH34PdprrfDx | ||
123 1CdufMQL892A69KXgv6UNBD17ywWqYpKut | ||
124 1BkkGsX9ZM6iwL3zbqs7HWBV7SvosR6m8N | ||
125 1PXAyUB8ZoH3WD8n5zoAthYjN15yN5CVq5 | ||
126 1AWCLZAjKbV1P7AHvaPNCKiB7ZWVDMxFiz | ||
127 1G6EFyBRU86sThN3SSt3GrHu1sA7w7nzi4 | ||
128 1MZ2L1gFrCtkkn6DnTT2e4PFUTHw9gNwaj | ||
129 1Hz3uv3nNZzBVMXLGadCucgjiCs5W9vaGz | ||
130 1Fo65aKq8s8iquMt6weF1rku1moWVEd5Ua | ||
131 16zRPnT8znwq42q7XeMkZUhb1bKqgRogyy | ||
132 1KrU4dHE5WrW8rhWDsTRjR21r8t3dsrS3R | ||
133 17uDfp5r4n441xkgLFmhNoSW1KWp6xVLD | ||
134 13A3JrvXmvg5w9XGvyyR4JEJqiLz8ZySY3 | ||
135 16RGFo6hjq9ym6Pj7N5H7L1NR1rVPJyw2v | ||
136 1UDHPdovvR985NrWSkdWQDEQ1xuRiTALq | ||
137 15nf31J46iLuK1ZkTnqHo7WgN5cARFK3RA | ||
138 1Ab4vzG6wEQBDNQM1B2bvUz4fqXXdFk2WT | ||
139 1Fz63c775VV9fNyj25d9Xfw3YHE6sKCxbt | ||
140 1QKBaU6WAeycb3DbKbLBkX7vJiaS8r42Xo | ||
141 1CD91Vm97mLQvXhrnoMChhJx4TP9MaQkJo | ||
142 15MnK2jXPqTMURX4xC3h4mAZxyCcaWWEDD | ||
143 13N66gCzWWHEZBxhVxG18P8wyjEWF9Yoi1 | ||
144 1NevxKDYuDcCh1ZMMi6ftmWwGrZKC6j7Ux | ||
145 19GpszRNUej5yYqxXoLnbZWKew3KdVLkXg | ||
146 1M7ipcdYHey2Y5RZM34MBbpugghmjaV89P | ||
147 18aNhurEAJsw6BAgtANpexk5ob1aGTwSeL | ||
148 1FwZXt6EpRT7Fkndzv6K4b4DFoT4trbMrV | ||
149 1CXvTzR6qv8wJ7eprzUKeWxyGcHwDYP1i2 | ||
150 1MUJSJYtGPVGkBCTqGspnxyHahpt5Te8jy | ||
151 13Q84TNNvgcL3HJiqQPvyBb9m4hxjS3jkV | ||
152 1LuUHyrQr8PKSvbcY1v1PiuGuqFjWpDumN | ||
153 18192XpzzdDi2K11QVHR7td2HcPS6Qs5vg | ||
154 1NgVmsCCJaKLzGyKLFJfVequnFW9ZvnMLN | ||
155 1AoeP37TmHdFh8uN72fu9AqgtLrUwcv2wJ | ||
156 1FTpAbQa4h8trvhQXjXnmNhqdiGBd1oraE | ||
157 14JHoRAdmJg3XR4RjMDh6Wed6ft6hzbQe9 | ||
158 19z6waranEf8CcP8FqNgdwUe1QRxvUNKBG | ||
159 14u4nA5sugaswb6SZgn5av2vuChdMnD9E5 | ||
160 1NBC8uXJy1GiJ6drkiZa1WuKn51ps7EPTv |