MultiversX Tracker is Live!

Brute forcing 531,441 seeds only to lose a Reddit challenge

All Cryptocurrencies

by COINS NEWS 200 Views

This challenge was posted 5 hours ago: https://www.reddit.com/r/CryptoCurrency/comments/vyaj4t/how_to_remember_your_12_word_seed_by_spreading_it/ig27rrv/

After setting up an elaborate social game where individual words of the seed are trickled out to commenters who must work with each other, the OP writes as a hint:

Last note: I will periodically give out hints below if the seed is not discovered before the time limit.

  • Hint 1 - The entire seed is made up of three randomly repeating words. If you try and bruteforce it - the odds of getting it correct are 1 in 531,441

    • Moon

    • System

    • Dog

  • Hint 2 - Post age 9 hours

  • Hint 3 - Post age 24 hours

With the right tools, this hint makes the entire challenge irrelevant. A normal consumer GPU can brute force 500k seeds in under a minute, and I'm going to show you how in this post.

First, we're going to use the open source tool btcrecover to handle the brute forcing and dictate what format the data we need to collect should be in.

Reading through the btcrecover documentation, it seems like we'll need an AddressDB (which is a list of addresses in a binary format) that includes the target address, and also a seedlist.

Getting address list

We need an AddressDB because one in ten seeds correspond to real addresses, but almost all of those addresses will have a zero balance. The OP said that the correct seed will have an amount of Dogecoin in it, so we need to get a list of Dogecoin addresses.

To get the AddressDB, we could download the pre-made AddressDBs but note that it was last generated on 2021-04-17 - if the OP created and funded the account after that date, it won't be on the list. So, we'll need to generate a list ourselves, and the easiest way to do that is to head over to Google BigQuery.

Google BigQuery maintains a public dataset of balance-holding Dogecoin addresses, and small queries like this are essentially free:

SELECT addresses[OFFSET(0)] AS address
FROM `bigquery-public-data.crypto_dogecoin.outputs`
WHERE addresses[OFFSET(0)] NOT LIKE 'nonstandard%' AND block_timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 200 DAY)
GROUP BY address

This will return a list of addresses that have sent or received Dogecoin in the last 200 days. This dataset is 136 MB with 4,068,290 addresses. Getting the full list of all addresses that have ever had any activity would've been a lot larger (~8GB) but still doable.

Next, we export this as a list of addresses. I saved it as addrs.txt and then we use btcrecover to convert it into an AddressDB, which is the format that btcrecover wants it in:

python3 create-address-db.py --inputlistfile addrs.txt --dbfilename addrs.db

Getting seed list

Next, we just need a list of the 531,441 valid seeds. I messed around with the tokenlist feature of btcrecover before deciding to give up and just generate a file with all of the seeds. This is fast because, again, 500k is not that much:

k = [0] * 12
for i in range(3**12): print(" ".join([["moon", "system", "dog"][x] for x in k])) if i == 3**12-1: break k[0] += 1 for p in range(12): if k[p] == 3: k[p+1] += 1 k[p] = 0

This outputs to stdout a file 33 MB that starts and ends like this: https://i.imgur.com/ZS0R7Gj.png

Putting it all together

Now, we can just run btcrecover on the seedlist and AddressDB we created:

python3 seedrecover.py --dsw --seedlist seeds.txt --addressdb addrs.db --no-dupchecks --mnemonic-length 12 --language EN --addr-limit 1 --wallet-type dogecoin --enable-opencl

And we get the correct seed in a few seconds. https://i.imgur.com/nLz8uMu.png

This is seed number 399339 of 531441 we're brute forcing:

Seed found: moon moon system moon system dog system dog moon dog moon dog

Unfortunately, I got the seed 35 minutes after the challenge ended - if I had seen the post earlier, anytime after the first hint was posted, I would've won. But I hope this post was informative and can help people in the future.


Get BONUS $200 for FREE!

You can get bonuses upto $100 FREE BONUS when you:
πŸ’° Install these recommended apps:
πŸ’² SocialGood - 100% Crypto Back on Everyday Shopping
πŸ’² xPortal - The DeFi For The Next Billion
πŸ’² CryptoTab Browser - Lightweight, fast, and ready to mine!
πŸ’° Register on these recommended exchanges:
🟑 Binance🟑 Bitfinex🟑 Bitmart🟑 Bittrex🟑 Bitget
🟑 CoinEx🟑 Crypto.com🟑 Gate.io🟑 Huobi🟑 Kucoin.



Comments