This Python script generates BIP39 output indexes from a given seed phrase. These index numbers can then be stamped into stainless steel washers as a way to store your seed phrase that is safe from fire corrosion and floods. Step-by-step instructions can be found here https://blockmit.com/english/guides/diy/make-cold-wallet-washers/ . The following two YouTube videos give you examples on how to create your own. These examples stamp the Seed phrase Word into the washer. This can be very time-consuming for long words. This script converts your words into the bip39 index number so you can just stamp the number instead of your seeded word. This adds an extra layer of security as many people wouldn't know What a bunch of washers and numbers are https://youtu.be/EEyz7p9Aci8?si=DTWno46ocGE5nzQa https://youtu.be/3Aj_EHOu9WE?si=VRtZhSvuVW5_wwhU It runs 100% locally and does not access the Internet. CAUTION! Never enter your seed phrase into a webpage online. You can never trust where the information is going.
https://getcoinplate.com/blog/official-bip39-word-list-mnemonic-in-english-verified/
https://www.thingiverse.com/thing:4590734
If you use any of the following wallets then they support bip39 seed phrases.There are a lot more just do your own research.
Ledger https://www.ledger.com/
Trezor https://trezor.io/
Keepkey https://shapeshift.com/keepkey
Bit Box https://shiftcrypto.ch/
Cool Wallet https://www.coolwallet.io/
Cobo Vault https://cobo.com/hardware-wallet/cobo-vault
Cold Card Wallet https://coldcardwallet.com/
Ellipal https://www.ellipal.com/
Electrum https://electrum.org/
Jaxx (Desktop / Mobile) https://jaxx.io/
Coinomi (Desktop / Mobile) https://coinomi.com/
Atomic Cryptocurrency Wallet (Desktop / Mobile) https://atomicwallet.io/
Bither (Desktop / Mobile) https://bither.net/
Exodus https://www.exodus.io/
Samourai Wallet (Desktop / Mobile) https://samouraiwallet.com/
Coin Wallet (Desktop / Mobile) https://coin.space/
Blockstream Green (Desktop / Mobile) https://blockstream.com/green/
Wasabi Wallet (Desktop / Mobile) https://wasabiwallet.io/
Bread Wallet https://brd.com/
Mycelium Wallet https://wallet.mycelium.com/
Eidoo (Desktop / Mobile) https://eidoo.io/
Ownbit https://ownbit.io/en/
Blue Wallet https://bluewallet.io/
Enjin Wallet https://enjin.io/wallet
Blockchain Wallet https://www.blockchain.com/wallet
My Crypto Wallet https://mycrypto.com/account
My Ether Wallet https://www.myetherwallet.com/
Before you begin, ensure you have met the following requirements:
- You have installed Python 3.6 or later.
- Visit the official Python website at https://www.python.org/.
- Hover over the 'Downloads' tab and click on 'Windows'.
- Click on the latest Python release. As of writing these instructions, Python 3.12.1 is the latest version.
- After downloading the executable, run it. In the first screen of the installation wizard, check the box that says 'Add Python 3.9 to PATH' and then click 'Install Now'.
- Once the installation is complete, you can verify the installation by opening a new command prompt window and typing
python --version. You should seePython 3.9.7.
- Visit the official Python website at https://www.python.org/.
- Hover over the 'Downloads' tab and click on 'macOS'.
- Click on the latest Python release. As of writing these instructions, Python 3.12.1 is the latest version.
- After downloading the package, run it and follow the instructions in the installation wizard.
- Once the installation is complete, you can verify the installation by opening a new terminal window and typing
python3 --version. You should seePython 3.9.7.
- You have installed the following Python libraries:
osjsonrandommatplotlibnumpy
You can install any missing libraries with pip:
pip install matplotlib numpy
To install BIP39 Output Generator, follow these steps:
- Clone the repository:
git clone https://github.com/yourusername/bip39output.git
- Navigate to the project directory:
cd bip39output
The script defaults to 24 words seed phrases. If you have 12 words then Change the variable in the script from 24 to 12.
NUM_WORDS = 24 # Number of words in your seed phraseChange it to
NUM_WORDS = 12 # Number of words in your seed phraseTo use BIP39 Output Generator, follow these steps:
python getNumbersfromSeed.py2. If you have not hardcoded your seed phrase in the script, you will be prompted to enter it as follows:
Please enter 12 words: hello dog abandon detect dumb common tomato vanish print ridge zoo skate
1 - 'hello' : 855
2 - 'dog' : 517
3 - 'abandon' : 1
4 - 'detect' : 484
5 - 'dumb' : 544
6 - 'common' : 372
7 - 'tomato' : 1825
8 - 'vanish' : 1931
9 - 'print' : 1367
10 - 'ridge' : 1485
11 - 'zoo' : 2048
12 - 'skate' : 1617
[855, 517, 1, 484, 544, 372, 1825, 1931, 1367, 1485, 2048, 1617] . ~/Documents/Python code/bip39 /opt/homebrew/bin/python3 "/Users/<user>/Documents/Python code/bip39/getNumbersfromSeed.py"
1 - 'hello' : 855
2 - 'dog' : 517
3 - 'abandon' : 1
4 - 'detect' : 484
5 - 'dumb' : 544
6 - 'common' : 372
7 - 'tomato' : 1825
8 - 'vanish' : 1931
9 - 'print' : 1367
10 - 'ridge' : 1485
11 - 'zoo' : 2048
12 - 'skate' : 1617
[855, 517, 1, 484, 544, 372, 1825, 1931, 1367, 1485, 2048, 1617] . python getSeedfromNumbers.py
input 12 numbers from your stainless steel washers that correspond to words in the bip39 word#list
The App Will look them up in A local copy of the bip39 wordlist to find the corresponding words. It will then Print the words and their index numbers.
It does this all locally , not on the web. **CAUTION!** Never enter your seed phrase into any website or app that is connected to the Internet
The example below is what you get if you use the test seed phrase. Comment the line in the script to enter your own Numbers.
~/Documents/Python code/bip39 /opt/homebrew/bin/python3 "/Users/<user>/Documents/Python code/bip39/getSeedfromNumbers.py"
Index 1: '855' corresponds to the word 'hello' in the bip39 wordlist
Index 2: '517' corresponds to the word 'dog' in the bip39 wordlist.
Index 3: '1' corresponds to the word 'abandon' in the bip39 wordlist.
Index 4: '484' corresponds to the word 'detect' in the bip39 wordlist.
Index 5: '544' corresponds to the word 'dumb' in the bip39 wordlist.
Index 6: '372' corresponds to the word 'common' in the bip39 wordlist.
Index 7: '1825' corresponds to the word 'tomato' in the bip39 wordlist.
Index 8: '1931' corresponds to the word 'vanish' in the bip39 wordlist.
Index 9: '1367' corresponds to the word 'print' in the bip39 wordlist.
Index 10: '1485' corresponds to the word 'ridge' in the bip39 wordlist.
Index 11: '2048' corresponds to the word 'zoo' in the bip39 wordlist.
Index 12: '1617' corresponds to the word 'skate' in the bip39 wordlist.
[855, 517, 1, 484, 544, 372, 1825, 1931, 1367, 1485, 2048, 1617] . Entering your own Index numbers Will look like the following;
~/Documents/Python code/bip39 /opt/homebrew/bin/python3 "/Users/<users>/Documents/Python code/bip39/getSeedfromNumbers.py"
Please enter 12 Numbers in the correct order: 855 517 1 484 544 372 1825 1931 1367 1485 2048 1617
Index 1: '855' corresponds to the word 'hello' in the bip39 wordlist.
Index 2: '517' corresponds to the word 'dog' in the bip39 wordlist.
Index 3: '1' corresponds to the word 'abandon' in the bip39 wordlist.
Index 4: '484' corresponds to the word 'detect' in the bip39 wordlist.
Index 5: '544' corresponds to the word 'dumb' in the bip39 wordlist.
Index 6: '372' corresponds to the word 'common' in the bip39 wordlist.
Index 7: '1825' corresponds to the word 'tomato' in the bip39 wordlist.
Index 8: '1931' corresponds to the word 'vanish' in the bip39 wordlist.
Index 9: '1367' corresponds to the word 'print' in the bip39 wordlist.
Index 10: '1485' corresponds to the word 'ridge' in the bip39 wordlist.
Index 11: '2048' corresponds to the word 'zoo' in the bip39 wordlist.
Index 12: '1617' corresponds to the word 'skate' in the bip39 wordlist.
[855, 517, 1, 484, 544, 372, 1825, 1931, 1367, 1485, 2048, 1617] This repository also includes a high-performance BIP39 word scanner that can search your entire computer for files containing BIP39 seed phrase words. This security tool helps identify potential seed phrase exposures on your system.
- High-speed scanning: Processes 1000+ files per second with optimized algorithms
- Intelligent seed phrase detection: Identifies potential 12 or 24-word seed phrases with unique words only
- Smart file filtering: Automatically detects text files and skips binaries
- Memory efficient: Handles large files with chunked processing
- Real-time progress: Shows live scanning statistics
- Comprehensive reporting: Detailed reports with performance metrics
- False positive filtering: Eliminates common code patterns (like JavaScript switch statements)
python3 scan_for_bip39_words.py --dir ~/Documents --quickpython3 scan_for_bip39_words.py --dir ~/Documents --detailed --detect-seeds --output report.txtpython3 scan_for_bip39_words.py --dir / --detect-seeds --workers 20 --max-file-size 100 --output full_scan.txt--dir: Directory to scan (default: current directory)--detect-seeds: Look for potential 12/24 word seed phrase patterns--detailed: Show detailed word frequency information--quick: Faster scan with less detail--workers: Number of parallel scanning threads (default: 10)--max-file-size: Maximum file size to scan in MB (default: 50)--output: Save results to a file--exclude: Directories to skip during scanning--no-content-check: Skip content detection for files without extensions (faster)
PERFORMANCE SUMMARY
------------------------------
Total files found: 15,432
Total files scanned: 12,891
Files with BIP39 words: 47
Potential seed phrases found: 2
Scan time: 8.3 seconds
Scan rate: 1,553.4 files/second
⚠️ POTENTIAL SEED PHRASES DETECTED
------------------------------
WARNING: These files may contain seed phrases!
File: /path/to/suspicious/file.txt
- Found 12 UNIQUE BIP39 words: abandon ability able...
- This tool runs 100% locally - no data is sent anywhere
- Review any flagged files immediately
- Never store seed phrases in plain text files
- Use hardware wallets or encrypted storage for seed phrases
- The scanner identifies potential exposures but cannot determine if they are real seed phrases
If you notice any bugs, please report it by opening an issue.
If you want to contribute code, you are welcome to do so .
This project uses the following license: <Apache License 2.0>.
