mirror of
https://github.com/LeeeeT/happ-decryptor.git
synced 2026-07-18 09:23:05 +03:00
A browser-based tool that decrypts happ:// deep links (all five generations: crypt through crypt5)
http://leeeet.dev/happ-decryptor/
- JavaScript 97.7%
- CSS 1.5%
- HTML 0.7%
| .github/workflows | ||
| public | ||
| src | ||
| test | ||
| .gitignore | ||
| flake.lock | ||
| flake.nix | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| vite.config.js | ||
Happ Link Decryptor
Browser-based decryptor for supported happ:// deep links.
The app runs entirely client-side and supports all currently bundled formats:
crypt, crypt2, crypt3, crypt4, and crypt5.
Highlights
- Decryption happens locally in the browser — no server
- Legacy RSA-wrapped links (
crypt–crypt4) decrypt directly in JavaScript crypt5decrypts directly with RSA + ChaCha20-Poly1305, including both the legacy and newer salted/XOR layouts- The original native-library CPU emulator remains as an automatic fallback
- 36 bundled
crypt5marker keys + the fallback emulation assets are committed underpublic/
Development
npm install
npm run dev
npm test
npm run build
npm run preview
How it works
src/decrypt.js— top-level decode for every generation.src/crypt5.js— lightweight directcrypt5parsing, RSA key recovery, salt/XOR handling, and authenticated ChaCha20-Poly1305 decryption.src/emu/— fallback that loadsliberror-code.soonto unicorn.js (Unicorn 2.1.4, asm.js) with a mock JNI/libc host and its existing JavaScriptBigIntRSA fast path.public/data/crypt5-keys.json— PKCS#8 keys for direct decryption;public/data/keytable.json— key strings used by the native fallback.
The detailed reverse-engineering write-up is in the in-page dossier
(index.html).
Runtime Dependencies
node-forge— RSA PKCS#1 v1.5 decryption.@noble/ciphers— audited ChaCha20-Poly1305 implementation for directcrypt5decryption.
Privacy
Decryption happens locally in the browser tab. The app does not upload links or decrypted results to a server.