Author

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

legendary
Activity: 1232
Merit: 1011

Have you tried hashcat yet?

Wish you find your coins, good luck.

I've spent close to 250k since 2014 on this, so, yes.
Bruteforcing is no option.

Dave succesfully recovered a wallet holding +- 1800BTC around the same time (lost all passwords the same day), so i know he's a capable guy.
If he tells me after almost ten years it's impossible using the bruteforce technique, then i trust him.

I guess i'll wait it out until our technology evolves.
jr. member
Activity: 75
Merit: 5
Pollard Kangaroo approach is for the know private key range and for the best, within 125 bit range and of course since you have the Multibit wallet handy all you have to do is "Once you located the files, if you have access to an old multibit app on you computer you need to import the wallet and export the private keys to a new wallet. If you do not have a copy of Multibit, you can use OpenSSL together with your password to decrypt the files and recover the keys."

You need the password to export them. I still have the wallet open every single day since then.
I just keep looking at what value I've missed out on Smiley

The difference between your case and the puzzle is that we can't know the specific bit range just by looking at the public key and transactions from your pubkeys can't tell us what range the private key would be or else all of Satoshi wallets with exposed pubkeys would have been emptied by now. The best we would need to do is scan from first bit all the way to the end of the 256 bit range which of course would be like trying to scan for the wallets of Satoshi with the 50 bitcoins from the early mining... wouldn't pay off stilleven if you are able to scan for 1 wallet successfully, you'd need funds from 10 of those wallets to scan for just 1
jr. member
Activity: 69
Merit: 2
Speaking of spamming the topic with unimportant content!

When you guys realize that in order to find a key based on address alone, first you'd need to break rmd160, then sha256 to get the public key and then find the private key based on the public key, since only public key and private key are directly related mathematically.

What you should do instead now that you are using your time, you should find any relation between similar addresses and their public/ private keys with  their sha256 hashes, at least this way you are one step closer to solving 66 etc, because you won't have to face rmd160.

However, trying to do that will require more power and time than solving the puzzle #160.

So don't waste your time on something that difficult, try finding ways to go around the EC rules and break/ bend them either completely or partially.


For example, this is a method to partially break EC :

Divide a point by e.g, 5, then divide n by 5, and then add the result of p/5 to n/5, if your point is not divisible by 5 depending on the last digit of the private key, the division result differs.

Demonstration :
823 / 5 = 164.6
Now all you need is to extract 0.6 of n in secp256k1 and keep it for next operation, then after dividing 823 by 5, you just divide n by 5 and add the result of 823/5 to n/5 + 6/10 of n = 164

But what happens if we divide 822 / 5 = 164.4, just follow the previous steps this time extract 4/10 of n to add to your second result.

We just broke EC by simple math operations, though when your key is large and unknown, the fraction could be any percentage of n, but if you divide by 2 up to 9, since any key can only have 0 up to 9 on it's last digit, 1 out of 10 division + n/th + n/remainder will work.



I could never find these things out if I was still working on addresses and hashes.😉




Quote
what I need to know is, how to get the checkpoints for the puzzle 130 and how many checkpoints do i need their x coordinates in the checkpoints? Also will the code print the target public key's equivalent private key or will it save it to a file? Thanks as we all learning...

You can use key subtracter by alberto, https://bitcointalksearch.org/topic/keysubtracter-test-development-requests-bug-reports-5360656

You could use a known public key and use -a - s with -r 0:f  -n 30 to have 15 + and -15 of your known public key, however use -z and -x to have only x coordinates, then you can convert them all to decimal.

Simply the best idea I've seen in days, truly ingenious. I will run some tests and check some calculations, thank you very much!!  Cheesy Grin
copper member
Activity: 1330
Merit: 899
🖤😏
hi members!

I have a multibit classic wallet that currently holds 17BTC
Somewhere in 2014/2015 i lost my wallet password.

Many attempts have been tried to bruteforce the wallet password, without any success.
KeychainX, dave bitcoin, everyone already tried to guess or break my password.


Would you asume there is a possibility to use software to try and recover my wallet using the Pollard approach?
Can someone point me in the right direction on what sofware and settings i should be using?

I still have access to the Multibit wallet, only the password is missing.
I have my wallet address and it's public key.
Maybe this could come in handy to extract certain transaction data?

Thank you
In here we are aliens with passwords, we only  work with public keys, you could post it here so we could check it out ( not making any difference, because we are stuck with keys smaller than 160 bit ).

Have you tried hashcat yet?
Regarding pollard's method aka kangaroo, you could divide your public key by 2 but before that either add 1G or subtract 1G then you'll have 2 public keys, original and it's +1, you could divide them both by 2 four times in a row, then add 1G to each result and divide all of them by 2, at the end you will have millions of keys, which would be impossible to do the division and addition manually you'd need a program to do that which doesn't exist, but if you could do that then for example you could divide n of secpk1 by 2 as many times as you divided your public key and input those millions/ billions of offsets into kangaroo and then use n/2, n/4, n/8 etc as your start range, you could subtract an estimated number from your n/2 and use it as start and add that estimated number to n/2 and use it as end range, I'd imagine you'll have to try at least 200 start/end ranges one by one and spend at least 6 hours for each search.

Wish you find your coins, good luck.
legendary
Activity: 1232
Merit: 1011
I have experience working with multibit wallets. Maybe I can help.

The wallet itself is lost. Dave Bitcoin has been working on it since early 2014, bruteforce of the entire range up to 10 characters has been attempted.
At one point, KeychainX found a false positive using the words i gave him, but it was just that - a false positive.

My only remaining options at this point are to handle this like solving the puzzles, but with my own wallet  Undecided



Pollard Kangaroo approach is for the know private key range and for the best, within 125 bit range and of course since you have the Multibit wallet handy all you have to do is "Once you located the files, if you have access to an old multibit app on you computer you need to import the wallet and export the private keys to a new wallet. If you do not have a copy of Multibit, you can use OpenSSL together with your password to decrypt the files and recover the keys."

You need the password to export them. I still have the wallet open every single day since then.
I just keep looking at what value i've missed out on Smiley
jr. member
Activity: 75
Merit: 5
hi members!

I have a multibit classic wallet that currently holds 17BTC
Somewhere in 2014/2015 i lost my wallet password.

Many attempts have been tried to bruteforce the wallet password, without any success.
KeychainX, dave bitcoin, everyone already tried to guess or break my password.


Would you asume there is a possibility to use software to try and recover my wallet using the Pollard approach?
Can someone point me in the right direction on what sofware and settings i should be using?

I still have access to the Multibit wallet, only the password is missing.
I have my wallet address and it's public key.
Maybe this could come in handy to extract certain transaction data?

Thank you

Pollard Kangaroo approach is for the know private key range and for the best, within 125 bit range and of course since you have the Multibit wallet handy all you have to do is "Once you located the files, if you have access to an old multibit app on you computer you need to import the wallet and export the private keys to a new wallet. If you do not have a copy of Multibit, you can use OpenSSL together with your password to decrypt the files and recover the keys."
hero member
Activity: 583
Merit: 502
hi members!

I have a multibit classic wallet that currently holds 17BTC
Somewhere in 2014/2015 i lost my wallet password.

Many attempts have been tried to bruteforce the wallet password, without any success.
KeychainX, dave bitcoin, everyone already tried to guess or break my password.


Would you asume there is a possibility to use software to try and recover my wallet using the Pollard approach?
Can someone point me in the right direction on what sofware and settings i should be using?

I still have access to the Multibit wallet, only the password is missing.
I have my wallet address and it's public key.
Maybe this could come in handy to extract certain transaction data?

Thank you

I have experience working with multibit wallets. Maybe I can help.
legendary
Activity: 1232
Merit: 1011
hi members!

I have a multibit classic wallet that currently holds 17BTC
Somewhere in 2014/2015 i lost my wallet password.

Many attempts have been tried to bruteforce the wallet password, without any success.
KeychainX, dave bitcoin, everyone already tried to guess or break my password.


Would you asume there is a possibility to use software to try and recover my wallet using the Pollard approach?
Can someone point me in the right direction on what sofware and settings i should be using?

I still have access to the Multibit wallet, only the password is missing.
I have my wallet address and it's public key.
Maybe this could come in handy to extract certain transaction data?

Thank you
jr. member
Activity: 75
Merit: 5

It will certainly be touching the checkpoint BUT WHEN NO BODY CAN TELL FOR CERTAIN!

I saw someone commented on my script saying how script generated checkpoints and stuff,, please study pub key generation before using this script

Certainly!!!
I did comment but never said script generated checkpoint. I said I generated the checkpoint randomly myself between the range of 130 bits so i saved it in the checkpoints.txt file. but I was eventually advised how I could get the key subtractor from albertobsd but I couldn't compile the code so I downloaded the windows version from WanderingPhilosopher and it worked like magic.

