Bitcoin Forum

Economy => Collectibles => Topic started by: anonymousminer on July 31, 2020, 01:10:41 AM



Title: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: anonymousminer on July 31, 2020, 01:10:41 AM
Hello everyone.  Today I have something that is very interesting to announce.

Bobby Lee has been claiming that the Ballet wallets are a secure place to store your bitcoin since he started the company and he has never wavered from this statement.

 :o Now he is putting his personal bitcoins where his mouth is to prove this very point. :o

2 total bitcoins are available for you to try to take, 1 bitcoin is loaded on each wallet. 

If you think you have the skills to hack either wallet below, let's see what you've got ladies and gentlemen!!



Wallet #1 gives you the public address and the private key.... the BIP38 passphrase has been left in tact.



https://i.imgur.com/p5sMHuXl.jpg   https://i.imgur.com/cs8bgl8l.jpg





Wallet #2 gives you the public address and the BIP38 passphrase.... the private key has been left in tact.



https://i.imgur.com/e13P6c4l.jpg




Here is the website where you can find more information:  https://takebobbysbitcoin.com/


Please share this on all social media platforms. 

The more people that are trying to hack these the better. 

#takebobbysbitcoin

Let's see how secure these really are!


 




Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: MoparMiningLLC on July 31, 2020, 01:21:18 AM
I'll wager on the fact that no one will get these, not without help on either of the missing components for each one.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: Agrawas on July 31, 2020, 01:45:55 AM
I can create a new btc address and put couple of btc there.. you really think anyone can break it??

Hundreds  of programs/bots there to identify btc addresses with their balances, not a big deal..

No offense against bobby, but that’s the reality..


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: MoparMiningLLC on July 31, 2020, 01:54:45 AM
I can create a new btc address and put couple of btc there.. you really think anyone can break it??

Hundreds  of programs/bots there to identify btc addresses with their balances, not a big deal..

No offense against bobby, but that’s the reality..

I think his point is that even with the private key you cannot take it because of the pass phrase. but I would think that for someone to have the private key, they would have the wallet and thus the bip38 pass phase as well.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: anonymousminer on July 31, 2020, 02:06:37 AM
I can create a new btc address and put couple of btc there.. you really think anyone can break it??

Hundreds  of programs/bots there to identify btc addresses with their balances, not a big deal..

No offense against bobby, but that’s the reality..

Maybe you didn't read the thread closely.  Sure you could do the same thing, but your company didn't just surpass 21M in deposits.  Bobby has been battling FUD from the start about the Ballet wallets not being secure from some people.  I'd think something like this would shut a lot of those people up.




Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: Hox on July 31, 2020, 09:54:16 AM
I can create a new btc address and put couple of btc there.. you really think anyone can break it??

Hundreds  of programs/bots there to identify btc addresses with their balances, not a big deal..

No offense against bobby, but that’s the reality..

I think his point is that even with the private key you cannot take it because of the pass phrase. but I would think that for someone to have the private key, they would have the wallet and thus the bip38 pass phase as well.

This is to demonstrate the protection you have from rouge employees or malware at Ballet. Because the private key and passphrase are generated and engraved in separate geographical locations no single employee has enough information to compromise these wallets.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: SatsLife on July 31, 2020, 11:49:53 AM
I can create a new btc address and put couple of btc there.. you really think anyone can break it??

Hundreds  of programs/bots there to identify btc addresses with their balances, not a big deal..

No offense against bobby, but that’s the reality..

I think his point is that even with the private key you cannot take it because of the pass phrase. but I would think that for someone to have the private key, they would have the wallet and thus the bip38 pass phase as well.

This is to demonstrate the protection you have from rouge employees or malware at Ballet. Because the private key and passphrase are generated and engraved in separate geographical locations no single employee has enough information to compromise these wallets.


How can one verify that the specific wallets he is using went through the same production process as the ones I might have? Or you might have?

Have him send me 1 bitcoin to my ballet wallet and post that one. I have one unopened we can unbox live.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: MoparMiningLLC on July 31, 2020, 01:25:44 PM
I can create a new btc address and put couple of btc there.. you really think anyone can break it??

Hundreds  of programs/bots there to identify btc addresses with their balances, not a big deal..

No offense against bobby, but that’s the reality..

I think his point is that even with the private key you cannot take it because of the pass phrase. but I would think that for someone to have the private key, they would have the wallet and thus the bip38 pass phase as well.

This is to demonstrate the protection you have from rouge employees or malware at Ballet. Because the private key and passphrase are generated and engraved in separate geographical locations no single employee has enough information to compromise these wallets.


correct. the safety of his process. if someone steals our ballet crypto wallet it wont matter.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: Agrawas on July 31, 2020, 03:14:51 PM
I can create a new btc address and put couple of btc there.. you really think anyone can break it??

Hundreds  of programs/bots there to identify btc addresses with their balances, not a big deal..

No offense against bobby, but that’s the reality..

Not sure what people understood, My suggestion was for the people who doesn’t trust other coin/wallet makers.

There are millions of $$$ in just a handful of coin types(Cas, Lealana, BTCC,etc). Point is either u trust them or u don’t..

After such a beautiful series of btcc coins, I personally have no doubt about Bobby or his new venture with Ballet cards.

Also I have already used couple of ballet cards for quite a big transactions where I did redeeming, deposit, exchange as well withdraw without any issue and doing all that just with their easy to use Mobile App.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: The Sceptical Chymist on July 31, 2020, 03:20:51 PM
I'd think something like this would shut a lot of those people up.
I don't know what the outcome of this experiment is going to be, but I think it's a good PR move for the Ballet wallet--and I do recall reading a thread in which it was heavily criticized.  Unfortunately, the wallet still suffers from the same barrier that any new HW wallet coming onto the market these days does, which is the test of time.  Some people might take comfort that Bobby Lee is doing this and might try out a Ballet, but I don't think they're going to become anywhere near as popular as the leading HWs out there until they've been on the market for a while.

How can one verify that the specific wallets he is using went through the same production process as the ones I might have? Or you might have?
That's probably a good point.  There's always the possibility that this isn't what it appears to be, much like a lot of other things in crypto.  Hopefully that's not the case here.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: bitcoiner24h on July 31, 2020, 05:41:47 PM
I can create a new btc address and put couple of btc there.. you really think anyone can break it??

Hundreds  of programs/bots there to identify btc addresses with their balances, not a big deal..

No offense against bobby, but that’s the reality..

Maybe you didn't read the thread closely.  Sure you could do the same thing, but your company didn't just surpass 21M in deposits.  Bobby has been battling FUD from the start about the Ballet wallets not being secure from some people.  I'd think something like this would shut a lot of those people up.




Those distrustful people can shut up with the PRO series  :D


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: MoparMiningLLC on July 31, 2020, 06:19:10 PM

Those distrustful people can shut up with the PRO series  :D

I just ordered a set of the PRO series - should be here on Monday. Outside of the Blocks - I should then have one of all the wallets they have done - with exception of the Ravencoin one - I saw it on kickstarter - still not sure if they ever actually did it though. But if they did, then I dont have that one either.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: anonymousminer on August 02, 2020, 03:36:20 AM

Those distrustful people can shut up with the PRO series  :D

I just ordered a set of the PRO series - should be here on Monday. Outside of the Blocks - I should then have one of all the wallets they have done - with exception of the Ravencoin one - I saw it on kickstarter - still not sure if they ever actually did it though. But if they did, then I dont have that one either.


You will be impressed by the pro series....and they did make the ravencoin ones. ;)

https://i.imgur.com/yIqierHl.jpg





Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: MoparMiningLLC on August 02, 2020, 03:47:03 AM

Those distrustful people can shut up with the PRO series  :D

I just ordered a set of the PRO series - should be here on Monday. Outside of the Blocks - I should then have one of all the wallets they have done - with exception of the Ravencoin one - I saw it on kickstarter - still not sure if they ever actually did it though. But if they did, then I dont have that one either.


You will be impressed by the pro series....and they did make the ravencoin ones. ;)

https://i.imgur.com/yIqierHl.jpg





well then the raven one would be the only one they made that I dont have - I think. I will have to find a list of them - or maybe make a list.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: bobbyclee on August 04, 2020, 09:06:36 AM

How can one verify that the specific wallets he is using went through the same production process as the ones I might have? Or you might have?

Have him send me 1 bitcoin to my ballet wallet and post that one. I have one unopened we can unbox live.


Hi SatsLife,

Thank you for asking this very important question. I can tell you that for both of these wallets (serial numbers AA009926 and AA012381) were taken from the manufacturing / production process in Las Vegas. In other words, these two wallets were manufactured in the exact same was as the thousands of other Ballet wallets, and went through the exact same process and procedures.

These two wallets were NOT especially made for my hacking contest, nor were they "hardened" for security against hacking.
In fact, what I did was actually made them EASIER to hack, as I fully revealed one of the two critical components for each of the wallets: the BIP38 passphrase, and the encrypted private key.

And to directly answer your question: it wouldn't make sense for me to send you 1 BTC to your Ballet wallet, as that's essentially me giving you the 1 BTC, right?
Or unless you want to return that wallet to me, for my safekeeping, and for me to load some more BTC on it, for a hacking contest?


In any case, the purpose of my hacking contest is to show that:

1) our wallets uses 2-factor private keys, which happen to be made (and generated) in different geographic locations, and that these 2 components don't even come together at all during the manufacturing process.

2) due to the nature of BIP38 encrypted private keys, since the two components were never mixed together, even we, Ballet, have NEVER constructed the private keys for each of the wallets we make and sell.

3) even if someone were able to steal just 1 of the 2 critical components (either the BIP38 passphrase or the encrypted private key), that in of itself is not enough to hack the wallet, as it'll take an inordinate amount of computing power to guess the other part.


Hope that helps!

thanks,
Bobby




Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: iBitcoinHongKong8 on August 04, 2020, 05:04:15 PM

How can one verify that the specific wallets he is using went through the same production process as the ones I might have? Or you might have?

Have him send me 1 bitcoin to my ballet wallet and post that one. I have one unopened we can unbox live.


Hi SatsLife,

Thank you for asking this very important question. I can tell you that for both of these wallets (serial numbers AA009926 and AA012381) were taken from the manufacturing / production process in Las Vegas. In other words, these two wallets were manufactured in the exact same was as the thousands of other Ballet wallets, and went through the exact same process and procedures.

These two wallets were NOT especially made for my hacking contest, nor were they "hardened" for security against hacking.
In fact, what I did was actually made them EASIER to hack, as I fully revealed one of the two critical components for each of the wallets: the BIP38 passphrase, and the encrypted private key.

And to directly answer your question: it wouldn't make sense for me to send you 1 BTC to your Ballet wallet, as that's essentially me giving you the 1 BTC, right?
Or unless you want to return that wallet to me, for my safekeeping, and for me to load some more BTC on it, for a hacking contest?


In any case, the purpose of my hacking contest is to show that:

1) our wallets uses 2-factor private keys, which happen to be made (and generated) in different geographic locations, and that these 2 components don't even come together at all during the manufacturing process.

2) due to the nature of BIP38 encrypted private keys, since the two components were never mixed together, even we, Ballet, have NEVER constructed the private keys for each of the wallets we make and sell.

3) even if someone were able to steal just 1 of the 2 critical components (either the BIP38 passphrase or the encrypted private key), that in of itself is not enough to hack the wallet, as it'll take an inordinate amount of computing power to guess the other part.


Hope that helps!

thanks,
Bobby





Just my 2bits...
I ran an experiment a while back to try and confirm plus understand how to sweep a collectible/physical coin so I bought a few pre and post forked Satoris! I used Ballet wallets to do it based on Charlie's recommendation and I simply cannot come up with enough words to explain how simple, seamless and magical the entire process was. I was so happy with how easy it was and now that even much more time has since gone by since that test experiment I ran I'm now even more confident in using Ballet for many reasons. I'm beyond pleased with my Ballet wallet purchases and love the fact you put this experiment out in the wild for the super savvy people to try and hack. Will be added confidence and security if this passes this huge but necessary test. I remember when I was in Tampa last year and I had explained my experience with Ballet and anonymousminer specifically mentioned something like this right here which is put it out there and if they think it's hackable then let them try! So great work to all of you involved in this! This is a great way to calm some people's nerves. I personally would trust Ballet to peel a high value item if I ever needed to peel something. And if not needed for peeling I love handing a few out to soon to become BTCers  ;D. Wishing everyone all the best!


HK8






Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: MoparMiningLLC on August 04, 2020, 05:25:10 PM
we all know how hard it is to hack a private key - this is basically a private key for your private key - without both, neither is of use.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: anonymousminer on August 09, 2020, 02:43:41 PM
Bump


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: SatsLife on August 11, 2020, 08:58:04 PM

How can one verify that the specific wallets he is using went through the same production process as the ones I might have? Or you might have?

Have him send me 1 bitcoin to my ballet wallet and post that one. I have one unopened we can unbox live.


Hi SatsLife,

Thank you for asking this very important question. I can tell you that for both of these wallets (serial numbers AA009926 and AA012381) were taken from the manufacturing / production process in Las Vegas. In other words, these two wallets were manufactured in the exact same was as the thousands of other Ballet wallets, and went through the exact same process and procedures.

These two wallets were NOT especially made for my hacking contest, nor were they "hardened" for security against hacking.
In fact, what I did was actually made them EASIER to hack, as I fully revealed one of the two critical components for each of the wallets: the BIP38 passphrase, and the encrypted private key.

And to directly answer your question: it wouldn't make sense for me to send you 1 BTC to your Ballet wallet, as that's essentially me giving you the 1 BTC, right?
Or unless you want to return that wallet to me, for my safekeeping, and for me to load some more BTC on it, for a hacking contest?


In any case, the purpose of my hacking contest is to show that:

1) our wallets uses 2-factor private keys, which happen to be made (and generated) in different geographic locations, and that these 2 components don't even come together at all during the manufacturing process.

2) due to the nature of BIP38 encrypted private keys, since the two components were never mixed together, even we, Ballet, have NEVER constructed the private keys for each of the wallets we make and sell.

3) even if someone were able to steal just 1 of the 2 critical components (either the BIP38 passphrase or the encrypted private key), that in of itself is not enough to hack the wallet, as it'll take an inordinate amount of computing power to guess the other part.


Hope that helps!

thanks,
Bobby






Hi Bobby,

Thank you for the response and confirming these were plucked from the same production as every other wallet. I never doubted that they were made special for the hacking contest, but thought I would mention any potential flaws in the process in case any readers are lurking. The Separation of Duties is one of the common core principles in accounting and it makes sense to use them when creating keys and/or wallets. Kudos!

Using my ballet wallet was only a suggested entropy/randomness use case, as you or Ballet obviously couldnt know when making my wallets that I would have posted about production process integrity.

So you're saying if you send me 1 bitcoin, I only have to send you one back?  :D


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: shadallion on August 14, 2020, 04:42:29 PM
Just wanted to say that I got the Ballet PRO series wallet and at first I was having trouble with the iPhone app that is used to manage the coins.  Customer service was able to troubleshoot the app issue - which may or may not have affected others - and now it's working smoothly.   I've tested sending coins to/from the wallet and it works smoothly.  It's a nifty product for sure.  The three copies of the same wallet that can be stored in three different geographical areas is something of a break-through in my opinion.    They're even sending me a free REAL Ballet just to solidify the relationship, for the hassle.  Thanks Bobby/Ballet!


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: anonymousminer on August 29, 2020, 04:31:38 PM
The site has been live for a month now.....


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: anonymousminer on November 01, 2020, 12:48:58 AM
Over 3 Months.... nearly 27.5k


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: MoparMiningLLC on November 01, 2020, 01:27:30 AM
no one is going to crack the passphrase for the one or the private key for the other - unless one of the workers has access but per Bobby all that data is deleted so that means no one is gonna get it.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: daburone on November 01, 2020, 09:25:13 AM
no one is going to crack the passphrase for the one or the private key for the other - unless one of the workers has access but per Bobby all that data is deleted so that means no one is gonna get it.

But how do we know that one of the workers doesn't have it? Just because they didn't take it today or tomorrow.... It just confirms that they haven't gone rogue yet.

Nobody really knows. So far so good and let's hope it stays that way. But let's not put too much stock in these marketing gimmicks.

And 2BTC? Seriously? A reward for ants?  


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: MoparMiningLLC on November 01, 2020, 03:36:16 PM
no one is going to crack the passphrase for the one or the private key for the other - unless one of the workers has access but per Bobby all that data is deleted so that means no one is gonna get it.

But how do we know that one of the workers doesn't have it? Just because they didn't take it today or tomorrow.... It just confirms that they haven't gone rogue yet.

Nobody really knows. So far so good and let's hope it stays that way. But let's not put too much stock in these marketing gimmicks.

And 2BTC? Seriously? A reward for ants?  


And for those with that concern there is the pro series  - the real series are really just to get people started and should not be used as a permanent hodl location. I have heard Bobby say something similar.

Also worth noting no one has made a claim that their funds have been taking - this is same risk as a casa or lealana coin or any of the other prefunded or items with the private key already in place. You have to have trust for the maker


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: anonymousminer on December 16, 2020, 02:29:15 PM
Over 4.5 months and still going......


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: jl33213 on January 21, 2023, 08:46:08 AM
i have found the confirmation code for the top one just dont know how to derive the bip38 passphrase from it with the privaye key. also i have scanned the qrs u posted and in app it lets me verify the wallet that u shared the passphrase on but it only works with the entropy of it if i try to vrify with whole passphrase it tells me its incorrect. can u follow up pls ty. could reallt use the btc rn have been trying hard as hell to crack both of these :/


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: MoparMiningLLC on January 21, 2023, 04:33:58 PM
i have found the confirmation code for the top one just dont know how to derive the bip38 passphrase from it with the privaye key. also i have scanned the qrs u posted and in app it lets me verify the wallet that u shared the passphrase on but it only works with the entropy of it if i try to vrify with whole passphrase it tells me its incorrect. can u follow up pls ty. could reallt use the btc rn have been trying hard as hell to crack both of these :/

based on the screen shot you sent me - you messed up part of the passphrase.

I would like to know how you came across the intermediate code.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: jl33213 on January 21, 2023, 11:37:48 PM
i sent u a email showing you where i tried the other passphrase u told me it was and it also didnt work. and i showed u how i got the intermediate code:)


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: MoparMiningLLC on January 22, 2023, 12:46:03 AM
i sent u a email showing you where i tried the other passphrase u told me it was and it also didnt work. and i showed u how i got the intermediate code:)

I saw and that makes sense - however you still not use it to get the key.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: jl33213 on January 22, 2023, 01:12:25 AM
no one is going to crack the passphrase for the one or the private key for the other - unless one of the workers has access but per Bobby all that data is deleted so that means no one is gonna get it.

But how do we know that one of the workers doesn't have it? Just because they didn't take it today or tomorrow.... It just confirms that they haven't gone rogue yet.

Nobody really knows. So far so good and let's hope it stays that way. But let's not put too much stock in these marketing gimmicks.

And 2BTC? Seriously? A reward for ants?  

a reward for ants?? hell 1 btc would save my life rn lol :/


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: crewchill on July 31, 2023, 02:35:34 PM
Code:
 import itertools
import sys
import string
import datetime
import scrypt
import threading
from binascii import unhexlify
from Crypto.Cipher import AES
from simplebitcoinfuncs import normalize_input, b58d, hexstrlify, dechex, privtopub, compress, pubtoaddress, b58e, multiplypriv
from simplebitcoinfuncs.ecmath import N
from simplebitcoinfuncs.hexhashes import hash256


def simple_aes_decrypt(msg, key):
    assert len(msg) == 16
    assert len(key) == 32
    cipher = AES.new(key, AES.MODE_ECB)
    msg = hexstrlify(cipher.decrypt(msg))
    while msg[-2:] == '7b':  # Can't use rstrip for multiple chars
        msg = msg[:-2]
    for i in range((32 - len(msg)) // 2):
        msg = msg + '7b'
    assert len(msg) == 32
    return unhexlify(msg)


def bip38decrypt(password, encpriv, outputlotsequence=False):
    password = normalize_input(password, False, True)
    encpriv = b58d(encpriv)
    assert len(encpriv) == 78
    prefix = encpriv[:4]
    assert prefix == '0142' or prefix == '0143'
    flagbyte = encpriv[4:6]
    if prefix == '0142':
        salt = unhexlify(encpriv[6:14])
        msg1 = unhexlify(encpriv[14:46])
        msg2 = unhexlify(encpriv[46:])
        scrypthash = hexstrlify(scrypt.hash(password, salt, 16384, 8, 8, 64))
        key = unhexlify(scrypthash[64:])
        msg1 = hexstrlify(simple_aes_decrypt(msg1, key))
        msg2 = hexstrlify(simple_aes_decrypt(msg2, key))
        half1 = int(msg1, 16) ^ int(scrypthash[:32], 16)
        half2 = int(msg2, 16) ^ int(scrypthash[32:64], 16)
        priv = dechex(half1, 16) + dechex(half2, 16)
        if int(priv, 16) == 0 or int(priv, 16) >= N:
            if outputlotsequence:
                return False, False, False
            else:
                return False
        pub = privtopub(priv, False)
        if flagbyte in COMPRESSION_FLAGBYTES:
            privcompress = '01'
            pub = compress(pub)
        else:
            privcompress = ''
        address = pubtoaddress(pub, '00')
        try:
            addrhex = hexstrlify(address)
        except:
            addrhex = hexstrlify(bytearray(address, 'ascii'))
        addresshash = hash256(addrhex)[:8]
        if addresshash == encpriv[6:14]:
            priv = b58e('80' + priv + privcompress)
            if outputlotsequence:
                return priv, False, False
            else:
                return priv
        else:
            if outputlotsequence:
                return False, False, False
            else:
                return False
    else:
        owner_entropy = encpriv[14:30]
        enchalf1half1 = encpriv[30:46]
        enchalf2 = encpriv[46:]
        if flagbyte in LOTSEQUENCE_FLAGBYTES:
            lotsequence = owner_entropy[8:]
            owner_salt = owner_entropy[:8]
        else:
            lotsequence = False
            owner_salt = owner_entropy
        salt = unhexlify(owner_salt)
        prefactor = hexstrlify(scrypt.hash(password, salt, 16384, 8, 8, 32))
        if lotsequence is False:
            passfactor = prefactor
        else:
            passfactor = hash256(prefactor + owner_entropy)
        if int(passfactor, 16) == 0 or int(passfactor, 16) >= N:
            if outputlotsequence:
                return False, False, False
            else:
                return False
        passpoint = privtopub(passfactor, True)
        password = unhexlify(passpoint)
        salt = unhexlify(encpriv[6:14] + owner_entropy)
        encseedb = hexstrlify(scrypt.hash(password, salt, 1024, 1, 1, 64))
        key = unhexlify(encseedb[64:])
        tmp = hexstrlify(simple_aes_decrypt(unhexlify(enchalf2), key))
        enchalf1half2_seedblastthird = int(tmp, 16) ^ int(encseedb[32:64], 16)
        enchalf1half2_seedblastthird = dechex(enchalf1half2_seedblastthird, 16)
        enchalf1half2 = enchalf1half2_seedblastthird[:16]
        enchalf1 = enchalf1half1 + enchalf1half2
        seedb = hexstrlify(simple_aes_decrypt(unhexlify(enchalf1), key))
        seedb = int(seedb, 16) ^ int(encseedb[:32], 16)
        seedb = dechex(seedb, 16) + enchalf1half2_seedblastthird[16:]
        assert len(seedb) == 48  # I want to except for this and be alerted to it
        try:
            factorb = hash256(seedb)
            assert int(factorb, 16) != 0
            assert not int(factorb, 16) >= N
        except:
            if outputlotsequence:
                return False, False, False
            else:
                return False
        priv = multiplypriv(passfactor, factorb)
        pub = privtopub(priv, False)
        if flagbyte in COMPRESSION_FLAGBYTES:
            privcompress = '01'
            pub = compress(pub)
        else:
            privcompress = ''
        address = pubtoaddress(pub, '00')
        try:
            addrhex = hexstrlify(address)
        except:
            addrhex = hexstrlify(bytearray(address, 'ascii'))
        addresshash = hash256(addrhex)[:8]
        if addresshash == encpriv[6:14]:
            priv = b58e('80' + priv + privcompress)
            if outputlotsequence:
                if lotsequence is not False:
                    lotsequence = int(lotsequence, 16)
                    sequence = lotsequence % 4096
                    lot = (lotsequence - sequence) // 4096
                    return priv, lot, sequence
                else:
                    return priv, False, False
            else:
                return priv
        else:
            if outputlotsequence:
                return False, False, False
            else:
                return False


def testPassword(pwd):
    try:
        if bip38decrypt(pwd, encryptedSecret) != False:
            pwdLenth = 22 + len(pwd)
            print("\n\n" + "#" * pwdLenth + "\n## PASSWORD FOUND: {pwd} ##\n".format(pwd=pwd) + "#" * pwdLenth + "\n")
            global flag
            flag = 1
    except:
        pass
    finally:
        td.release()


if __name__ == '__main__':
    COMPRESSION_FLAGBYTES = ['20', '24', '28', '2c', '30', '34', '38', '3c', 'e0', 'e8', 'f0', 'f8']
    LOTSEQUENCE_FLAGBYTES = ['04', '0c', '14', '1c', '24', '2c', '34', '3c']

    encryptedSecret = "6PnQmAyBky9ZXJyZBv9QSGRUXkKh9HfnVsZWPn4YtcwoKy5vufUgfA3Ld7"
       

    threadNum = 32

    pwdCharacters = string.ascii_uppercase + string.digits
    maxCombination = 20 
    maxLength = 23 
    positions = [4, 9, 14, 19]

    td = threading.BoundedSemaphore(int(threadNum))
    threadlist = []

    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

    num = 0
    flag = 0
    for pwd in itertools.product(pwdCharacters, repeat=maxCombination):
        if flag == 1:
            break

        password = "".join(pwd)
        if len(password) <= int(maxLength):
            formatted_pwd = list(password)
            for pos in positions:
                formatted_pwd.insert(pos, '-')
            formatted_pwd = ''.join(formatted_pwd)

            num += 1
            msg = 'Test Password {num} , {password}'.format(num=num, password=formatted_pwd)
            sys.stdout.write('\r' + msg)
            sys.stdout.flush()
            td.acquire()
            t = threading.Thread(target=testPassword, args=(formatted_pwd,))
            t.start()
            threadlist.append(t)
    for x in threadlist:
        x.join()

    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))


if you're interested in finding the password for challenge #1, I'll leave a simple code here.this code will search for 36^20 combinations sequentially. good luck.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: Steeley on July 31, 2023, 04:24:20 PM
Saying this for the first time. I have always thought Ballet is the best, easiest wallet to use and I give them to beginners because of this. However, I never mention this because of the fud I see anytime Ballet comes up (not here, but on other public places like Reddit, etc.). This hack challenge is a great idea and will give some concrete verification to the security when it comes up in the future.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: rsincognito on August 02, 2023, 06:53:50 PM
Agree, im a big fan of Ballet, I hand them out loaded to my employees all the time ,  when a newbie holds a loaded ballet wallet during a bull run it creates and instant orange pill lol


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: nomachine on August 07, 2023, 07:40:16 AM
Code:
 import itertools
import sys
import string
import datetime
import scrypt
import threading
from binascii import unhexlify
from Crypto.Cipher import AES
from simplebitcoinfuncs import normalize_input, b58d, hexstrlify, dechex, privtopub, compress, pubtoaddress, b58e, multiplypriv
from simplebitcoinfuncs.ecmath import N
from simplebitcoinfuncs.hexhashes import hash256


def simple_aes_decrypt(msg, key):
    assert len(msg) == 16
    assert len(key) == 32
    cipher = AES.new(key, AES.MODE_ECB)
    msg = hexstrlify(cipher.decrypt(msg))
    while msg[-2:] == '7b':  # Can't use rstrip for multiple chars
        msg = msg[:-2]
    for i in range((32 - len(msg)) // 2):
        msg = msg + '7b'
    assert len(msg) == 32
    return unhexlify(msg)


def bip38decrypt(password, encpriv, outputlotsequence=False):
    password = normalize_input(password, False, True)
    encpriv = b58d(encpriv)
    assert len(encpriv) == 78
    prefix = encpriv[:4]
    assert prefix == '0142' or prefix == '0143'
    flagbyte = encpriv[4:6]
    if prefix == '0142':
        salt = unhexlify(encpriv[6:14])
        msg1 = unhexlify(encpriv[14:46])
        msg2 = unhexlify(encpriv[46:])
        scrypthash = hexstrlify(scrypt.hash(password, salt, 16384, 8, 8, 64))
        key = unhexlify(scrypthash[64:])
        msg1 = hexstrlify(simple_aes_decrypt(msg1, key))
        msg2 = hexstrlify(simple_aes_decrypt(msg2, key))
        half1 = int(msg1, 16) ^ int(scrypthash[:32], 16)
        half2 = int(msg2, 16) ^ int(scrypthash[32:64], 16)
        priv = dechex(half1, 16) + dechex(half2, 16)
        if int(priv, 16) == 0 or int(priv, 16) >= N:
            if outputlotsequence:
                return False, False, False
            else:
                return False
        pub = privtopub(priv, False)
        if flagbyte in COMPRESSION_FLAGBYTES:
            privcompress = '01'
            pub = compress(pub)
        else:
            privcompress = ''
        address = pubtoaddress(pub, '00')
        try:
            addrhex = hexstrlify(address)
        except:
            addrhex = hexstrlify(bytearray(address, 'ascii'))
        addresshash = hash256(addrhex)[:8]
        if addresshash == encpriv[6:14]:
            priv = b58e('80' + priv + privcompress)
            if outputlotsequence:
                return priv, False, False
            else:
                return priv
        else:
            if outputlotsequence:
                return False, False, False
            else:
                return False
    else:
        owner_entropy = encpriv[14:30]
        enchalf1half1 = encpriv[30:46]
        enchalf2 = encpriv[46:]
        if flagbyte in LOTSEQUENCE_FLAGBYTES:
            lotsequence = owner_entropy[8:]
            owner_salt = owner_entropy[:8]
        else:
            lotsequence = False
            owner_salt = owner_entropy
        salt = unhexlify(owner_salt)
        prefactor = hexstrlify(scrypt.hash(password, salt, 16384, 8, 8, 32))
        if lotsequence is False:
            passfactor = prefactor
        else:
            passfactor = hash256(prefactor + owner_entropy)
        if int(passfactor, 16) == 0 or int(passfactor, 16) >= N:
            if outputlotsequence:
                return False, False, False
            else:
                return False
        passpoint = privtopub(passfactor, True)
        password = unhexlify(passpoint)
        salt = unhexlify(encpriv[6:14] + owner_entropy)
        encseedb = hexstrlify(scrypt.hash(password, salt, 1024, 1, 1, 64))
        key = unhexlify(encseedb[64:])
        tmp = hexstrlify(simple_aes_decrypt(unhexlify(enchalf2), key))
        enchalf1half2_seedblastthird = int(tmp, 16) ^ int(encseedb[32:64], 16)
        enchalf1half2_seedblastthird = dechex(enchalf1half2_seedblastthird, 16)
        enchalf1half2 = enchalf1half2_seedblastthird[:16]
        enchalf1 = enchalf1half1 + enchalf1half2
        seedb = hexstrlify(simple_aes_decrypt(unhexlify(enchalf1), key))
        seedb = int(seedb, 16) ^ int(encseedb[:32], 16)
        seedb = dechex(seedb, 16) + enchalf1half2_seedblastthird[16:]
        assert len(seedb) == 48  # I want to except for this and be alerted to it
        try:
            factorb = hash256(seedb)
            assert int(factorb, 16) != 0
            assert not int(factorb, 16) >= N
        except:
            if outputlotsequence:
                return False, False, False
            else:
                return False
        priv = multiplypriv(passfactor, factorb)
        pub = privtopub(priv, False)
        if flagbyte in COMPRESSION_FLAGBYTES:
            privcompress = '01'
            pub = compress(pub)
        else:
            privcompress = ''
        address = pubtoaddress(pub, '00')
        try:
            addrhex = hexstrlify(address)
        except:
            addrhex = hexstrlify(bytearray(address, 'ascii'))
        addresshash = hash256(addrhex)[:8]
        if addresshash == encpriv[6:14]:
            priv = b58e('80' + priv + privcompress)
            if outputlotsequence:
                if lotsequence is not False:
                    lotsequence = int(lotsequence, 16)
                    sequence = lotsequence % 4096
                    lot = (lotsequence - sequence) // 4096
                    return priv, lot, sequence
                else:
                    return priv, False, False
            else:
                return priv
        else:
            if outputlotsequence:
                return False, False, False
            else:
                return False


def testPassword(pwd):
    try:
        if bip38decrypt(pwd, encryptedSecret) != False:
            pwdLenth = 22 + len(pwd)
            print("\n\n" + "#" * pwdLenth + "\n## PASSWORD FOUND: {pwd} ##\n".format(pwd=pwd) + "#" * pwdLenth + "\n")
            global flag
            flag = 1
    except:
        pass
    finally:
        td.release()


if __name__ == '__main__':
    COMPRESSION_FLAGBYTES = ['20', '24', '28', '2c', '30', '34', '38', '3c', 'e0', 'e8', 'f0', 'f8']
    LOTSEQUENCE_FLAGBYTES = ['04', '0c', '14', '1c', '24', '2c', '34', '3c']

    encryptedSecret = "6PnQmAyBky9ZXJyZBv9QSGRUXkKh9HfnVsZWPn4YtcwoKy5vufUgfA3Ld7"
        

    threadNum = 32

    pwdCharacters = string.ascii_uppercase + string.digits
    maxCombination = 20  
    maxLength = 23  
    positions = [4, 9, 14, 19]

    td = threading.BoundedSemaphore(int(threadNum))
    threadlist = []

    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

    num = 0
    flag = 0
    for pwd in itertools.product(pwdCharacters, repeat=maxCombination):
        if flag == 1:
            break

        password = "".join(pwd)
        if len(password) <= int(maxLength):
            formatted_pwd = list(password)
            for pos in positions:
                formatted_pwd.insert(pos, '-')
            formatted_pwd = ''.join(formatted_pwd)

            num += 1
            msg = 'Test Password {num} , {password}'.format(num=num, password=formatted_pwd)
            sys.stdout.write('\r' + msg)
            sys.stdout.flush()
            td.acquire()
            t = threading.Thread(target=testPassword, args=(formatted_pwd,))
            t.start()
            threadlist.append(t)
    for x in threadlist:
        x.join()

    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))


if you're interested in finding the password for challenge #1, I'll leave a simple code here.this code will search for 36^20 combinations sequentially. good luck.

pybip38 has not been updated over 8 years.
You can speed up this script calculations by about 10 times by adding gmpy2.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: anonymousminer on August 09, 2023, 01:27:25 PM
be VERY careful... newbies posting code.... or anyone for that matter.... could be malicious.... i would not use it, but if you do... do it at your own risk.

STILL LIVE AFTER 3+ YEARS!!  Just about $60k as i type this....

Good luck!


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: nomachine on August 09, 2023, 03:21:47 PM
To give you some perspective, with current technology, brute forcing a 20-character password with a mix of upper  case letters, numbers, could take an incredibly long time, likely beyond the lifetime of the universe. No luck there at all.  ;D


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: krogothmanhattan on August 09, 2023, 08:14:35 PM
To give you some perspective, with current technology, brute forcing a 20-character password with a mix of upper  case letters, numbers, could take an incredibly long time, likely beyond the lifetime of the universe. No luck there at all.  ;D

  SO true it is indeed quite impossible to crack. I placed this stamp online in 2017 with an exposed public and private keys!

   The private addy is BIP38 encrypted and the password must be over 100 characters as I just randomly punched the keyboard.

    It was loaded with 0.02BTC and still is...nobody has every swept it!

     https://www.talkimg.com/images/2023/08/09/GchSG.png


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: Drawesome on September 29, 2023, 08:58:07 AM
So we all agree that this isn't any puzzle or real challenge, but marketing. It's fun though, and I agree that these Ballet Wallets are a nice way to introduce a BTC paper money solution that's easy for people to use. A third party must be trusted, but I trust Bobby doesn't want to go to jail, and the system generating 2 entropies in different places is a fair enough security measure.

Just for fun, I'll share some calculations (let me know if I missed something):

About the first wallet (the second one is just as difficult as guessing any random wallet and makes no sense to be considered a game challenge at all):
He gives us for free the "-" characters, so we just need to guess 20 characters (uppercase and numbers) so we have 36^20 possible outcomes. In decimal, it is: 13367494538843734067838845976576 (1.34 * 10^31).
The nearest power of 2 is: 2^103 = 10141204801825835211973625643008  ("low" compared to the 2^256 of the second wallet)

Let's compute how many guesses per second we need to crack this wallet for sure in 10 years:
Code:
total_possibilities = 36**20
time_in_years = 10
time_in_seconds = time_in_years * 365 * 24 * 60 * 60
guesses_per_second = total_possibilities / time_in_seconds

print(f'Guesses per second needed: {guesses_per_second}')
Guesses per second needed: 4.2388047117084395e+22

Instead, to crack it on average within 10 years, we just divide by 2: 2.1194023558542198e+22 guesses per second.
I think Bobby can sleep well.



  SO true it is indeed quite impossible to crack. I placed this stamp online in 2017 with an exposed public and private keys!

   The private addy is BIP38 encrypted and the password must be over 100 characters as I just randomly punched the keyboard.

    It was loaded with 0.02BTC and still is...nobody has every swept it!

     https://www.talkimg.com/images/2023/08/09/GchSG.png
In your case, the entropy from a human randomly punching keys might be easier to crack. I believe some methods could assist in guessing pseudo-random human keyboard punching, although 100 characters are quite a lot, haha. You can sleep well too!


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: Gatorelf on September 29, 2023, 12:42:35 PM
I believe you would need access to an AI infused Quantum computer running 24/7


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: napros on February 10, 2024, 04:47:50 PM
I maybe a long way off or I could be very close, but some guidance would be fantastic.

I have been able to generate a few Intermediate Codes from the information provided for #2

The issue I am having is, do I continue along the same path or am I heading in the opposite direction to where I should be going.

From the BIP38 Passphrase I am able to get the Intermediate Code, from this I can generate a Bitcoin Address, Confirmation Code and Encrypted Private Key (but the Confirmation Code and the Bitcoin Address are not the same as what was given, do I spent days clicking "Generate" or am I doing something wrong and way off base.)

Thank you in advance for any help provided.


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: Steeley on February 11, 2024, 02:58:15 AM
This challenge is great news. I personally love the Ballet Wallets and, in addition to storing some of my own stack on them, I use them to give Bitcoin to people (the cheaper ones). I think they should be mentioned more often in the public as "Best Wallets" on the market, but I never see them discussed in articles or on Reddit. I'm pulling for this to help with PR.

Also, the new coin wallet is cool. I am not buying it because it isn't really a collectible, but this is one of the items Ballet has put out that I have seen people mentioning in public. I'm hoping this new product will lead to some BTCC style limited versions in the future. 


Title: Re: [ANN] #takebobbysbitcoin Ballet REAL BITCOIN Wallets
Post by: YodasRedRocket on February 12, 2024, 02:32:30 AM
This challenge is great news. I personally love the Ballet Wallets and, in addition to storing some of my own stack on them, I use them to give Bitcoin to people (the cheaper ones). I think they should be mentioned more often in the public as "Best Wallets" on the market, but I never see them discussed in articles or on Reddit. I'm pulling for this to help with PR.

Also, the new coin wallet is cool. I am not buying it because it isn't really a collectible, but this is one of the items Ballet has put out that I have seen people mentioning in public. I'm hoping this new product will lead to some BTCC style limited versions in the future. 

Agree! Ballet is next best after making your own keys ✊🏼