Bitcoin Forum
May 27, 2024, 11:10:47 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: PyBrainwallet - Python Brainwallet Generator - Now with BIP38 and Diceware!  (Read 3113 times)
nomorecoin (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0



View Profile
October 15, 2013, 11:48:54 PM
Last edit: December 05, 2013, 11:57:45 PM by nomorecoin
 #1

Python GUI brainwallet generator, now with BIP38 non-ec-multiply encrypt/decrypt, Diceware, and support for compressed keys

https://i.imgur.com/w4grc3g.png

Use text or file(s) to create your keypair
Generate and display note, updated with each change
Note includes QR code with blockchain.info url for easier verification of funds
Encrypt private key for more secure printing
Option to display compressed version of keys
Option to hash seed a user-set number of rounds (multihash)
Use dice to create truly random passphrases. PRNG option uses PyCrypto. Dice are better.
Save note to file - example

Performance tested on Atom netbook, ~7 seconds to encrypt/decrypt and update displayed note. Stock-clock Raspberry Pi takes ~30 seconds. Much faster on other systems.

README
https://github.com/nomorecoin/PyBrainwallet
Previous version orphaned, moved to Windows branch
Windows binary (outdated)
License is WTFPL, so do what the fuck you want. Let me know if you do something cool.

Known issues:
Absolute layout is guaranteed to break on some systems.
Unable to provide binary for now - scrypt module issues.
Test cases are incomplete, new features manually tested.
Performance is highly CPU-dependent, slow systems will continue to be slow.
Might break in other exciting and fascinating ways, or in very stupid ways. Verify wallets before use.

Planned Features:
Layout, sizers instead of absolute
Diceware word lookup and optional passphrase generation added
Allow use of multiple keyfiles as seed added
Create and decrypt BIP0038-compliant notes added
Hardened hash mode User-set number of hash rounds added
Compressed key option added

I am in no way responsible for lost or stolen coins, no matter what.
yakov
Newbie
*
Offline Offline

Activity: 40
Merit: 0


View Profile
October 17, 2013, 09:12:41 PM
 #2

I quite like it.
BIP0038 involves AES256 encryption and scrypt, which is really slow in python. Usually people import large libraries written in C++.
Then again, the speed issue shouldn't be a problem for bitcoin key encryption since you only do it once, and the kind of AES256 used is only simple and doesn't need the initialisation vector stuff or block chaining. It could be coded.
malevolent
can into space
Legendary
*
Offline Offline

Activity: 3472
Merit: 1721



View Profile
October 17, 2013, 09:27:08 PM
 #3

You could also add support for compressed public keys (derived from the same private key but the bitcoin address is different).

Signature space available for rent.
malevolent
can into space
Legendary
*
Offline Offline

Activity: 3472
Merit: 1721



View Profile
October 18, 2013, 12:24:38 PM
 #4

You could also add support for compressed public keys (derived from the same private key but the bitcoin address is different).
Definitely something to consider. Is there much interest in, or use of, compressed pubkeys?

The only reason why someone would not use them is if they had an old client that doesn't support compressed public keys. I think Bitcoin-Qt uses them by default since v. 0.6. (1.5 years)
They create less blockchain bloat because they are almost half the size of compressed pubkeys (33 bytes instead of 65).

Signature space available for rent.
brand_new
Newbie
*
Offline Offline

Activity: 18
Merit: 0


View Profile WWW
October 29, 2013, 10:14:57 AM
 #5

Hey man, I'd like to try my hands at this. I don't have any original ideas to add yet though. Is there anything I can do to help? Any bug fixes?
btcven
Hero Member
*****
Offline Offline

Activity: 715
Merit: 500


Bitcoin Venezuela


View Profile WWW
October 29, 2013, 01:47:16 PM
 #6

A Bitcoin address is not a public key, but a hash of it.

Admin: rdymac (PGP) | contacto@bitcoinvenezuela.com | @cafebitcoin | Electrum, lightweight bitcoin client
If I've been helpful tip me a coffee! Cheesy1rdymachKZpA9pTYHYHMYZjfjnoBW6B3k Bitrated user: rdymac.
nomorecoin (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0



View Profile
November 24, 2013, 08:30:31 PM
 #7

Bump, major update, now includes BIP38 (non-ec) encryption and decryption! Updated OP.
dserrano5
Legendary
*
Offline Offline

Activity: 1974
Merit: 1029



View Profile
November 24, 2013, 10:52:44 PM
 #8

Looks good! Is a command line interface on the roadmap? Clicking around is for wimps Tongue.
nomorecoin (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0



View Profile
November 24, 2013, 11:18:18 PM
 #9

Looks good! Is a command line interface on the roadmap? Clicking around is for wimps Tongue.
Probably, though not a very high priority for now.
nomorecoin (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0



View Profile
November 26, 2013, 06:44:43 AM
 #10

Tested on Rasberry Pi, with decent results. ~12 seconds to create note, and encrypt/decrypt takes ~30 seconds.

Updated PIL import to allow use of pillow, because PIL threw an error (decoder ZIP not available).
kfruit
Newbie
*
Offline Offline

Activity: 56
Merit: 0


View Profile
December 01, 2013, 05:35:24 AM
 #11

Was looking for a way to create paper wallets with BIP 38 on raspberry for a while! It's just not possible using javascript based methods like bitaddress.org (takes forever). I'll definitely try this out ASAP, thanks!
nomorecoin (OP)
Newbie
*
Offline Offline

Activity: 16
Merit: 0



View Profile
December 05, 2013, 11:50:55 PM
 #12

Added Diceware support. Enter your manual rolls (comma separated), or use PRNG (PyCrypto) to generate passphrases. Diceware is available in the Options menu.

The scrypt module does build on Windows, from PyPi source, with MinGW. Unfortunately, I'm still unable to build binaries.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!