Pages:
Author

Topic: Bitcoin puzzle transaction ~32 BTC prize to who solves it - page 39. (Read 193340 times)

member
Activity: 286
Merit: 15
The concept of a logarithm was invented just a few centuries ago and immediately changed engineering as we know it.

Code:
import math
from mpmath import mp

def calculate_log2(decimal_value):
    log2_value = mp.log(decimal_value, 2)
    return log2_value

def calculate_reverse_log2(log2_value):
    decimal_value = mp.power(2, log2_value)
    return decimal_value

target_numbers = [
    (1, 1), (2, 3), (3, 7), (4, 8), (5, 21), (6, 49), (7, 76), (8, 224), (9, 467), (10, 514),
    (11, 1155), (12, 2683), (13, 5216), (14, 10544), (15, 26867), (16, 51510),
    (17, 95823), (18, 198669), (19, 357535), (20, 863317), (21, 1811764),
    (22, 3007503), (23, 5598802), (24, 14428676), (25, 33185509),
    (26, 54538862), (27, 111949941), (28, 227634408), (29, 400708894),
    (30, 1033162084), (31, 2102388551), (32, 3093472814), (33, 7137437912),
    (34, 14133072157), (35, 20112871792), (36, 42387769980), (37, 100251560595),
    (38, 146971536592), (39, 323724968937), (40, 1003651412950),
    (41, 1458252205147), (42, 2895374552463), (43, 7409811047825),
    (44, 15404761757071), (45, 19996463086597), (46, 51408670348612),
    (47, 119666659114170), (48, 191206974700443), (49, 409118905032525),
    (50, 611140496167764), (51, 2058769515153876), (52, 4216495639600700),
    (53, 6763683971478124), (54, 9974455244496707), (55, 30045390491869460),
    (56, 44218742292676575), (57, 138245758910846492), (58, 199976667976342049),
    (59, 525070384258266191), (60, 1135041350219496382), (61, 1425787542618654982),
    (62, 3908372542507822062), (63, 8993229949524469768),
    (64, 17799667357578236628), (65, 30568377312064202855)
]

mp.dps = 20  # Set the high decimal precision

for ordinal, decimal_value in target_numbers:
    log2_result = calculate_log2(decimal_value)
    reverse_result = calculate_reverse_log2(log2_result)
    print(f"Puzzle:{ordinal}: Log(2) for {decimal_value} is approximately {log2_result}. Reverse calculation: {reverse_result}")

Look result of this madness:

Puzzle:1: Log(2) for 1 is approximately 0.0. Reverse calculation: 1.0
Puzzle:2: Log(2) for 3 is approximately 1.5849625007211561815. Reverse calculation: 3.0
Puzzle:3: Log(2) for 7 is approximately 2.8073549220576041074. Reverse calculation: 7.0
Puzzle:4: Log(2) for 8 is approximately 3.0. Reverse calculation: 8.0
Puzzle:5: Log(2) for 21 is approximately 4.3923174227787602889. Reverse calculation: 21.0
Puzzle:6: Log(2) for 49 is approximately 5.6147098441152082149. Reverse calculation: 49.0
Puzzle:7: Log(2) for 76 is approximately 6.2479275134435854938. Reverse calculation: 76.0
Puzzle:8: Log(2) for 224 is approximately 7.8073549220576041074. Reverse calculation: 224.0
Puzzle:9: Log(2) for 467 is approximately 8.8672787397096619133. Reverse calculation: 467.0
Puzzle:10: Log(2) for 514 is approximately 9.0056245491938781069. Reverse calculation: 514.0
Puzzle:11: Log(2) for 1155 is approximately 10.173677136303419893. Reverse calculation: 1155.0
Puzzle:12: Log(2) for 2683 is approximately 11.389631339260521112. Reverse calculation: 2683.0
Puzzle:13: Log(2) for 5216 is approximately 12.348728154231077553. Reverse calculation: 5216.0
Puzzle:14: Log(2) for 10544 is approximately 13.364134655008051742. Reverse calculation: 10544.0
Puzzle:15: Log(2) for 26867 is approximately 14.713547616912692731. Reverse calculation: 26867.0
Puzzle:16: Log(2) for 51510 is approximately 15.652564919610652675. Reverse calculation: 51510.0
Puzzle:17: Log(2) for 95823 is approximately 16.548084361224413154. Reverse calculation: 95823.0
Puzzle:18: Log(2) for 198669 is approximately 17.600007248708430135. Reverse calculation: 198669.0
Puzzle:19: Log(2) for 357535 is approximately 18.447724952285439321. Reverse calculation: 357535.0
Puzzle:20: Log(2) for 863317 is approximately 19.719530872026151871. Reverse calculation: 863317.00000000000001
Puzzle:21: Log(2) for 1811764 is approximately 20.788963611792287227. Reverse calculation: 1811764.0
Puzzle:22: Log(2) for 3007503 is approximately 21.520134745822105762. Reverse calculation: 3007503.0
Puzzle:23: Log(2) for 5598802 is approximately 22.416686729787820277. Reverse calculation: 5598802.0
Puzzle:24: Log(2) for 14428676 is approximately 23.782435585948494073. Reverse calculation: 14428676.0
Puzzle:25: Log(2) for 33185509 is approximately 24.984050066697330736. Reverse calculation: 33185509.0
Puzzle:26: Log(2) for 54538862 is approximately 25.700781261712878111. Reverse calculation: 54538862.0
Puzzle:27: Log(2) for 111949941 is approximately 26.738278526958637998. Reverse calculation: 111949941.0
Puzzle:28: Log(2) for 227634408 is approximately 27.762143403294801415. Reverse calculation: 227634408.0
Puzzle:29: Log(2) for 400708894 is approximately 28.577979290797464122. Reverse calculation: 400708894.0
Puzzle:30: Log(2) for 1033162084 is approximately 29.944419458082398243. Reverse calculation: 1033162084.0
Puzzle:31: Log(2) for 2102388551 is approximately 30.969382178280594153. Reverse calculation: 2102388551.0
Puzzle:32: Log(2) for 3093472814 is approximately 31.526580209327912218. Reverse calculation: 3093472814.0
Puzzle:33: Log(2) for 7137437912 is approximately 32.732759144627864676. Reverse calculation: 7137437912.0000000001
Puzzle:34: Log(2) for 14133072157 is approximately 33.718356052472843908. Reverse calculation: 14133072157.0
Puzzle:35: Log(2) for 20112871792 is approximately 34.22740003868583903. Reverse calculation: 20112871792.0
Puzzle:36: Log(2) for 42387769980 is approximately 35.302929017096708804. Reverse calculation: 42387769980.000000001
Puzzle:37: Log(2) for 100251560595 is approximately 36.544833738746849477. Reverse calculation: 100251560595.0
Puzzle:38: Log(2) for 146971536592 is approximately 37.096745824716051977. Reverse calculation: 146971536592.0
Puzzle:39: Log(2) for 323724968937 is approximately 38.235977688802476225. Reverse calculation: 323724968937.0
Puzzle:40: Log(2) for 1003651412950 is approximately 39.868395419757349213. Reverse calculation: 1003651412950.0
Puzzle:41: Log(2) for 1458252205147 is approximately 40.407377394423366271. Reverse calculation: 1458252205147.0
Puzzle:42: Log(2) for 2895374552463 is approximately 41.396887129359569265. Reverse calculation: 2895374552463.0
Puzzle:43: Log(2) for 7409811047825 is approximately 42.752573892536879788. Reverse calculation: 7409811047825.0
Puzzle:44: Log(2) for 15404761757071 is approximately 43.808441604030467369. Reverse calculation: 15404761757071.0
Puzzle:45: Log(2) for 19996463086597 is approximately 44.184810076602017917. Reverse calculation: 19996463086597.0
Puzzle:46: Log(2) for 51408670348612 is approximately 45.547076931749783679. Reverse calculation: 51408670348612.0
Puzzle:47: Log(2) for 119666659114170 is approximately 46.766014580697737785. Reverse calculation: 119666659114170.0
Puzzle:48: Log(2) for 191206974700443 is approximately 47.442128478217754077. Reverse calculation: 191206974700443.0
Puzzle:49: Log(2) for 409118905032525 is approximately 48.539513532885657356. Reverse calculation: 409118905032525.00001
Puzzle:50: Log(2) for 611140496167764 is approximately 49.118497410306637905. Reverse calculation: 611140496167764.0
Puzzle:51: Log(2) for 2058769515153876 is approximately 50.870703748687580964. Reverse calculation: 2058769515153876.0
Puzzle:52: Log(2) for 4216495639600700 is approximately 51.904965885818221825. Reverse calculation: 4216495639600700.0
Puzzle:53: Log(2) for 6763683971478124 is approximately 52.586730675690989872. Reverse calculation: 6763683971478124.0
Puzzle:54: Log(2) for 9974455244496707 is approximately 53.147159473916182081. Reverse calculation: 9974455244496706.9998
Puzzle:55: Log(2) for 30045390491869460 is approximately 54.737993190511333013. Reverse calculation: 30045390491869460.0
Puzzle:56: Log(2) for 44218742292676575 is approximately 55.295507509568065689. Reverse calculation: 44218742292676575.0
Puzzle:57: Log(2) for 138245758910846492 is approximately 56.940012835374135824. Reverse calculation: 138245758910846492.0
Puzzle:58: Log(2) for 199976667976342049 is approximately 57.472609298293031082. Reverse calculation: 199976667976342049.0
Puzzle:59: Log(2) for 525070384258266191 is approximately 58.865288438176815787. Reverse calculation: 525070384258266190.99
Puzzle:60: Log(2) for 1135041350219496382 is approximately 59.977450564669282481. Reverse calculation: 1135041350219496382.0
Puzzle:61: Log(2) for 1425787542618654982 is approximately 60.306464728992728608. Reverse calculation: 1425787542618654982.0
Puzzle:62: Log(2) for 3908372542507822062 is approximately 61.761273698209320329. Reverse calculation: 3908372542507822061.9
Puzzle:63: Log(2) for 8993229949524469768 is approximately 62.963545065677060031. Reverse calculation: 8993229949524469767.8
Puzzle:64: Log(2) for 17799667357578236628 is approximately 63.948484083037149251. Reverse calculation: 17799667357578236628.0
Puzzle:65: Log(2) for 30568377312064202855 is approximately 64.728673773273428832. Reverse calculation: 30568377312064202855.0