I tried it with generating 1000 keys for a test and I thought of how I could derive the decimal representations of the public keys of so many numbers most especially if we are working with billions of numbers. now I wrote this code that takes arguments for -f for the file you got from your key extractor and -o for the output you want to save the decimal representation of the public keys for the x coordinates as advised, which in my case I always used the checkpoints.txt as my -o as it makes it more easy because it's all in the same directory

code is below
Code:
import argparse

def extract_x_coordinate(compressed_key):
    # Remove the prefix (02 or 03) and extract x-coordinate
    x_coord_hex = compressed_key[2:]
    x_coord_decimal = int(x_coord_hex, 16)
    return x_coord_decimal

def main():
    parser = argparse.ArgumentParser(description='Extract x-coordinates of compressed public keys and save as decimals')
    parser.add_argument('-f', '--input-file', required=True, help='Path to the input file containing compressed public keys')
    parser.add_argument('-o', '--output-file', required=True, help='Path to the output file to save decimal x-coordinates')
    args = parser.parse_args()

    try:
        with open(args.input_file, 'r') as input_file:
            lines = input_file.readlines()

        decimal_coordinates = []
        for line in lines:
            compressed_key = line.split()[0]  # Extract only the public key part
            decimal_x_coord = extract_x_coordinate(compressed_key)
            decimal_coordinates.append(str(decimal_x_coord))

        with open(args.output_file, 'w') as output_file:
            output_file.write('\n'.join(decimal_coordinates))

        print(f"Decimal x-coordinates saved to {args.output_file}")

    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()

I am still testing your code out @unpluggedcoin
I see something different and it's something good
let me fully understand how the code works
thanks




let me fully understand how the code works
thanks

Just for clarification purposes and better understanding of the works of the code, let me provide the tests I just carried out and the result
Code:
I had the private key: 0000000000000000000000000000000000000000000000000000000000000fff
Public key hex: 029c2198986d202467c055c7347355750506105b3e2874dbf28f7f0c3966e1af88
uncompressed pubkey: 049c2198986d202467c055c7347355750506105b3e2874dbf28f7f0c3966e1af888637496c8eddff12f9dd414636565e0fefddf5cd52d484550ec9fb2d8dd0914a
Decimal X coordinate: 70620163506976111171066173961856210080659139929929089024144375783710733217672
Decimal Y coordinate: 60707605052923732375620988065125934494722916954686011896369305439279242056010
bot in the xy.txt
my checkpoints.txt x coordinates in decimal is below:
48534083396712420011161436556403147439265879225492303623124868600374192125513
113877090530951511693952929019428549049897440102965425133344510169891671188214
54703663425791593299627451355291558428018142888690298046450063544492403022202
35695519954865045812664034136944711038213290511429728516075604875860252135936
4377758882192617438073703099513664472199842035925839546423515265326631629185
81438813890211960163838804516478989860247194598335673558809549067405651523639
38691014678829756200842582202414712487786539326456194623982039889948932988919
34209530101981187896671676793789826085284188147541725074418631248878730074163
63759668502957471302068547000633741991437373340461175426601087253499295081839
67189090958477772831500862816583578870907213977274273861176457448640950298883

pubkey extracted below:
036b4d515687d6b0793df366326fe6977cb93e6569667971966c16c495be4e3649 # + 354
03fbc4262e32abf91382bbeeb138d589e2eccb0b0490becbc4e444803228a922f6 # + 357
0278f12d2070d8bcb400267cbbbff637f165ffb09895f5734e3551bcbc09a5597a # + 35a
024eeaf2c5af8ab327dae931895cbba89cff2ce7566da1304bb0ced9e704559200 # + 35d
0309adb945b876313bac9c290d47c1e6aa1f3f3c9ae8c6777061512c2bbd703181 # + 360
02b40cbc35dcd4eecf13580ac710f474788d8ee3eff1b60956dd79be8a0c5eb837 # + a65
02558a56983b03c6c6717db862e59dd075b39f9ba2ca01b0ac95a69cec1f3a5ff7 # + a68
034ba1e86aa9f8b3570ba0903140ad1bb0602a0c567cc397dbff69fed66619d833 # + a6b
028cf6b189c50519566a94e1f5ab5e9530d459a93504cb13eb349fac3eade8a56f # + a6e
02948bad866c3e2c2602d4616352be20ae30a652e34a29936104766eb798b3e903 # + bb8
029c2198986d202467c055c7347355750506105b3e2874dbf28f7f0c3966e1af88 # target

how do I calculate my target private key from the result I got below
X coordinate decimal: 70620163506976111171066173961856210080659139929929089024144375783710733217672
Y coordinate decimal: 60707605052923732375620988065125934494722916954686011896369305439279242056010 0

