Estoy intentando extraer la información Cifrada de una cartera bitcoin, en específico la información del Key para posteriormente intentar descifrarlo por algún ataque de fuerza bruta.
Quiero extraerla por que no quiero depender del bitcoin core ya que si se realiza el ataque por fuerza bruta mediante algún script bash o algun otro metodo NO compilado, el ataque puede ser realmente ineficiente.
También quiero brincarme algunos pasos innecesarios de funciones tipo rehash o PBKDF2 (key derivation) ya que aunque no consumen mucho CPU si quitan algunos miles de ciclos de procesamiento que a la larga pueden hacer aun mas eterno el proceso de crackeo.
Segun he leido la informacion del Key cifrado el salt y el numero de iteraciones esta contenida en un campo de 64 bytes del wallet.dat llamado mkey.
Segun vi en el siguiente Link:
Código:
https://bitcoin.stackexchange.com/questions/48070/format-of-mkey-field-in-encrypted-wallet-dat-file
La data contiene los siguientes campos:
mkey, nID, encrypted_key, salt, derivation_method, derivation_rounds, other_derivation_parameters
Citar
- mkey - a size prefixed string denoting the start of the master key data.
- nID - an integer whose purpose I have been unable to determine.
- encrypted_key - a size prefixed buffer containing the encrypted master key.
- salt - a size prefixed buffer containing the salt data used when encrypting the key.
- derivation_method - an integer containing either 0 or 1 for the method used to encrypt the master key using the wallet password.
- derivation_rounds – an integer containing the number of rounds used to encrypt the master key.
- other_derivation_parameters
Si vemos la siguiente imagen:
Vemos que ahí esta la data, escribí un pequeño programa que la encuentra y la extrae, pero no se en que orden este, con ver los datos de esta cartera y otras me doy cuenta de algunos datos que pueden ser números como los primeros 8 bytes después del mkey, pueden ser números, al igual que los últimos 4 antes de ckey.
Edit
Solucionado el master key cifrado son 48 bytes que se encuentran a un offset de -72 bytes de la primera coincidencia del string mkey.
Para esta cartera en cuestión el Master Key Cifrado es:
CEC646179A7F947349A0AA99EC7122B01F72BF18FFA4FDC760635D8C13109DA196D3DC802D5AABB23FA6C6AABA9A1DBB
Saludos