So, puzzle 66 private key is from
65.000000000000000000  log(2)
to
66.000000000000000000  log(2)


You can test puzzle 15 (or any) with this formula :

Code:
from mpmath import mp
import random
import secp256k1 as ice
import sys

def calculate_reverse_log2(log2_value):
    decimal_value = mp.power(2, log2_value)
    return decimal_value

mp.dps = 20  # Set the decimal precision to a sufficiently high value
target = "1QCbW9HWnwQWiQqVo5exhAnmfqKRrCRsvW"

while True:
    random_log2_value = mp.mpf(random.uniform(14.0, 15.0))
    reverse_result = calculate_reverse_log2(random_log2_value)
    HEX = "%064x" % int(reverse_result)
    dec = int(HEX, 16)
    caddr = ice.privatekey_to_address(0, True, dec)
    message = "[+] {}".format(dec);messages = [];messages.append(message);output = ''.join(messages) + "\r";sys.stdout.write(output);sys.stdout.flush()
    if target in caddr:
       wifc = ice.btc_pvk_to_wif(HEX)
       print(f"\n\033[32m[+] PUZZLE SOLVED: {wifc} \033[0m")
       break

Result is instant.

I can not see pattern here... Can you see ?? Grin

You can even do regression analysis


I'm lost between the size of the numbers and the precision required here . . .

There is no pattern. But it's not random either according to the polynomial analysis. There is an exact math formula for making this puzzle with some script, errors = ZERO.  With high decimal precision (mp.dps = 20 at least)
And the formula is in the creator's mind.
full member
Activity: 1078
Merit: 219
Shooters Shoot...
Regardless of the math used, eventually you have to transform the math into something, a public key, a h160, whatever type collision/match you are looking for.
Everything you listed is some math implementation.

But let us say it's pure math, do the "math" for how long it takes a current CPU to do straight additions, just using numbers. And use a higher end CPU with say 5.0 mghz capability.

IMO, you have to eventually transform the pure math into what you are searching for, or have a precomputed list of something...so to me, it can never be, just math.
You're failing on the assumption that nobody, nowhere, will ever advance the math itself. Or contrarily on the assumption that somebody will prove one day that you do need "precomputed tables" - this hasn't happened yet as well. The concept of a logarithm was invented just a few centuries ago and immediately changed engineering as we know it. Until that point, math without logs was the peak of advancements in human knowledge. So I beg you pardon - it is foremost, before of anything else, the math, not the count of transistors jumbling around in logic gates in your CPU, GPU, ASIC, or whatever. Those are just tools, not the fundaments.

I can give you a public key in a small bit range, and just using math, you would never solve/know if a match was found. Understand?

