Pages:
Author

Topic: Please steal my bitcoins - page 2. (Read 870 times)

legendary
Activity: 952
Merit: 1367
March 30, 2021, 04:50:57 PM
#30
Brute-force algorithm would be:
1) Let's say WIF starts with K (later - repeat with L) - remove K from the set of letters
2) Calculate combinations from the rest of the letters (51) taking 45 letters (do not use 6 letters for checksum) (18009460)
3) Calculate permutations for each of 45 letters
4) For each permutation try to decode WIF: K + calculated result + fake checksum, which should be ignored (just extract privkey from WIF).

Ideas for optimization:
- check which letters are duplicated
- check min/max possible WIF (min: KwDiB..., max: L5o...)


Other remarks:
Possible prefix & rest of letters:
Code:
"Kw" "LP5U3WRLvPwDefz4FVMrAJVFtU4u8pj158VSpZF2aaPeY5Qix8",
"Kx"  "LP5U3WRLvPwDefz4FVMrAJVFtU4u8pj15w8VSpZF2aaPeY5Qi8",
"Kz"  "LP5U3WRLvPwDef4FVMrAJVFtU4u8pj15w8VSpZF2aaPeY5Qix8",
"L1"  "P5U3KWRLvPwDefz4FVMrAJVFtU4u8pj5w8VSpZF2aaPeY5Qix8",
"L2"  "P5U3KWRLvPwDefz4FVMrAJVFtU4u8pj15w8VSpZFaaPeY5Qix8",
"L3"  "P5UKWRLvPwDefz4FVMrAJVFtU4u8pj15w8VSpZF2aaPeY5Qix8",
"L4"  "P5U3KWRLvPwDefzFVMrAJVFtU4u8pj15w8VSpZF2aaPeY5Qix8",
"L5"  "PU3KWRLvPwDefz4FVMrAJVFtU4u8pj15w8VSpZF2aaPeY5Qix8"

Additionally, because of https://bitcointalksearch.org/topic/m.56676121 I think we may assume that "i" is not the last character.
member
Activity: 224
Merit: 36
March 30, 2021, 04:04:16 PM
#29


I think the reason why my script was so slow is because of Python, maybe if I make a C++ version of it it'll be faster. I just have to implement bitcoin.prvtopub myself, however I do it.



There might be tools to help with that. I've just googled something called "Cython".

However, in my experience, those sort of translators never fully work and there is some tweaking to do.
sr. member
Activity: 1442
Merit: 390
★Bitvest.io★ Play Plinko or Invest!
March 30, 2021, 11:05:49 AM
#28
Do you really want them to steal your bitcoins? Anyways I don't know the purpose of posting that here in this forum because, to be honest, it is only now I've seen a person who wants to steal his/her own bitcoin by anybody, is it a challenge or not? But first of all, let us just confirm if this wallet has a bitcoin or he is simply trolling us all of a sudden. If this was really a challenge or an event then we are excited to participate here mate.
legendary
Activity: 3094
Merit: 1385
Join the world-leading crypto sportsbook NOW!
March 30, 2021, 10:58:12 AM
#27
This could be an interesting game and attract more participants if it were branded differently. You're asking people to steal the coins, but many probably feel bad about the word 'stealing' and doing anything related to it. Also, it's not great that you're a newbie, so there isn't a good reason to trust you that this thing is legit, especially after and capitalized I controversy. But you could make it a challenge with a 0.002 reward, write some conditions and the description of it as a challenge, not as a post asking people to steal the coins. If there were any way to confirm that the private key thing is legit and solvable (by referring to a trusted forum member to confirm this, for instance), it could make the whole thing pretty popular here on Bitcointalk.
legendary
Activity: 2688
Merit: 1208
Once a man, twice a child!
March 30, 2021, 10:16:55 AM
#26
Only the comment I can leave here is that private key must not be revealed to only one, if known to anyone, the person will be able steal the bitcoin the private key can unlock on blockchain.
That's the essence of OP's post. The OP is actually daring someone to crack the PKey combination and steal the funds there.

I believe the OP mixed and scrambled the figures and that's going to be a hard nut for anyone to crack fixing them up.
sr. member
Activity: 1008
Merit: 371
March 30, 2021, 10:01:35 AM
#25
Hilarious! has anyone checked to see if the wallet actually contains anything or the op is just here to troll, to be honest, i have never seen where anyone wants to have their asset stolen voluntarily, it has always been the opposite, i can already tell there is nothing that will worth the effort.


op must make fun of us by changing a little bit of the private key he gave or he forgot his password or something else.

but I saw that the contents in the wallet were very little and not so valuable with the difficulties faced to solve it. Cheesy
newbie
Activity: 6
Merit: 21
March 30, 2021, 09:56:26 AM
#24
Good luck NotATether, hope my error didn't cost you too much time.

I'll definitely share the reason for this experiment and I'll definitely do it here first, but not just yet.  I need this to run for a bit first to prove how secure or otherwise a completely exposed but randomised key is

Anyone saying it's easy and so redundant, great help yourself to the BTC and prove how easy this was all along.

I'm offline till the morning so I'm afraid I'll be quiet until then but happy to respond to any feedback when I get back

legendary
Activity: 952
Merit: 1367
March 30, 2021, 09:51:17 AM
#23
Brute-force algorithm would be:
1) Let's say WIF starts with K (later - repeat with L) - remove K from the set of letters
2) Calculate combinations from the rest of the letters (51) taking 45 letters (do not use 6 letters for checksum) (18009460)
3) Calculate permutations for each of 45 letters
4) For each permutation try to decode WIF: K + calculated result + fake checksum, which should be ignored (just extract privkey from WIF).

Ideas for optimization:
- check which letters are duplicated
- check min/max possible WIF (min: KwDiB..., max: L5o...)
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
March 30, 2021, 09:42:44 AM
#22
~

I think the reason why my script was so slow is because of Python, maybe if I make a C++ version of it it'll be faster. I just have to implement bitcoin.prvtopub myself, however I do it.



Good luck NotATether, hope my error didn't cost you too much time.

I think Python had caused me more lost time than this omission in fact.
legendary
Activity: 2828
Merit: 6108
Blackjack.fun
March 30, 2021, 08:49:19 AM
#21
Besides all you have to do is keep an eye on my address.

That would be just a stop loss situation, if you decide to move the coins in 7 days from now on it it would simply mean someone who has actually tried to do it would have wasted his time. That again, it's just 100$, I would be far more suspicious if the sum would have been 10-100x higher.

I know some of you have said I could be trolling and given an inaccurate key but that would ruin my experiment and my experiment is worth far more than an unfunny joke.

What would be the purpose of the experiment? It's just a question of math and quantifying reward per effort.
If the funds don't get moved in two hundred years it means it's safe to randomize your key and let it sit on three hundred forums and nobody will touch your coins? If the funds get swiped in one month what does this prove?
I'm more interested in your method of interpreting and quantifying the results than in the actual result.

'I' on the 50th place - wrong character, not from Base58 set.

Nice one!

legendary
Activity: 2800
Merit: 3443
Join the world-leading crypto sportsbook NOW!
March 30, 2021, 08:33:55 AM
#20
The thing with all this is that you need to go through all this AND trust that:
- the letters and numbers are indeed real and the author hasn't also changed a few of them for trolling
- the author won't move the coins tomorrow or in the next hours, making all your effort a waste

Doing this for 100$  based on a post created by a newbie?
Who is going to be tying this will do it out of boredom rather than for the reward

Most valid comment I have seen in a while.

I don't knock people, and it's nice if it's $10 or $100, but you have no idea if this is a troll, so yeah, whoever's gonna do it won't be doing it for the reward, just for the pure sake of being bored. There's no bragging rights either as there's no puzzle to solve, no IQ to claim.

Good luck still, hope someone has fun.
member
Activity: 89
Merit: 14
March 30, 2021, 08:17:00 AM
#19
Quote
'I' on the 50th place - wrong character, not from Base58 set.

When I just repeated this I noticed that after I add a comma after the small case i, Excel changes it to I


Seems to be a plausible explanation, MS Office is notorious for being overzealous with auto correction.
newbie
Activity: 6
Merit: 21
March 30, 2021, 08:08:41 AM
#18
Quote
'I' on the 50th place - wrong character, not from Base58 set.
Guy's I'm so so sorry the "I" became capitilised it should be an i

I was horrified when I saw this and I have just retraced my steps as follows

In order to randomise the key I extracted it from Electrum (free clue)
I pasted in Excel
in order to transpose so that I could create an adjacent =rand() column, I had to use text to columns as otherwise the cell key is just a single cell
I had to delimit and the easiest way was to introduce a comma between each character
When I just repeated this I noticed that after I add a comma after the small case i, Excel changes it to I
i is included in Base 58, I is not

I'm totally devastated and sorry and I understand if that makes me look dishonest, I'm real sorry.

I have just rechecked each character one by one to make sure no other errors crept in and I confirm that 100% each character is correct with the correct capitalisation. The 50th character i was the only one affected so the correct randomised key is: LP5U3KWRLvPwDefz4FVMrAJVFtU4u8pj15w8VSpZF2aaPeY5Qix8

Once again I'm really really sorry
member
Activity: 89
Merit: 14
March 30, 2021, 08:07:23 AM
#17
This is my private key in a randomised order relating to this address: LP5U3KWRLvPwDefz4FVMrAJVFtU4u8pj15w8VSpZF2aaPeY5QIx8

'I' on the 50th place - wrong character, not from Base58 set.

Well spotted... (or validated if you were tinkering with your WIF recovery tool?)

This should be interesting... will OP be amending and/or explaining?  Undecided
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
March 30, 2021, 08:01:31 AM
#16
Who is going to be tying this will do it out of boredom rather than for the reward

Yeah  Lips sealed

Some multithreaded script I was working on the last few hours:

Code:
from bitcoin import *
import threading
import time
import math
import sys

pub = "bc1qq2rnv02hjzv5h0lwa03um43afwcfcpf0qg56ca"
randprv = "LP5U3KWRLvPwDefz4FVMrAJVFtU4u8pj15w8VSpZF2aaPeY5Qix8"
_1M=1024**2
nthreads = 48

def index2permarray(k, size):
  if size <= 1:
    return [0]
  arr = []
  while size > 1:
    multiplier = math.factorial(size-1)
    digit = math.floor(k/multiplier)
    arr += [digit]
    k = k % multiplier
    size = size-1
  return arr

fact52array = []
for i in range(0,53):
  fact52array += [math.factorial(i)]

def index2permutation(i,n,p):
  arr=""
  for k in range(1, n + 1): # k goes from 1 to n
    f = fact52array[n - k]  # compute factorial once per iteration
    d = i // f            # use integer division (like division + floor)
    arr = arr + str(p[d])          # print permuted number with trailing space
    p = p[:d] + p[d+1:]        # delete p[d] from p
    i = i % f             # reduce i to its remainder
  return arr

class checkKey (threading.Thread):
   def __init__(self, threadID, low, high):
      threading.Thread.__init__(self)
      self.threadID = threadID
      self.low = low
      self.high = high
   def run(self):
     for i in range(self.low, self.high+1):
        if (self.high-self.low+1 - i) % 100 == 0:
          print("Thread {}: {}%".format(self.threadID, i/(self.high-self.low+1)))
        prv = index2permutation(i,52,randprv)
        try:
          testpub = prvtopub(prv)
          if testpub == pub:
             printf("Match: " + prv)
             sys.exit(0)
        except Exception as s:
          pass

fact52 = math.factorial(52)
def main():
  threadcount=0
  k=0
  while _1M*k    while (threading.activeCount() <= nthreads):
      checkKey(threading.activeCount(), _1M*k, _1M*(k+1)).start()
      threadcount += 1
      k += 1
    time.sleep(0.01)
    #print(str(_1M*k/fact52*100) + "% ", end="", flush=True)

main()

Basically what it does is that it spawns a couple of threads and maps a specific number to a permutation, then takes hundreds of thousands of those permutations in one shot. The first batch of 48 threads don't even finish their work in a reasonable amount of time  Undecided

Some more unrelated rubbish that I copied and pasted from the internet which some people may find useful:

Code:
# Python 3 implementation of the approach 

# Given the array arr[] of N elements and a permutation array P[], the task is to permute the given array arr[] based on the permutation array P[].
# Function to permute the the given
# array based on the given conditions
def permute(A, P, n):
      
    # For each element of P
    for i in range(n):
        next = i
  
        # Check if it is already
        # considered in cycle
        while (P[next] >= 0):
              
            # Swap the current element according
            # to the permutation in P
            t = A[i]
            A[i] = A[P[next]]
            A[P[next]] = t
              
            temp = P[next]
  
            # Subtract n from an entry in P
            # to make it negative which indicates
            # the corresponding move
            # has been performed
            P[next] -= n
            next = temp

def int_from_code(code):
    """
    :type code: list
    :rtype: int
    """
    num = 0
    for i, v in enumerate(reversed(code), 1):
        num *= i
        num += v

    return num

def code_from_int(size, num):
    """
    :type size: int
    :type num: int
    :rtype: list
    """
    code = []
    for i in range(size):
        num, j = divmod(num, size - i)
        code.append(j)

    return code


def perm_from_code(base, code, pick=None):
    """
    :type base: list
    :type code: list
    :rtype: list
    """
    if pick:
        return _perm_from_code_pick(base, code)

    perm = base.copy()
    for i in range(len(base) - 1):
        j = code[i]
        perm[i], perm[i+j] = perm[i+j], perm[i]

    return perm

def perm_from_int(base, num, pick=None):
    """
    :type base: list
    :type num: int
    :rtype: list
    """
    code = code_from_int(len(base), num)
    return perm_from_code(base, code, pick=pick)

def code_from_perm(base, perm, pick=None):
    """
    :type base: list
    :type perm: list
    :rtype: list
    """
    if pick:
        _code_from_perm_pick(base, perm)

    p = base.copy()
    n = len(base)
    pos_map = {v: i for i, v in enumerate(base)}

    w = []
    for i in range(n):
        print(pos_map, perm)
        d = pos_map[perm[i]] - i
        w.append(d)

        if not d:
            continue
        t = pos_map[perm[i]]
        pos_map[p[i]], pos_map[p[t]] = pos_map[p[t]], pos_map[p[i]]
        p[i], p[t] = p[t], p[i]

    return w

def int_from_perm(base, perm, pick=None):
    """
    :type base: list
    :type perm: list
    :rtype: int
    """
    code = code_from_perm(base, perm, pick=pick)
    return int_from_code(code)



This is my private key in a randomised order relating to this address: LP5U3KWRLvPwDefz4FVMrAJVFtU4u8pj15w8VSpZF2aaPeY5QIx8

'I' on the 50th place - wrong character, not from Base58 set.

Don't tell me I just wasted my time descrambling an invalid WIF! Nooooooooooo....
legendary
Activity: 952
Merit: 1367
March 30, 2021, 07:31:37 AM
#15
This is my private key in a randomised order relating to this address: LP5U3KWRLvPwDefz4FVMrAJVFtU4u8pj15w8VSpZF2aaPeY5QIx8

'I' on the 50th place - wrong character, not from Base58 set.
hero member
Activity: 2968
Merit: 913
March 30, 2021, 07:21:27 AM
#14
Quote
P.S I know some of you have said I could be trolling and given an inaccurate key but that would ruin my experiment and my experiment is worth far more than an unfunny joke.

What is your experiment and what do you want to prove with this?
If you wanna conduct an experiment,you could use test Bitcoins,which are very cheap.
What's the point of wasting 0.002 BTC?
By the way,are you a girl or a boy?You say "I'm not that sort of girl".
If you are a girl,then welcome to Bitcoin community.We really need more girls. Grin
newbie
Activity: 6
Merit: 21
March 30, 2021, 07:11:05 AM
#13
Don't worry everyone, the address is funded and it will remain funded forever, I'm not that sort of girl.  Besides all you have to do is keep an eye on my address.  Maybe one day it will be worth those permutations.

I may have made a mistake providing my public address as well as the randomised private key, that may have made this task simple enough for a knowledgeable person to quickly grab them, if so I hope that someone does take them, if not for the BTC then for the theoretical proof.

Good luck

P.S I know some of you have said I could be trolling and given an inaccurate key but that would ruin my experiment and my experiment is worth far more than an unfunny joke.

 


member
Activity: 89
Merit: 14
March 30, 2021, 07:07:21 AM
#12
Agree with most people here who are saying the monetary value is not the "prize" , so it's really just a "for fun" puzzle if someone feels motivated for a technical challenge.

Starting points for someone trying to crack this would be to look at what can be excluded

There's only 35 unique symbols (of 58) used, meaning 23 can be excluded from combination/permutations.

It appears to be a compressed public key format because it's 52 characters in length, so your pattern with start with: L or K (not a 5 for uncompressed)

You can reduce the target length by a few characters because you don't need to "crack" the base58 checksum, this should reduce the search complexity by a few orders of magnitude... but it is still a pretty big one at that!

Good luck, if you solve it you should post back here and share any "shortcuts" you took in attempting to solve.
hero member
Activity: 2982
Merit: 678
★Bitvest.io★ Play Plinko or Invest!
March 30, 2021, 07:07:02 AM
#11
Hilarious! has anyone checked to see if the wallet actually contains anything or the op is just here to troll
He's not trolling about the address, it has 0.002BTC which you can check through the explorer.

--> https://blockchair.com/bitcoin/address/bc1qq2rnv02hjzv5h0lwa03um43afwcfcpf0qg56ca

But for the private key, it's mixed in order based from op.
Pages:
Jump to: