Hey everyone,
We've talked about this a lot and using a Brainwallet is definitely not the smartest move. I did some testing myself and came across 18,509 BTC addresses that were generated from a brainwallet and have also been used on the blockchain.
I tried to cross-check my findings with other researchers but couldn’t find any complete lists out there. I came across a few examples but nothing extensive. So I decided to put my results together and share them here.
Quick heads up: all the addresses I've shared have a balance of 0, so this isn’t a list for thieves. I also have a bunch of extra datasets that I haven’t processed yet, so I think the numbers will increase once I get to them (currently working on refining my tools and blockchain parser, so it might take a bit).
I’d really appreciate any feedback and if you’ve got results that I might’ve overlooked, I’d love to hear about them so I can add them in.
No, I used my own parser but since it wasn;t/isn't finished yet I got the transactions and balance from using the Blockchain API.
The steps involved for creating such a list:
Perform a SHA-256 on the input (word/phrase)Check the generated private key (compressed/uncompressed) against my own databases with successesIf Private key is not in database create BTC-address from the key(s)Check if BTC address exists on blockchain based on my own database with all BTC-addressesIf address is found store the private key and passphrase in the database and get info on number of transactions and balance from Blockchain API
That's about it.
Oh wow... more than 18k BTC addresses having used single word passphrases is pretty bad. At least most of them don't seem to have been used since 2013.
Did you look into Brainflayer [1] or did you feel more comfortable using a custom made solution?
[1] https://github.com/ryancdotorg/brainflayer
I did look into Brainflayer and also used it in the process. But you got to keep in mind Brainflayer is not a standalone solution. It depends on creating a Bloom filter based upon all addresses used in the BTC-Blokchain. So you first need to come up with such a list: this is where I used my own parser to create the list. In 2015 when Brainflayer was released there were about 80 Million unique addresses on the blockchain which lead to a lot less false positives than when used on the 400 Million plus unique addresses currently in use. And finally Brainflayer just reports if a match was found it doesn't do any looking into transactions or balances used.
So what I did was make use of Brainflayer to do a very fast scan using a Bloomfilter and I processed the results from there within my own tooling to filter out false positives, duplicates and add extra information on transactions and balances.
most of the ones you found have a 0.00005460 deposit and withdrawal
ie 2 transactions. so I would adjust the 18,509 down to under 2,000
as it is obvious those addresses where designed and used to receive then send 0.00005460
0.0000546 seems to start at 899 and end at 18036 that is more then 17,000 where security was basically an
" I don't care do you? " plan. But it does interest me that the first 899 on the list were not like that and used often.
I personally believe most of the ones with a 0.00005460 deposit and withdrawal are in there because of some experiment in the past where simple dictionary words were used to see how long it would take for an attacker to grab the funds. I do agree with you the ones with the most transactions are the ones most interesting that's why I sorted the list by number of transactions. I still think the other ones are interesting as well when trying to compose a list of brainwallets which have been used in the past.
Biggest is over 500 BTC. As stated on the site (https://eli5.eu/brainwallet/detail/14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE.html):
General Information
The passhrase below was used as a Brainwallet to generate the given address.
BTC Address: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Used passphrase: bitcoin is awesome
Total transactions: 19
Amount received: 501.06500863 BTC
Amount spent: 501.06500863 BTC
Proof
You can check the private key is indeed known by verifying the following signed message when running your own node:
Very interesting data, and proof that we are inherently awful at privacy. I think my personal favorite is number 72, "how much wood could a woodchuck chuck if a woodchuck could chuck wood", which has held over 500 BTC.
You've missed a decimal point at entry 266 - it currently says it has held over 2 billion BTC.
This thread might be of interest to you: https://bitcointalk.org/index.php?topic=2488493.0
And I did something similar with Ethereum (only used some ~10,000 most common passwords): https://bitcointalk.org/index.php?topic=2488493.msg42291616#msg42291616
Thanks for pointing out those posts. I was aware of the first one (from Pastebin) but haven't yet made my own dataset with the kind of data decscribed in there like BTC-addresses, transaction-id's, merkleroots, etc.
I will read up on your post about Ethereum brainwallets. I'm focussing on BTC for now but it's always nice to read about other experiences!
Fixed some nasty bugs which caused some addresses to stay blank on the overview-pages and fixed some wrong amounts_in and amounts_out which were not properly converted in some cases.
I also added another 60 new entries to the list based on a small sweep I just completed so the list currently contains 18.569 entries.
Finally: I'm always interested in new datasets to try and/or results from other people who conducted this kind of Research. I aim to let this list grow to the best source for compromised brainwallets.
I get you stand on this and maybe the introduction was a bit too short on the subject. As always there are exceptions to the rule and if you manage to remember a brainwallet with high entropy and also using some personal knowledge (like a salt) it becomes a lot more secure. Let's just hope you want suffer from a dying brain instead of a dying hard drive!