Arrogance much? What does "never" mean? Or is time only relevant when you zoom and peek into a nanosecond, a day, a trillion year? Maybe a single unit of Planck time?
Here's a hint: I start from 1 up to your N modulus, and I have a 100% probability that at some point I will break your key, or that at the end I can tell you a simple truth - that your key isn't in the finite cycle. Understand?

Ahhhh, finally, a response.

Maybe you should define, "pure math" before I indulge in a response, after all, that was the basis of my response.  But to quickly answer your last comment, no arrogance, if you use pure math, as in 1+1, 1-1, 1/1, 1x1. or something thereof, just math, pure math, then no, you will never find a public key that I give you, it could be public key with a private key of 1, you would not find it with simply, pure math, because you have to transform it somehow, based on a curve's properties. Whether that be a public/wallet address, a public key, a hash160, something. You understand what I am saying?

Who cares if one can do pure math additions at 14613798463164873684768763487632847687468364243274687346242387468746846238746 key/s, it's cool and all, but without transforming it somehow, via whatever curve's properties, you simply just have a bunch of numbers.
member
Activity: 85
Merit: 21
Regardless of the math used, eventually you have to transform the math into something, a public key, a h160, whatever type collision/match you are looking for.
Everything you listed is some math implementation.

But let us say it's pure math, do the "math" for how long it takes a current CPU to do straight additions, just using numbers. And use a higher end CPU with say 5.0 mghz capability.

IMO, you have to eventually transform the pure math into what you are searching for, or have a precomputed list of something...so to me, it can never be, just math.
You're failing on the assumption that nobody, nowhere, will ever advance the math itself. Or contrarily on the assumption that somebody will prove one day that you do need "precomputed tables" - this hasn't happened yet as well. The concept of a logarithm was invented just a few centuries ago and immediately changed engineering as we know it. Until that point, math without logs was the peak of advancements in human knowledge. So I beg you pardon - it is foremost, before of anything else, the math, not the count of transistors jumbling around in logic gates in your CPU, GPU, ASIC, or whatever. Those are just tools, not the fundaments.

I can give you a public key in a small bit range, and just using math, you would never solve/know if a match was found. Understand?

Arrogance much? What does "never" mean? Or is time only relevant when you zoom and peek into a nanosecond, a day, a trillion year? Maybe a single unit of Planck time?
Here's a hint: I start from 1 up to your N modulus, and I have a 100% probability that at some point I will break your key, or that at the end I can tell you a simple truth - that your key isn't in the finite cycle. Understand?
full member
Activity: 1078
Merit: 219
Shooters Shoot...
FinderOuter has similar functionality.
https://github.com/Coding-Enthusiast/FinderOuter


Code:
Missing Base16

PrivateKey: 00000000000000000000000000000000000000000000000000******a7b90de4
PubKey: 029588f9aace0310751f37d130afa1b792e70b542b29d373f64a56a50bcd90ac3f

The given key is missing 6 characters.
Total number of permutations to check: 16 777 216
Running in parallel.
Found the key: 00000000000000000000000000000000000000000000000000397f5aa7b90de4
Elapsed time: 00:00:37.3199093
k/s= 453 438

Hmmmm, I wonder why it's so much slower than the python script. I haven't looked at the foundouter code in a while, so I'm not 100% the language or if it is using multi threading.

When I run the same example in the one you used finderouter for, here are my results:

Code:
Known Characters aa7b90de4
 Public Key 029588f9aace0310751f37d130afa1b792e70b542b29d373f64a56a50bcd90ac3f
 Private Key Found: 0x397f5aa7b90de4
 Run Time         : 0:00:01.804207

That's a huge difference in speed, like 36 to 1, or 36 times faster.

Lol, Nevermind, I ran with 5 missing characters, instead of 6. Here is result for single core python script, and missing the first 6 characters:

Code:
Known Characters a7b90de4
 Public Key 029588f9aace0310751f37d130afa1b792e70b542b29d373f64a56a50bcd90ac3f
 Private Key Found: 0x397f5aa7b90de4
 Run Time         : 0:00:29.066556

It appears the more known characters, at the end, help reduce search time. Example:

Code:
Private Key Found: 0x33397f5aa7b90de4
 Run Time         : 0:00:19.312457

which was missing the first 6 characters compared to:

Code:
Known Characters a7b90de4
 Public Key 029588f9aace0310751f37d130afa1b792e70b542b29d373f64a56a50bcd90ac3f
 Private Key Found: 0x397f5aa7b90de4
 Run Time         : 0:00:29.066556

Also, is finderouter targeting the known public key or the h160/address? Mine is using h160. I imagine if I changed it to target known public key, it would speed it up. I'll test this later.

Not sure if I have the code best optimized, but first run, just checking for matching public key is a little faster than searching for h160 (obviously) but I wanted to see the difference, just in case finderouter was searching for public key match versus h160 match.

Result:

Code:
Known Characters a7b90de4
 Public Key 029588f9aace0310751f37d130afa1b792e70b542b29d373f64a56a50bcd90ac3f
 Private Key Found: 0x397f5aa7b90de4
 Run Time         : 0:00:23.770135
member
Activity: 173
Merit: 12
FinderOuter has similar functionality.
https://github.com/Coding-Enthusiast/FinderOuter


Code:
Missing Base16

PrivateKey: 00000000000000000000000000000000000000000000000000******a7b90de4
PubKey: 029588f9aace0310751f37d130afa1b792e70b542b29d373f64a56a50bcd90ac3f

The given key is missing 6 characters.
Total number of permutations to check: 16 777 216
Running in parallel.
Found the key: 00000000000000000000000000000000000000000000000000397f5aa7b90de4
Elapsed time: 00:00:37.3199093
k/s= 453 438
full member
Activity: 1078
Merit: 219
Shooters Shoot...
Quote
Interesting,  could you please share a code for this method you mentioned?

Sure. I will keep this simple, for the example provided above. If the known/unknown characters were more or less, I would probably do the code a little different, optimize it for the known/unknown, but for the example provided I would do this:

Code:
import sys
from datetime import datetime
import secp256k1 as ice

startTimeRun = datetime.now()
arq1 = open("btctalkexample.txt", "a")
#Private Key given in example: 0x397F5AA7B90DE4; we don't know the first 4 characters, but we know the last 10 characters
KnownPart = int('5aa7b90de4', 16)
TargetPub = '029588f9aace0310751f37d130afa1b792e70b542b29d373f64a56a50bcd90ac3f'
TargetPubXCoord = TargetPub[2:66]
num = 0x1000
hex_num = hex(num)[2:]

while num < 0x4000:
    combined = (num << 40) + KnownPart
    ResultingPub = ice.scalar_multiplication(combined).hex()[2:66]
    if ResultingPub == TargetPubXCoord:
        print(' Private Key Found:', hex(combined))
        arq1.write(hex(combined) + '\n')
        print(" Run Time         : " + str(datetime.now() - startTimeRun))
        sys.exit()
    num += 1

When I run it, it takes less than a second to find the private key:

Code:
Private Key Found: 0x397f5aa7b90de4
 Run Time         : 0:00:00.088019

I ran a test in which the first 6 characters were "unknown", it took right at 20 seconds to find the private key:

Code:
Private Key Found: 0x33397f5aa7b90de4
 Run Time         : 0:00:19.312457

jr. member
Activity: 32
Merit: 1
Has anyone ever seen a tool that tries only a set of keys? Let me explain, imagine you have this key
0x397f5aa7b90de4
What if you want to set the public key of this one 0x5aa7b90de4 and then try all combinations for the first 4 missing characters? as I understand it,  no tool exist to scan selected parts of a range, or do they exist?

You would have to give a better example of how many leading characters, because what you have now would only take a few seconds/minute, to iterate all possible combos, even with a single thread python script. Even if you do not know the leading character, you are looking at 16^4 combos, 65,536 possible combos.

But initially, I was thinking the same thing as albert0bsd was, it is similar to BSGS, because BSGS basically cuts off the last x characters, depending on your baby step file (how many public keys it contains), but for your specific example, you would need a baby step file with 2^40 keys, or modify the keys known down, to use a smaller size file.

But as is, without mod, you would merely start with 0x1000 + 0x5aa7b90de4; and increment 0x1000 by +=1 until match is found. 0x1000, 0x1001, 0x1002, etc. Not a very difficult script to put together, using python.

Buuuuuuut,

Quote
In fact I can say that I am sure about first few digits but I want to quickly try different first digits

