Post
Topic
Board Bitcoin Discussion
Re: Bitcoin challenge transaction: ~100 BTC total bounty to solvers!
by
mrxtraf
on 29/09/2019, 11:15:52 UTC
I am pretty dumb, so after 20 minutes, i still could not figure out what you are trying to do.

I especially do not understand this part:
"And have map position bits
0->10, 1->25, 2->8, 3->51 and etc"

decimal confuses me, so i converted to hex and got these numbers (and spaces to visually separate the part that changes):
2D2542DE057C62B89 C06582 40
2D2542DE057C62B89 C06586 40
2D2542DE057C62B89 C26582 40
2D2542DE057C62B89 C26586 40
2D2542DE057C62B89 C06583 40

i still don't get it.
I try explaine. It would be better in Russian, but let's try it this way.  Grin
Any string or number consists of bits. The bit position is counted from right to left. That is, the zero bit is on our right.
This is how simple incremental enumeration looks like in bit representation.


Hex   7 6 5 4 3 2 1 0 (Position)
00    0 0 0 0 0 0 0 0
01    0 0 0 0 0 0 0 1
02    0 0 0 0 0 0 1 0
03    0 0 0 0 0 0 1 1
04    0 0 0 0 0 1 0 0
05    0 0 0 0 0 1 0 1
06    0 0 0 0 0 1 1 0
07    0 0 0 0 0 1 1 1
      1 0 6 3 7 3 2 5 (new position from map see down)

and etc.
This is standart incrementla.

But I want, with standard enumeration, a changed bit position.
For example.
We have map. 0->5, 1->2, 2->3, 3->7, 4->4, 5->6, 6->0, 7->1
This means that the bit at the zero position puts on the fifth, the bit on the first position puts at the second position, the third bit at the seventh, etc.
Given these permutations, we get the following numbers.

Old Hex   7 6 5 4 3 2 1 0   NewHex          (Position)
00        0 0 0 0 0 0 0 0   (00)
01        0 0 1 0 0 0 0 0   (20)
02        0 0 0 0 0 1 0 0   (04)
03        0 0 1 0 0 1 0 0   (24)
04        0 0 0 0 1 0 0 0   (08)
05        0 0 1 0 1 0 0 0   (28)
06        0 0 0 0 1 1 0 0   (0C)
07        0 0 1 0 1 1 0 0   (2C)
          3 5 0 4 2 1 7 6   (old position)

Next, the new received number is used as a private key.
We got a big key, we can try to get the wallet address using it as a private key.
But in our task, the keys must be of a certain length in bits. So we cut this key to the desired lengths, and check each received option. At the same time, it is unforgettable that you need to set the left bit to one.
For example, we indicated that we are looking for keys with a length of 6,5,4 and 3 bits.
Getted this number
05        0 0 1 0 1 0 0 0   (28)
And calculate

Len  7 6 5 4 3 2 1 0  Hex
Orig 0 0 1 0 1 0 0 0 
7    0 1 1 0 1 0 0 0  68
6    0 0 1 0 1 0 0 0  28
5    0 0 0 1 1 0 0 0  18
4    0 0 0 0 1 0 0 0  08
3    0 0 0 0 0 1 0 0  04

From each number 68, 28 , 18 ... Try generated and cheked new address.
Now it is clear?


Bitcrack is easily modified to create whatever starting points you want.  Look at CudaKeySearchDevice.cpp.
You can write functions to play all sorts of bit games, shifting, rotating, random XOR, using digits of pi, etc.

I have made my Bitcrack spin the top 2 bytes from 0000-FFFF for each random 3 bytes (15 of them per run).  Then it spins the last 2 bytes 0000-FFFF and restarts.  It can also read 3-byte numbers from a text file every time it restarts.  The few million leftover starting points are random.

The interesting thing is, i have not run any of my bitcoin hacking programs for a few weeks and still achieve the exact same results!   Smiley
I do not speak C very well. Especially in terms of converting from bit to prime numbers and compiling numbers bit by bit.