uncompressed pubkey from result: 049c2198986d202467c055c7347355750506105b3e2874dbf28f7f0c3966e1af888637496c8eddff12f9dd414636565e0fefddf5cd52d484550ec9fb2d8dd0914a
compressed pubkey from result: 029c2198986d202467c055c7347355750506105b3e2874dbf28f7f0c3966e1af88
that was because the target's x coordinate pubkey was also in the checkpoints.txt

but I have excluded the target's pubkey from the checkpoints now it's still searching. will let you know what the result is



Code:
[quote author=bestie1549 link=topic=1306983.msg62709951#msg62709951 date=1692290267]
[quote author=bestie1549 link=topic=1306983.msg62709740#msg62709740 date=1692287706]
[quote author=unpluggedcoin link=topic=1306983.msg62709645#msg62709645 date=1692286633]

how do I calculate my target private key from the result I got below
X coordinate decimal: 70620163506976111171066173961856210080659139929929089024144375783710733217672
Y coordinate decimal: 60707605052923732375620988065125934494722916954686011896369305439279242056010 0

uncompressed pubkey from result: 049c2198986d202467c055c7347355750506105b3e2874dbf28f7f0c3966e1af888637496c8eddff12f9dd414636565e0fefddf5cd52d484550ec9fb2d8dd0914a
compressed pubkey from result: 029c2198986d202467c055c7347355750506105b3e2874dbf28f7f0c3966e1af88
that was because the target's x coordinate pubkey was also in the checkpoints.txt

but I have excluded the target's pubkey from the checkpoints now it's still searching. will let you know what the result is
[/quote]

I am about to hit it for puzzle 130... I need 5TB hard disk space, I just need to calculate the result from my search and I will fully understand how it works. if you can please explain 1 last time with this result.

I would really appreciate it. I am still very new with the key extraction and I am definitely learning very fast
thanks



Code:
[quote author=bestie1549 link=topic=1306983.msg62709951#msg62709951 date=1692290267]
[quote author=bestie1549 link=topic=1306983.msg62709740#msg62709740 date=1692287706]
[quote author=unpluggedcoin link=topic=1306983.msg62709645#msg62709645 date=1692286633]

how do I calculate my target private key from the result I got below
X coordinate decimal: 70620163506976111171066173961856210080659139929929089024144375783710733217672
Y coordinate decimal: 60707605052923732375620988065125934494722916954686011896369305439279242056010 0

I would really appreciate it. I am still very new with the key extraction and I am definitely learning very fast
thanks
[/quote]

Bro i am very confused with the results.txt
All i get is the same result in the xy.txt then 0 at the end of it in the results.txt
what do I do now? I am testing the code with much smaller bits because I need to know how it really works
please kindly explain to me like a dummy... sometimes it sticks faster that way



Code:
[quote author=bestie1549 link=topic=1306983.msg62709951#msg62709951 date=1692290267]
[quote author=bestie1549 link=topic=1306983.msg62709740#msg62709740 date=1692287706]
[quote author=unpluggedcoin link=topic=1306983.msg62709645#msg62709645 date=1692286633]

how do I calculate my target private key from the result I got below
X coordinate decimal: 70620163506976111171066173961856210080659139929929089024144375783710733217672
Y coordinate decimal: 60707605052923732375620988065125934494722916954686011896369305439279242056010 0

I would really appreciate it. I am still very new with the key extraction and I am definitely learning very fast
thanks
[/quote]

Bro i am very confused with the results.txt
All i get is the same result in the xy.txt then 0 at the end of it in the results.txt
what do I do now? I am testing the code with much smaller bits because I need to know how it really works
please kindly explain to me like a dummy... sometimes it sticks faster that way

With 20 TB RAM and 5 TB SSD we can break 130 tonight if only I know how to calculate the found result from the extracted pubkeys from this code from @unpluggedcoin
member
Activity: 239
Merit: 53
New ideas will be criticized and then admired.
important basic information.:
You can not only subtract points or divide them, there is also addition and multiplication, dont get complicated with floats or negative numbers by subtracting or dividing too much from a pubkey.
if you are looking for the
pk=1000
use as cap 1500
Now explore with addition and multiplication.
if you find 1500, subtract your addition or multiplication and you will get pk.
newbie
Activity: 18
Merit: 0

@unpluggedcoin I see so much potentials in this code... I need to know how we can further get something to work by mapping one point to another on the curve so even if x coordinates is not going to hit, maybe the double or subtracted or divided would... we can work together if you want... though still very new with the curve but I'm trying my best... I must admit.

To all who are using my script and have doubts!

First of all, the script is not some kind of magical idea or trick no nothing! It is simplest subtraction of equal amount in parts! The script won't generate any points itself into checkpoints.txt file. You have to provide it both checkpoints.txt and xy.txt files. It will only generate j_value.txt file in which it will be saving number of iterations (you'll know what they are in a minute). The script is a simplest possible kangaroo sort of thing and nothing else. Let me explain again:
Suppose our puzzle pub key has the private key 1593 and its bit range is between 1024 to 2048.
You have its public key x and y coordinates in decimal format in xy.txt file in same directory.
You have checkpoints.txt file in which you have public key x coordinate only in decimal (1 per line).
These are the public keys of starting private keys. In our example suppose they are 2 to 11. Now you have 10 x coordinates in checkpoints.txt file. (The important point why I gave it a shot is that I liked the idea of doubling the checkpoints while keeping it single because starting 10 private keys and last 10 private keys have same x coordinates. So if you subtract public key of 15 (15 is private key) from the public key of 10 (10 is private key) you'll get the public key of n-4 whose x coordinate must be same as of 5.
back to our example So you place initial 11 public keys x coordinates in checkpoints.txt file.
Script loads checkpoints.txt file and subtracts from it equal parts in one iteration and write 1 in j_value.txt file. I writes 2 after second iteration and so on. So if power goes out or anything happens and system is off, your script will start from where it left. Here is our example working:
pubkeys 2-11 are loaded.
You can change your settings, i'll just show what I did back there:
As we know the range it is between 1024 and 2048 (For puzzle 125 I divided the starting range into 100,000 parts, so scripts single iteration has 100,000 parts, (these are sort of subtraction jumps) in our example suppose we pick 16 equal jumps and we divide range into 10 parts so one subtraction is subtracting 102 (there is always be a whole number in EC don't worry about perfect numbers). Let's run it,

1593-102=1491 (script matches this point within checkpoints.txt file, NO MATCH)
1491-102=1389 (NO MATCH)
1389-102=1287=(NO MATCH)
.
.
.
165-102=63 (NO MATH)

1st iteration completed. The script writes 1 in j_value.txt file. NOW script subtracts 11 from your puzzle pub key and then starts iteration:

1593-11= 1582 (Now this replaces the starting point, now please don't asks how you would get back to original pub key, be mindful)

1582-102=1480 (NO MATCH)
1480-102=1378 (NO MATCH)
.
.
.
154-102=52 (NO MATCH)

It will certainly be touching the checkpoint BUT WHEN NO BODY CAN TELL FOR CERTAIN!

I saw someone commented on my script saying how script generated checkpoints and stuff,, please study pub key generation before using this script



Few pages earlier OP himself asked if someone needed help to upgrade system and stuff like that, I saw people bashing other people, sort of disappointing! I did asked him if I could have access to a strong CPU with more RAM and few TB HARD, I could have cracked puzzle 125, considering the time I ran those script on my dual core with upgraded 8 RAM.
copper member
Activity: 1330
Merit: 899
🖤😏

because at first you made mention of something quote "you should find any relation between similar addresses and their public/ private keys with  their sha256 hashes"... with that said, what kind of relationship are you talking about? besides that, I thought hashes are one way and cannot be calculated the other way unlike the EC curve that is based solely on the SECP256K1 implementations, one point linking to another point on the curve... I might be wrong though. Can you expatiate how we can successfully find the relation between addresses and their hashes...

Anything is always possible and I always keep a good faith...

Don't go after hashes and addresses, that is  for tech giants not for puzzle solvers, anyone trying to find relations between addresses and hashes is lifting more than he could/ should, because after breaking 2 hash functions which is equal to breaking a 256 bit key, you will have to deal with the public key, you could however solve 66 up to 124 in a few month using kangaroo but breaking 2 hash functions is not something easy.

A group effort is needed to partially break ECC and solve the keys 130, 135 etc, it doesn't matter if someone uses our ideas to solve the puzzles and keep the coins, what matters is us throwing as big as we can find at ECC's window to see when it cracks.

And when we start seeing cracks on the glass, we could think of more protection before billions of dollars and millions of lives are ruined.😉
jr. member
Activity: 75
Merit: 5

You can use key subtracter by alberto, https://bitcointalksearch.org/topic/keysubtracter-test-development-requests-bug-reports-5360656

You could use a known public key and use -a - s with -r 0:f  -n 30 to have 15 + and -15 of your known public key, however use -z and -x to have only x coordinates, then you can convert them all to decimal.
[/quote]

Great... thanks for this
You are a life saver
I am drastically learning so much as the day goes by...
jr. member
Activity: 75
Merit: 5
jr. member
Activity: 75
Merit: 5
Speaking of spamming the topic with unimportant content!

When you guys realize that in order to find a key based on address alone, first you'd need to break rmd160, then sha256 to get the public key and then find the private key based on the public key, since only public key and private key are directly related mathematically.

What you should do instead now that you are using your time, you should find any relation between similar addresses and their public/ private keys with  their sha256 hashes, at least this way you are one step closer to solving 66 etc, because you won't have to face rmd160.

However, trying to do that will require more power and time than solving the puzzle #160.

So don't waste your time on something that difficult, try finding ways to go around the EC rules and break/ bend them either completely or partially.


For example, this is a method to partially break EC :

Divide a point by e.g, 5, then divide n by 5, and then add the result of p/5 to n/5, if your point is not divisible by 5 depending on the last digit of the private key, the division result differs.

Demonstration :
823 / 5 = 164.6
Now all you need is to extract 0.6 of n in secp256k1 and keep it for next operation, then after dividing 823 by 5, you just divide n by 5 and add the result of 823/5 to n/5 + 6/10 of n = 164

But what happens if we divide 822 / 5 = 164.4, just follow the previous steps this time extract 4/10 of n to add to your second result.

We just broke EC by simple math operations, though when your key is large and unknown, the fraction could be any percentage of n, but if you divide by 2 up to 9, since any key can only have 0 up to 9 on it's last digit, 1 out of 10 division + n/th + n/remainder will work.



I could never find these things out if I was still working on addresses and hashes.😉




Quote
what I need to know is, how to get the checkpoints for the puzzle 130 and how many checkpoints do i need their x coordinates in the checkpoints? Also will the code print the target public key's equivalent private key or will it save it to a file? Thanks as we all learning...

You can use key subtracter by alberto, https://bitcointalksearch.org/topic/keysubtracter-test-development-requests-bug-reports-5360656

You could use a known public key and use -a - s with -r 0:f  -n 30 to have 15 + and -15 of your known public key, however use -z and -x to have only x coordinates, then you can convert them all to decimal.

Your ideas are always nailing it bro, but for the sake of clarification, can we be sure which parts we need to work with? Puzzle 66 or 130? because at first you made mention of something quote "you should find any relation between similar addresses and their public/ private keys with  their sha256 hashes"... with that said, what kind of relationship are you talking about? besides that, I thought hashes are one way and cannot be calculated the other way unlike the EC curve that is based solely on the SECP256K1 implementations, one point linking to another point on the curve... I might be wrong though. Can you expatiate how we can successfully find the relation between addresses and their hashes...

Anything is always possible and I always keep a good faith...
jr. member
Activity: 75
Merit: 5

Also for checkpoint.txt I just need to paste x coordinates on one line per key and save their private keys?  What else do I need to change on the script?

I appreciate it.

Edit, I got it running, I just need to know what to change for addition and subtraction, should I put values in decimal? And why it won't show anything on screen? Lol it just blinks endlessly.

Here is how to tune script as per your needs:
1. xy.txt file must have x and y coordinates in decimal format with a single space between them, as I clarified earlier.
2. In checkpoints.txt file you don't need to save their private keys, why? that is whole point, because we keep starting 100 million or 1 billion pub keys' x coordinates which will work as 2 billions, so it is obvious that their private keys are from 2 to 1 billion or the last 1 billion.
3. There are 3 things that you can change, step size to be subtracted, number of steps, and number of iterations.
all these are in numbers not in points.
4. Finally, why script was blinking, is because it was loading checkpoints.txt file, In my case I had 8 GB RAM with around 5.5 GB checkpoints.txt file, on a dual core system. It was taking around half an hour before printing steps.... Be patient, if no error occur, it will start printing within half an hour.

I was also able to update the existing code to utilize almost all available CPU in your machine though leaving space for other activities and it's now 10 times faster...

Code:
from multiprocessing import Pool, cpu_count

Pcurve = 2**256 - 2**32 - 2**9 - 2**8 - 2**7 - 2**6 - 2**4 -1 # The proven prime
N=0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 # Number of points in the field
Acurve = 0; Bcurve = 7 # These two defines the elliptic curve. y^2 = x^3 + Acurve * x + Bcurve
Gx = 55066263022277343669578718895168534326250603453777594175500187360389116729240
Gy = 32670510020758816978083085130507043184471273380659243275938904335757337482424
GPoint = (Gx,Gy) # This is our generator point. Trillions of dif ones possible

def modinv(a, n=Pcurve):
    lm, hm = 1, 0
    low, high = a % n, n
    while low > 1:
        ratio = high // low
        nm, new = hm - lm * ratio, high - low * ratio
        lm, low, hm, high = nm, new, lm, low
    return lm % n

def ECadd(a, b):
    if a == 'O':
        return b
    if b == 'O':
        return a
    if a == b:
        LamAdd = ((3 * a[0] * a[0] + Acurve) * modinv(2 * a[1], Pcurve)) % Pcurve
    else:
        LamAdd = ((b[1] - a[1]) * modinv(b[0] - a[0], Pcurve)) % Pcurve
    x = (LamAdd * LamAdd - a[0] - b[0]) % Pcurve
    y = (LamAdd * (a[0] - x) - a[1]) % Pcurve
    return (x, y)


def ECsub(a, b):
    if b == 'O':
        return a
    if isinstance(a, str):
        a = tuple(map(int, a.split()))
    if isinstance(b, str):
        b = tuple(map(int, b.split()))
    neg_b = (b[0], -b[1] % Pcurve)
    return ECadd(a, neg_b)


def ECmul(a, b):
    result = 'O'
    while b > 0:
        if b % 2 == 1:
            result = ECadd(result, a)
        a = ECadd(a, a)
        b = b // 2
    return result

# Read the x, y coordinates from xy.txt
with open("xy.txt", "r") as f:
    x, y = map(int, f.read().strip().split())
    point = (x, y)

# Read the checkpoint x-coordinates from checkpoints.txt
with open("checkpoints.txt", "r") as f:
    checkpoints = set(map(int, f.read().strip().split()))

filename_out = "results.txt"


sub_count = 0


# read the last value of j from file
try:
    with open("j_value.txt", "r") as f:
        last_j_value = int(f.readline())
except:
    last_j_value = 0

def process_iteration(args):
    j, last_j_value, point, checkpoints, filename_out = args
    found_match = False
    sub_count = 160000000 * j
    for k in range(100001):
        if k == 0:
            pass
        else:
            sub_count += 212676479325586539664609129644855
        result = ECmul(GPoint, sub_count)
        result = ECsub(point, result)
        print(sub_count)
        if result[0] in checkpoints:
            with open(filename_out, "w") as f_out:
                subtractions = sub_count // 212676479325586539664609129644855
                f_out.write("{} {} {}".format(result[0], result[1], subtractions))
            found_match = True
            break
    return found_match

def main():
    # Read the x, y coordinates from xy.txt
    with open("xy.txt", "r") as f:
        x, y = map(int, f.read().strip().split())
        point = (x, y)

    # Read the checkpoint x-coordinates from checkpoints.txt
    with open("checkpoints.txt", "r") as f:
        checkpoints = set(map(int, f.read().strip().split()))

    filename_out = "results.txt"

    # read the last value of j from file
    try:
        with open("j_value.txt", "r") as f:
            last_j_value = int(f.readline())
    except:
        last_j_value = 0

    # Determine the number of processes to use
    num_processes = min(cpu_count(), 8)  # You can adjust the number of processes

    args_list = [(j, last_j_value, point, checkpoints, filename_out) for j in range(last_j_value, 10000001)]

    with Pool(processes=num_processes) as pool:
        results = pool.map(process_iteration, args_list)

    if any(results):
        print("Found match!")
    else:
        print("No match found.")

if __name__ == "__main__":
    main()

All we need now is the checkpoint generation techniques to have enough checkpoints for the code to run even faster and maximize RAM usage
copper member
Activity: 1330
Merit: 899
🖤😏
Speaking of spamming the topic with unimportant content!

When you guys realize that in order to find a key based on address alone, first you'd need to break rmd160, then sha256 to get the public key and then find the private key based on the public key, since only public key and private key are directly related mathematically.

What you should do instead now that you are using your time, you should find any relation between similar addresses and their public/ private keys with  their sha256 hashes, at least this way you are one step closer to solving 66 etc, because you won't have to face rmd160.

However, trying to do that will require more power and time than solving the puzzle #160.

So don't waste your time on something that difficult, try finding ways to go around the EC rules and break/ bend them either completely or partially.


For example, this is a method to partially break EC :

Divide a point by e.g, 5, then divide n by 5, and then add the result of p/5 to n/5, if your point is not divisible by 5 depending on the last digit of the private key, the division result differs.

Demonstration :
823 / 5 = 164.6
Now all you need is to extract 0.6 of n in secp256k1 and keep it for next operation, then after dividing 823 by 5, you just divide n by 5 and add the result of 823/5 to n/5 + 6/10 of n = 164

But what happens if we divide 822 / 5 = 164.4, just follow the previous steps this time extract 4/10 of n to add to your second result.

We just broke EC by simple math operations, though when your key is large and unknown, the fraction could be any percentage of n, but if you divide by 2 up to 9, since any key can only have 0 up to 9 on it's last digit, 1 out of 10 division + n/th + n/remainder will work.



I could never find these things out if I was still working on addresses and hashes.😉




Quote
what I need to know is, how to get the checkpoints for the puzzle 130 and how many checkpoints do i need their x coordinates in the checkpoints? Also will the code print the target public key's equivalent private key or will it save it to a file? Thanks as we all learning...

You can use key subtracter by alberto, https://bitcointalksearch.org/topic/keysubtracter-test-development-requests-bug-reports-5360656

You could use a known public key and use -a - s with -r 0:f  -n 30 to have 15 + and -15 of your known public key, however use -z and -x to have only x coordinates, then you can convert them all to decimal.
jr. member
Activity: 75
Merit: 5

Also for checkpoint.txt I just need to paste x coordinates on one line per key and save their private keys?  What else do I need to change on the script?

I appreciate it.

Edit, I got it running, I just need to know what to change for addition and subtraction, should I put values in decimal? And why it won't show anything on screen? Lol it just blinks endlessly.

Here is how to tune script as per your needs:
1. xy.txt file must have x and y coordinates in decimal format with a single space between them, as I clarified earlier.
2. In checkpoints.txt file you don't need to save their private keys, why? that is whole point, because we keep starting 100 million or 1 billion pub keys' x coordinates which will work as 2 billions, so it is obvious that their private keys are from 2 to 1 billion or the last 1 billion.
3. There are 3 things that you can change, step size to be subtracted, number of steps, and number of iterations.
all these are in numbers not in points.
4. Finally, why script was blinking, is because it was loading checkpoints.txt file, In my case I had 8 GB RAM with around 5.5 GB checkpoints.txt file, on a dual core system. It was taking around half an hour before printing steps.... Be patient, if no error occur, it will start printing within half an hour.


I also see these numbers running on my screen

"3612735354303738549282715285277151885
3612948030783064135822379894406796740
3613160707262389722362044503536441595
3613373383741715308901709112666086450
3613586060221040895441373721795731305
3613798736700366481981038330925376160
3614011413179692068520702940055021015
3614224089659017655060367549184665870
3614436766138343241600032158314310725
3614649442617668828139696767443955580
3614862119096994414679361376573600435
3615074795576320001219025985703245290
3615287472055645587758690594832890145
3615500148534971174298355203962535000
3615712825014296760838019813092179855
3615925501493622347377684422221824710
3616138177972947933917349031351469565"...

I have about 40 randomly generated x coordinates within the 130 bits space in the checkpoints.txt
jr. member
Activity: 75
Merit: 5

Also for checkpoint.txt I just need to paste x coordinates on one line per key and save their private keys?  What else do I need to change on the script?

I appreciate it.

Edit, I got it running, I just need to know what to change for addition and subtraction, should I put values in decimal? And why it won't show anything on screen? Lol it just blinks endlessly.

Here is how to tune script as per your needs:
1. xy.txt file must have x and y coordinates in decimal format with a single space between them, as I clarified earlier.
2. In checkpoints.txt file you don't need to save their private keys, why? that is whole point, because we keep starting 100 million or 1 billion pub keys' x coordinates which will work as 2 billions, so it is obvious that their private keys are from 2 to 1 billion or the last 1 billion.
3. There are 3 things that you can change, step size to be subtracted, number of steps, and number of iterations.
all these are in numbers not in points.
4. Finally, why script was blinking, is because it was loading checkpoints.txt file, In my case I had 8 GB RAM with around 5.5 GB checkpoints.txt file, on a dual core system. It was taking around half an hour before printing steps.... Be patient, if no error occur, it will start printing within half an hour.

I understand it until this far and I already fulfilled the first requirements for the xy.txt with my target public key in decimal with a space between the x and y coordinates but I need to ask a question concerning the checkpoints as this is where I am currently stuck. New to the ECC curve but drastically learning as the day goes by... what I need to know is, how to get the checkpoints for the puzzle 130 and how many checkpoints do i need their x coordinates in the checkpoints? Also will the code print the target public key's equivalent private key or will it save it to a file? Thanks as we all learning...
jr. member
Activity: 75
Merit: 5
Jump to: