Skip to content

avbpodcast/amulet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Amulet ₿

Offline Bitcoin Wallet Generator — single HTML file, zero dependencies, fully verifiable.

Amulet generates BIP-39 seed phrases with high, auditable entropy and derives all standard wallet formats directly in your browser. Nothing is transmitted — ever. Close the tab, and the keys exist only where you wrote them down.

MIT License Version Zero Dependencies

Check the file hash:

SHA256 : D3BB5AE1A50501C7E8E4EDF03B2068C90105370207E3AB39F8D43D6AE82DB22D MD5 : 20D56BA1F7A8934B27491EEF3214D556


Why Amulet?

Most wallet generators ask you to trust their randomness. Amulet lets you verify it. Every seed report includes the exact combined input string, intermediate SHA-256 hashes, checksum bits, and step-by-step instructions to reproduce the mnemonic offline with nothing but a SHA-256 tool and the BIP-39 wordlist.

It ships as a single .html file — no build step, no server, no installs, no apps to trust, and no frameworks. Download the file, save it locally, disconnect from the internet, and open it in any modern browser.


Features

Entropy & Seed Generation

  • 12-word or 24-word BIP-39 mnemonic (128-bit or 256-bit entropy)
  • CSPRNG base layercrypto.getRandomValues() provides 256 bits by default
  • Five entropy sources that mix into the seed via SHA-256(csprng ‖ user_input):
    • CSPRNG only — browser's cryptographic RNG (sufficient on its own)
    • Dice rolls — D6 values, with a bit counter (50 rolls ≈ 128 bits, 99 ≈ 256 bits)
    • Playing cards — full 52-card deck, 4-card draws across multiple rounds with duplicate detection
    • Random keystrokes — live Shannon, bigram, Rényi-2, LZ78, and $\chi^2$ entropy analysis with keyboard-walk detection
    • Chaos Grid — a 5×5 interactive tile-flip game that records timestamps and pointer coordinates as entropy
  • Automatic checksum — SHA-256 of the entropy determines the final BIP-39 checksum word
  • Entropy quality scorecard — rates your combined entropy and flags weak patterns

Address Derivation

  • Legacy — BIP-44 (P2PKH, 1... addresses)
  • Nested SegWit — BIP-49 (P2SH-P2WPKH, 3... addresses)
  • Native SegWit — BIP-84 (P2WPKH, bc1q... addresses)
  • Taproot — BIP-86 (P2TR, bc1p... addresses) with BIP-340/341 key tweaking
  • Silent Payments — BIP-352 (static reusable address, sp1q...)
  • Payment Codes — BIP-47 v1 reusable payment codes (PM8T...)
  • Preview addresses — instantly verify the first 3 receive addresses for any wallet kind against Sparrow, Electrum, or hardware wallets

Extended Keys (BIP-32)

  • Full HD key derivation from seed + optional BIP-39 passphrase (25th word)
  • Extended public keys (xpub / ypub / zpub) for watch-only wallets
  • Extended private keys (xprv / yprv / zprv) for full wallet import
  • Live recomputation when the passphrase changes

Report & Encryption

  • Plaintext report (.txt) — complete seed report with all entropy sources, derivation steps, extended keys, addresses, and reproduction instructions
  • Encrypted report (.enc) — AES-256-GCM authenticated encryption with:
    • PBKDF2-HMAC-SHA-256 key derivation (600,000 iterations)
    • Random 16-byte salt + 12-byte IV per file
    • Binary format: AMLT header (4 bytes) + version (1) + salt (16) + IV (12) + ciphertext
    • Password strength meter with minimum 8-character enforcement
  • Built-in decryptor — click the 🔓 icon in the header to decrypt any .enc file without external tools

Security & Privacy

  • Zero-Telemetry Architecture — No analytics, no CDN imports, and no data ever leaves your machine.
  • Connectivity Awareness — The tool uses the browser's native navigator.onLine status to warn you if the file is being opened in an online environment; it does not "phone home" or send requests to any external server.
  • Single-File Portability — Every dependency (secp256k1, BIP-39 wordlist, Bech32/Bech32m encoder) is embedded inline.
  • Memory wipe — one-click button zeroes seed data, keys, and cached values in the browser tab.
  • Airplane mode guide — built-in instructions for going offline on macOS, Windows, Linux, iOS, and Android.
  • Reproducible derivation — the report contains everything needed to independently verify the seed was generated correctly.
  • WebCrypto API only — encryption uses the browser's native crypto.subtle, not a JS polyfill.

UI

  • Dark and light themes with smooth transitions
  • Responsive layout (works on mobile)
  • Seed word masking (hide/show toggle)
  • QR code–ready Bech32m addresses (uppercase alphanumeric mode)
  • Floating back-to-top button
  • Inline SVG logo and favicon (no external assets)

Usage

  1. Download amulet_1_3.html.
  2. Disconnect from the internet (Airplane mode recommended).
  3. Open the file in a clean, extension-free browser (or Incognito/Private mode).
  4. Configure Seed: Choose between a 12 or 24-word mnemonic.
  5. Enhance Entropy (Optional): In Advanced Mode, you can mix additional physical randomness into your seed using the Chaos Grid, Dice rolls, Random keystrokes, or Playing cards (recommended).
  6. Generate: Click "Generate wallet".
  7. Secure: Write the seed phrase on paper or stamp it into steel.
  8. Export: Optionally download the plaintext .txt report or the encrypted .enc backup.
  9. Wipe: Click "Reset and wipe all data" and close the tab.

For real funds: Always generate on a freshly booted, air-gapped machine. Never photograph or screenshot the seed. Use the "tails" operating system if possible.


Verifying the Seed

Every report includes a "How to Reproduce Offline" section:

  1. Take the COMBINED INPUT string (UTF-8, byte-for-byte)
  2. Compute SHA-256 — result must match the report's hash
  3. Take the first 16 bytes (12-word) or 32 bytes (24-word) as final entropy
  4. Compute SHA-256 of that entropy — the first 4 or 8 bits are the checksum
  5. Concatenate entropy bits + checksum bits, split into 11-bit groups, look up each in the BIP-39 English wordlist

This means you never have to trust Amulet — you can verify every seed it produces with any independent SHA-256 implementation.


Encrypted Reports

The .enc file format is straightforward and can be decrypted with any language that supports AES-256-GCM and PBKDF2:

Offset  Length  Field
0       4       Magic bytes: "AMLT" (0x414D4C54)
4       1       Format version (currently 1)
5       16      PBKDF2 salt
21      12      AES-GCM IV / nonce
33      ...     Ciphertext (AES-256-GCM, includes 16-byte auth tag)

Key derivation: PBKDF2-HMAC-SHA-256(password, salt, 600000 iterations) → 256-bit AES key


Standards Implemented

Standard Description
BIP-39 Mnemonic seed phrase generation (English wordlist, SHA-256 checksum)
BIP-32 Hierarchical deterministic key derivation (HMAC-SHA512)
BIP-44 Legacy P2PKH addresses (m/44'/0'/0')
BIP-49 Nested SegWit P2SH-P2WPKH (m/49'/0'/0')
BIP-84 Native SegWit P2WPKH (m/84'/0'/0')
BIP-86 Taproot P2TR (m/86'/0'/0')
BIP-340 Schnorr signatures / x-only public keys
BIP-341 Taproot key tweaking (tagged hash)
BIP-173 Bech32 encoding
BIP-350 Bech32m encoding (Taproot)
BIP-352 Silent Payments (static reusable addresses)
BIP-47 Reusable Payment Codes v1

Cryptographic Libraries

Amulet embeds the following (all MIT-licensed) directly in the HTML:

  • noble-secp256k1 by Paul Miller — 4KB secp256k1 ECDH & signatures, RFC 6979 compliant
  • BIP-39 English wordlist — full 2048-word array
  • Bech32 / Bech32m encoder — constants 1 (Bech32) and 0x2bc830a3 (Bech32m)
  • All other cryptography uses the browser's native WebCrypto API (crypto.subtle)

License

MIT — see the license header in amulet_1_3.html.

Copyright (c) 2025–2026 AVB_21


Disclaimer

This software is provided as-is. The authors are not responsible for any loss of funds. Always verify generated seeds independently before trusting them with real Bitcoin. We recommend working with software wallets on a safe machine, offline for optional verification.

About

Amulet - An offline secure bitcoin wallet generator

Resources

License

Stars

Watchers

Forks

Packages