Another hint for combatants who are struggling like me: most of the chars in #10 are sitting in the checksum part of the B58 private key.
I'm looking at
https://en.bitcoin.it/wiki/Wallet_import_format and don't see you can take advantage of that fact.
Don't you have to decode the base58 first before you can remove the 4 byte checksum?
Correct.
I know of
two approaches to brute force crack a private key if some of the unknown characters are on the end:
Approach #1: Checking against checksum1. Assemble your guess as a WIF string (base58)
2. Then do a base58_decode which outputs a 1+32+4=37 byte (1 extra byte when compressed but this puzzle has an uncompressed key).
3. Then re-calculate the checksum
4. If it matches, alert, else goto 1.
Chance of a false positive: 1:2
32Approach #2: Check against hash160 (this is the way I go)
1. Split your guesses in many batches
2. Assemble the
first guess in the batch as a base58 string
3. Then do a base58_decode which outputs a 37 or 38 byte binary
4. Take byte #1 to #32 (counting from #0) and load it into your EC library (yes, you can ignore the checksum here)
5. Do an EC point multiplication p=G*k where p=public key, G=base point and k=your first guess
6. If ripemd160(sha256(p)) matches target, alert and stop
7. Do an EC point addition p=p+G and goto 6. until 58
n/2
32 repetitions has been made. n is the number of characters missing at the end
8. Open a new batch and goto 2
Approach #2 has advantages if #10 is unknown because large parts of #10 are sitting in the checksum. When directly dealing with the internal binary representation of the private key using EC math, you're "skipping" all possible invalid WIF private key combinations at once.
Approach #1 could be the better choice if you're sure that you have #10 correct.
Currently I don't do any bruteforce anymore because I ran out of ideas for #9. As soon I get new clues, I'll resume my bruteforce.
Note:
Some peoples asked for code (here/PM):
I'm handing out this hint for free but you have to do the coding work yourself. I'm fearing getting deanonymized if uploading my code here because it heavyly relies on code from other projects made by me.