Even if you knew the first 5 characters (which there is no way that you do), that does not mean much in the scope of this challenge, for example #130, because that would leave you with 2^112 left to search. Which can be done now via subtraction/division with a file full of 2^18 keys. But let's be real, as far as this challenge goes, people may say they know the leading x amount of characters, which they obviously do not; but maybe you have a different purpose/reason for what you are wanting to do.
Interesting,  could you please share a code for this method you mentioned?
full member
Activity: 1078
Merit: 219
Shooters Shoot...
Has anyone ever seen a tool that tries only a set of keys? Let me explain, imagine you have this key
0x397f5aa7b90de4
What if you want to set the public key of this one 0x5aa7b90de4 and then try all combinations for the first 4 missing characters? as I understand it,  no tool exist to scan selected parts of a range, or do they exist?

You would have to give a better example of how many leading characters, because what you have now would only take a few seconds/minute, to iterate all possible combos, even with a single thread python script. Even if you do not know the leading character, you are looking at 16^4 combos, 65,536 possible combos.

But initially, I was thinking the same thing as albert0bsd was, it is similar to BSGS, because BSGS basically cuts off the last x characters, depending on your baby step file (how many public keys it contains), but for your specific example, you would need a baby step file with 2^40 keys, or modify the keys known down, to use a smaller size file.

But as is, without mod, you would merely start with 0x1000 + 0x5aa7b90de4; and increment 0x1000 by +=1 until match is found. 0x1000, 0x1001, 0x1002, etc. Not a very difficult script to put together, using python.

Buuuuuuut,

Quote
In fact I can say that I am sure about first few digits but I want to quickly try different first digits

Even if you knew the first 5 characters (which there is no way that you do), that does not mean much in the scope of this challenge, for example #130, because that would leave you with 2^112 left to search. Which can be done now via subtraction/division with a file full of 2^18 keys. But let's be real, as far as this challenge goes, people may say they know the leading x amount of characters, which they obviously do not; but maybe you have a different purpose/reason for what you are wanting to do.
hero member
Activity: 862
Merit: 662
In fact I can say that I am sure about first few digits but I want to quickly try different first digits,  if I understand it well,  no software tries first digits only without touching the rest of input range.

I already explained something similar here:

Re: Solving partial WIF with two missing parts

With some changes it can be applied to your case it's just matter to know what are you doing
jr. member
Activity: 47
Merit: 2
Has anyone ever seen a tool that tries only a set of keys? Let me explain, imagine you have this key
0x397f5aa7b90de4
What if you want to set the public key of this one 0x5aa7b90de4 and then try all combinations for the first 4 missing characters? as I understand it,  no tool exist to scan selected parts of a range, or do they exist?

If you are sure about the last digits of the Privatekey is easy to make some transformations on the public key with arithmetic and work with the result with BSGS.


In fact I can say that I am sure about first few digits but I want to quickly try different first digits,  if I understand it well,  no software tries first digits only without touching the rest of input range.

I already know about WIF solvers,  they are too slow,  what I don't know is the correct set of baby and giant steps based on the size of the key.
member
Activity: 286
Merit: 15
Has anyone ever seen a tool that tries only a set of keys?

Of course we saw it. If you are missing no more than 10 characters, maybe it will work.

Code:
import sys
import os
import time
import secrets
import random
import binascii
import base58
import secp256k1 as ice
import multiprocessing
from multiprocessing import cpu_count

def generate_private_key_WIF(start, miss):
    return start + "".join(
        secrets.choice(
            "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
        )
        for _ in range(miss)
    )

def check_private_key(start, miss, target_caddr):
    while not STOP_EVENT.is_set():  
        private_key_WIF_str = generate_private_key_WIF(start, miss)
        if start[0] == '5':
            private_key_WIF = private_key_WIF_str
            first_encode = base58.b58decode(private_key_WIF)
            private_key_full = binascii.hexlify(first_encode)
            private_key = private_key_full[2:-8]
        if start[0] in ['L', 'K']:
            private_key_WIF = private_key_WIF_str
            first_encode = base58.b58decode(private_key_WIF)
            private_key_full = binascii.hexlify(first_encode)
            private_key = private_key_full[2:-10]
        private_key_hex = private_key.decode("utf-8")
        dec = int(private_key_hex[0:64], 16)
        HEX = "%064x" % dec
        mul = ice.scalar_multiplication(dec)
        caddr = ice.pubkey_to_address(0, 1, mul)
        message = "\r[+] {} ".format(private_key_WIF_str)
        messages = []
        messages.append(message)
        output = "\033[01;33m" + ''.join(messages) + "\r"
        sys.stdout.write(output)
        sys.stdout.flush()
        if caddr == target_caddr:
            wifc = ice.btc_pvk_to_wif(HEX)
            t = time.ctime()
            sys.stdout.flush()
            print(f"\n\033[01;33m[+] BINGO!!! {t} \033[0m")  
            print(f"\033[32m[+] PUZZLE SOLVED: {wifc} \033[0m")
            with open('BINGO.txt', 'a') as file:
                t = time.ctime()
                file.write('\n\nMatch Found: ' + t)
                file.write('\nPrivatekey (dec): ' + str(dec))
                file.write('\nPrivatekey (hex): ' + hex(dec)[2:])
                file.write('\nPrivatekey (wif): ' + wifc)
                
            STOP_EVENT.set()  
            return  

if __name__ == '__main__':
    start = "KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qZM21gaY8W"
    miss = 52 - (len(start))
    # Define the target
    target_caddr = "18ZMbwUFLMHoZBbfpCjUJQTCMCbktshgpe"
    if os.name == 'nt':
        os.system('cls')
    else:
        os.system('clear')
    t = time.ctime()
    sys.stdout.write(f"\033[01;33m[+] {t}\n")
    sys.stdout.write(f"\033[01;33m[+] Ending characters missing: {miss}\n")
    sys.stdout.write(f"\033[01;33m[+] Target address: {target_caddr}\n")
    sys.stdout.flush()

    # Create a global STOP_EVENT
    STOP_EVENT = multiprocessing.Event()

    # Create a pool of worker processes
    num_processes = multiprocessing.cpu_count()
    pool = multiprocessing.Pool(processes=num_processes)

    # Start the worker processes with different starting points
    for i in range(num_processes):
        pool.apply_async(check_private_key, args=(start, miss, target_caddr))

    # Close the pool and wait for all processes to complete
    pool.close()
    pool.join()


  • Wed Feb 21 08:23:37 2024
  • Ending characters missing: 10
  • Target address: 18ZMbwUFLMHoZBbfpCjUJQTCMCbktshgpe
  • KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qZM21gaY8WhMLMGKsr4w
  • BINGO!!! Wed Feb 21 08:23:37 2024
  • PUZZLE SOLVED: KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qZM21gaY8WN2CdwnTG57

But here, we need to solve Puzzle 66.
19 characters are missing from KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3q.

That is impossible to solve. It doesn't matter how you present the private key. The numbers are so big that it is impossible.
It doesn't matter which programming language it is.
hero member
Activity: 862
Merit: 662
Has anyone ever seen a tool that tries only a set of keys? Let me explain, imagine you have this key
0x397f5aa7b90de4
What if you want to set the public key of this one 0x5aa7b90de4 and then try all combinations for the first 4 missing characters? as I understand it,  no tool exist to scan selected parts of a range, or do they exist?

If you are sure about the last digits of the Privatekey is easy to make some transformations on the public key with arithmetic and work with the result with BSGS.

newbie
Activity: 23
Merit: 0
Has anyone ever seen a tool that tries only a set of keys? Let me explain, imagine you have this key
0x397f5aa7b90de4
What if you want to set the public key of this one 0x5aa7b90de4 and then try all combinations for the first 4 missing characters? as I understand it,  no tool exist to scan selected parts of a range, or do they exist?

WifSolverCuda
https://github.com/PawelGorny/WifSolverCuda
Read the instructions and see if it fits what you want.

You need to scan from
KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9SDFgRkaA5tUpAD
to
KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgh5KmfBjdfkR2qYYJ
with -stride 5fa8624c7fba400

Do what you want, but with private keys. For public keys I don't think there is any script.
jr. member
Activity: 47
Merit: 2
Has anyone ever seen a tool that tries only a set of keys? Let me explain, imagine you have this key
0x397f5aa7b90de4
What if you want to set the public key of this one 0x5aa7b90de4 and then try all combinations for the first 4 missing characters? as I understand it,  no tool exist to scan selected parts of a range, or do they exist?
newbie
Activity: 12
Merit: 1
and 2^130 which requires a search between 2^129 and 2^130 equals 680,564,733,841,876,926,926,749,214,863,536 km.
therefore 71,986,683,526 light years (almost 72 billion).
I agree with the great luck with random and many subkeys....but many.
[/quote]

If you tried brute forcing 130, then yes, however, since we know the public key, you would use Kangaroo or BSGS. With Kangaroo, you’d be looking at roughly the same amount of ops as 66.
[/quote]

yeah, i mean with BSGS and a lot of subkeys
full member
Activity: 1078
Merit: 219
Shooters Shoot...
It's not that I'm a pessimist but every time I think about the magnitude of the spaces we face I get chills  Undecided
For example, in puzzle 66 the number of possible positions is 36893488147419103231. To understand this it is necessary to resort to an analogy. If each of those numbers were a millimeter, that would be equivalent to 3901.95 light years!!!
Any attempt at sequential search is then ruled out outright. Only with methods like kangaroo or bsgs would there be a possibility if the public key was known.
By the way, I leave a py script to help find the public key from the public address.
https://github.com/Dedaloo/PublicKeyHunt

and 2^130 which requires a search between 2^129 and 2^130 equals 680,564,733,841,876,926,926,749,214,863,536 km.
therefore 71,986,683,526 light years (almost 72 billion).
I agree with the great luck with random and many subkeys....but many.
If you tried brute forcing 130, then yes, however, since we know the public key, you would use Kangaroo or BSGS. With Kangaroo, you’d be looking at roughly the same amount of ops as 66.
newbie
Activity: 12
Merit: 1
It's not that I'm a pessimist but every time I think about the magnitude of the spaces we face I get chills  Undecided
For example, in puzzle 66 the number of possible positions is 36893488147419103231. To understand this it is necessary to resort to an analogy. If each of those numbers were a millimeter, that would be equivalent to 3901.95 light years!!!
Any attempt at sequential search is then ruled out outright. Only with methods like kangaroo or bsgs would there be a possibility if the public key was known.
By the way, I leave a py script to help find the public key from the public address.
https://github.com/Dedaloo/PublicKeyHunt

and 2^130 which requires a search between 2^129 and 2^130 equals 680,564,733,841,876,926,926,749,214,863,536 km.
therefore 71,986,683,526 light years (almost 72 billion).
I agree with the great luck with random and many subkeys....but many.
newbie
Activity: 41
Merit: 0
It's not that I'm a pessimist but every time I think about the magnitude of the spaces we face I get chills  Undecided
For example, in puzzle 66 the number of possible positions is 36893488147419103231. To understand this it is necessary to resort to an analogy. If each of those numbers were a millimeter, that would be equivalent to 3901.95 light years!!!
Any attempt at sequential search is then ruled out outright. Only with methods like kangaroo or bsgs would there be a possibility if the public key was known.
By the way, I leave a py script to help find the public key from the public address.
https://github.com/Dedaloo/PublicKeyHunt
member
Activity: 286
Merit: 15
Although i have noticed running my code on the xbox series x runs at least 5 times quicker if not more than running the same code on my laptop.  Huh

Bitcoin mining, which involves solving complex mathematical problems to validate transactions and add them to the blockchain, requires specialized hardware known as ASICs (Application-Specific Integrated Circuits) due to the intense computational requirements. Even with the increased processing power of an Xbox Series X compared to a laptop, it's nowhere near sufficient for Bitcoin mining, let alone brute forcing.
newbie
Activity: 14
Merit: 0
Ok so ill admit i cant code at all.

However I've unleashed my inner chatgpt language skills of seductive talking and come up with many apps for uwp/xbox.
From visual btc generators to hex range slider bars to sequential brute force the apps go on and its quite fun all be it a lot of hours debugging urgh.
Trying to convert kangaroo and keyhunt to uwp is way way past my present skills at the moment.

My main interest started from this thread and after reading every page of this thread like 90% of commenters we all thought we have found a way to solve a certain puzzle and most people do even i have a working solution but realization hit and i realised I'm not going to live thousands of years Sad

However learning all about btc has been really fun and seeing stuff on my xbox is pretty cool considering i had zero skills in coding.
Although i have noticed running my code on the xbox series x runs at least 5 times quicker if not more than running the same code on my laptop.  Huh

Take note this code is UWP so while it can run on xbox its not optimized for cpu or gpu usage of which both is available for use although partially for GPU so lots more tinkering to play with and many ideas in the works.

Yes i know i don't got a chance (well a 0.0000000000000000000001%) blah blah but im having fun with it and seeing code no one has PROBABLY not done on a series x yet but who knows.

All in all its all fun and games and if anyone has the skills in uwp feel free to chime in on the limitations or pros of using uwp.
Pages:
Jump to: