03-26-2017, 03:28 PM
To elaborate on what @philsmd is saying here is the answer I got when asking whether the private key was a simply SHA3 hash...
----------------------------------------------------------------------------------------------------------------------------------------------
"No. Your bkp is not the SHA3 of your password.
It's really quite simple. In the beginning, god said genwallet and...
genwallet says:
genwallet(opts['seed'],pw,email)
You say "here's my email and pw"
seed says "give me super random number":
seed = random_key().decode('hex') # uses pybitcointools' 3-source random generator
so now you need to get your encseed:
encseed = aes.encryptData(pbkdf2(pw),seed)
so we head over to mr. aes and say whats up:
def encryptData(key, data, mode=AESModeOfOperation.modeOfOperation["CBC"], iv=None):
........
........
and now you have your encseed.
then you get the `ethpriv:
ethpriv = sha3(seed)
and your address:
ethaddr = sha3(privtopub(ethpriv)[1:])[12:].encode('hex')
and finally your bkp:
bkp = sha3(seed + '\x02').encode('hex')
So your bkp is the sha3 of your seed plus essentially the number "2" (number "1" was used for your btcpriv to differentiate it from your ethpriv) encoded in hex.
The bkp is a backup obviously. But its not a backup of your password. Its a backup of your seed.
print "Your seed is:", getseed(b['withwallet'],w['bkp'],b['ethaddr'])
leads to...
def recover_bkp_pw(bkp,pw):
return getseed(bkp['withpw'],pw,bkp['ethaddr'])
....
"withpw": aes.encryptData(pbkdf2(pw),seed).encode('hex'),
or...
def recover_bkp_wallet(bkp,wallet):
return getseed(bkp['withwallet'],wallet['bkp'],bkp['ethaddr'])
...
"withwallet": aes.encryptData(pbkdf2(wallet['bkp']),seed).encode('hex'),
Get it now?"
----------------------------------------------------------------------------------------------------------------------------------------------
Only helped me as much in realising how much more complicated it was than I'd hoped.
If you say "I remember the password structure, the words and the combinations but not the way I used all togheter" What you might find helpful is here...
https://github.com/lexansoft/ethcracker
CPU only and no masks wildcards (which is what I really need).
Hope this is of help and please post how you go, I'm in the same boat and looking for a solution.
And if anyone else reading this could be bothered checking out the GitHub link I posted and know if any optimisations could be achieved I'd be grateful.
----------------------------------------------------------------------------------------------------------------------------------------------
"No. Your bkp is not the SHA3 of your password.
It's really quite simple. In the beginning, god said genwallet and...
genwallet says:
genwallet(opts['seed'],pw,email)
You say "here's my email and pw"
seed says "give me super random number":
seed = random_key().decode('hex') # uses pybitcointools' 3-source random generator
so now you need to get your encseed:
encseed = aes.encryptData(pbkdf2(pw),seed)
so we head over to mr. aes and say whats up:
def encryptData(key, data, mode=AESModeOfOperation.modeOfOperation["CBC"], iv=None):
........
........
and now you have your encseed.
then you get the `ethpriv:
ethpriv = sha3(seed)
and your address:
ethaddr = sha3(privtopub(ethpriv)[1:])[12:].encode('hex')
and finally your bkp:
bkp = sha3(seed + '\x02').encode('hex')
So your bkp is the sha3 of your seed plus essentially the number "2" (number "1" was used for your btcpriv to differentiate it from your ethpriv) encoded in hex.
The bkp is a backup obviously. But its not a backup of your password. Its a backup of your seed.
print "Your seed is:", getseed(b['withwallet'],w['bkp'],b['ethaddr'])
leads to...
def recover_bkp_pw(bkp,pw):
return getseed(bkp['withpw'],pw,bkp['ethaddr'])
....
"withpw": aes.encryptData(pbkdf2(pw),seed).encode('hex'),
or...
def recover_bkp_wallet(bkp,wallet):
return getseed(bkp['withwallet'],wallet['bkp'],bkp['ethaddr'])
...
"withwallet": aes.encryptData(pbkdf2(wallet['bkp']),seed).encode('hex'),
Get it now?"
----------------------------------------------------------------------------------------------------------------------------------------------
Only helped me as much in realising how much more complicated it was than I'd hoped.
If you say "I remember the password structure, the words and the combinations but not the way I used all togheter" What you might find helpful is here...
https://github.com/lexansoft/ethcracker
CPU only and no masks wildcards (which is what I really need).
Hope this is of help and please post how you go, I'm in the same boat and looking for a solution.
And if anyone else reading this could be bothered checking out the GitHub link I posted and know if any optimisations could be achieved I'd be grateful.