enkripsi-file
v1.2.0
Published
CLI enkripsi & dekripsi file massal — AES-256-CBC/GCM + Obfuscation multi-bahasa (JS, Python, PHP, C/C++, Java)
Maintainers
Readme
🔐 FileCrypt — Bulk File Encryption & Code Obfuscation CLI
█████╗ ██╗ ██████╗ ██╗ ██╗
██╔══██╗██║ ██╔═══██╗╚██╗ ██╔╝
███████║██║ ██║ ██║ ╚████╔╝
██╔══██║██║ ██║ ██║ ╚██╔╝
██║ ██║███████╗╚██████╔╝ ██║
╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝
by ALDY • FileCrypt v1.2.0CLI profesional untuk enkripsi file massal (AES-256) dan obfuscation kode multi-bahasa — dirancang untuk melindungi aset digital kamu dari pencurian dan reverse engineering.
📋 Daftar Isi
- Fitur
- Persyaratan
- Instalasi
- Cara Pakai
- Panduan Menu Enkripsi
- Panduan Menu Dekripsi
- Panduan Menu Obfuscation
- Penjelasan Teknis Enkripsi
- Penjelasan Teknis Obfuscation
- Struktur File Enkripsi
- FAQ
✨ Fitur
| Fitur | Keterangan |
|---|---|
| 🔒 Enkripsi AES-256-CBC | Mode standar, cepat, cocok untuk penggunaan sehari-hari |
| 🔴 Enkripsi AES-256-GCM | Mode militer, authenticated encryption, anti-manipulasi |
| 🔓 Dekripsi Auto-Detect | Otomatis mendeteksi mode enkripsi dari magic bytes |
| 🛡️ Obfuscation JavaScript | 10 lapisan perlindungan via javascript-obfuscator |
| 🐍 Obfuscation Python | Rename + encode string/angka + anti-debug + exec wrap |
| 🐘 Obfuscation PHP | Double base64 + eval wrapper + anti-debug Xdebug |
| ⚙️ Obfuscation C/C++ | Rename + opaque predicate + dead code + macro injection |
| ☕ Obfuscation Java | Rename + string encoding + opaque predicate + dead methods |
| 📦 Proses Massal | Satu perintah untuk seluruh isi folder |
| 🎨 UI Berwarna | Tampilan terminal dengan box, spinner, dan progress |
| ✅ Ukuran hingga 1 GB | Stream-based, aman untuk file besar |
🔧 Persyaratan
- Node.js >= 16.0.0
- npm >= 7.0.0
Cek versi Node.js kamu:
node --version📦 Instalasi
# Masuk ke folder project
cd enkripsi-file
# Install semua dependency
npm installInstall Global (opsional)
npm install -g .
# Setelah itu bisa dipakai di mana saja
enkripsi-file🚀 Cara Pakai
Menu Interaktif
Jalankan tanpa argumen untuk masuk ke menu interaktif:
node index.jsTampilan menu utama:
╔══════════════════════════════════════════════════════════════╗
║ ALDY — FileCrypt v1.2.0 ║
╠══════════════════════════════════════════════════════════════╣
║ ▸ FileCrypt — Bulk File Encryption CLI ║
║ ▸ AES-256-CBC (Easy) · AES-256-GCM (Hard/Military) ║
║ ▸ Obfuscation: JS · Python · PHP · C/C++ · Java ║
╚══════════════════════════════════════════════════════════════╝
? Pilih aksi:
❯ 🔒 ENKRIPSI ─ Enkripsi semua file di dalam folder
🔓 DEKRIPSI ─ Dekripsi semua file .enc di dalam folder
────────────────────────────────────────────────────────
🛡️ OBFUSCATE ─ Lindungi kode dari reverse engineering
────────────────────────────────────────────────────────
🚪 KeluarCLI Langsung (tanpa menu)
# Enkripsi
node index.js encrypt <folder> [--mode easy|hard]
# Dekripsi
node index.js decrypt <folder>
# Obfuscation
node index.js obfuscate <folder> [--level max|medium] [--lang js,py,php,c,java]📖 Panduan Menu — 🔒 Enkripsi
Cara masuk menu
Pilih ENKRIPSI dari menu utama, atau jalankan:
node index.js encrypt ./folder-kamuPanduan otomatis di terminal
Setelah memilih ENKRIPSI, panduan berikut langsung tampil:
╔══════════════════════════════════════════════════════════════╗
║ 📖 PANDUAN — ENKRIPSI FILE ║
╠══════════════════════════════════════════════════════════════╣
║ Langkah 1 Masukkan path folder yang berisi file ║
║ Contoh: ./folder-bot atau /home/user/dokumen ║
║ Langkah 2 Pilih mode enkripsi: ║
║ Easy (AES-256-CBC) — cepat, untuk file umum ║
║ Hard (AES-256-GCM) — militer, anti-manipulasi ║
║ Langkah 3 Masukkan password (min. 8 karakter) ║
║ Password tidak ditampilkan saat diketik ║
║ Langkah 4 Konfirmasi → proses enkripsi dimulai ║
╠══════════════════════════════════════════════════════════════╣
║ ⚠ File asli tidak dihapus — output: namafile.enc ║
║ ⚠ Jangan lupa password! Tidak ada cara recovery ║
╚══════════════════════════════════════════════════════════════╝Langkah 1 — Masukkan path folder
? Path folder target: ./folder-bot- Bisa pakai path relatif:
./folder-bot,../project - Bisa pakai path absolut:
/home/user/bot,C:\Users\ALDY\bot - Jika folder tidak ditemukan → sistem minta input ulang otomatis
Langkah 2 — Pilih mode enkripsi
? Mode enkripsi:
❯ 🟢 EASY ─ AES-256-CBC + PBKDF2-SHA512 (Cepat, cocok file umum)
🔴 HARD ─ AES-256-GCM + scrypt (Militer, ada auth tag)| | Easy | Hard | |---|---|---| | Algoritma | AES-256-CBC | AES-256-GCM | | KDF | PBKDF2-SHA512 | scrypt | | Kecepatan | ⚡ Sangat cepat | 🐢 1–3 detik/file | | Anti-tamper | ❌ | ✅ Auth Tag | | Cocok untuk | File umum, backup | Data sangat sensitif |
💡 Jika ragu, pilih Easy untuk file sehari-hari dan Hard untuk kode sumber atau data penting.
Langkah 3 — Masukkan password
? Password enkripsi: ****************- Minimal 8 karakter
- Gunakan kombinasi huruf besar, kecil, angka, dan simbol
- Password tidak bisa dipulihkan jika lupa — simpan di tempat aman
- Password tidak tampil di layar saat diketik (normal)
Contoh password kuat: M3ng@enkripsi!2024
Langkah 4 — Konfirmasi & proses
╔══════════════════════════════════════════════════╗
║ 📋 Konfigurasi Enkripsi ║
╠══════════════════════════════════════════════════╣
║ Folder : /home/user/folder-bot ║
║ Mode : 🔴 HARD (AES-256-GCM) ║
║ File : 12 file ditemukan ║
╚══════════════════════════════════════════════════╝
? ⚡ Enkripsi semua file sekarang? (y/N)Tekan y lalu Enter untuk mulai. Proses berjalan:
🔴 ▸ Hard bot.js ✔ OK → bot.js.enc
🔴 ▸ Hard config.json ✔ OK → config.json.enc
🔴 ▸ Hard handler.js ✔ OK → handler.js.enc
🔴 ▸ Hard database.js ✔ OK → database.js.enc
...
╔══════════════════════════════════════════════════╗
║ ✔ 12 file berhasil dienkripsi ║
║ 0 file dilewati · 0 gagal ║
╚══════════════════════════════════════════════════╝File asli tetap ada di folder. File .enc adalah hasil enkripsi yang aman disimpan atau dibagikan.
📖 Panduan Menu — 🔓 Dekripsi
Cara masuk menu
Pilih DEKRIPSI dari menu utama, atau jalankan:
node index.js decrypt ./folder-kamuPanduan otomatis di terminal
╔══════════════════════════════════════════════════════════════╗
║ 📖 PANDUAN — DEKRIPSI FILE ║
╠══════════════════════════════════════════════════════════════╣
║ Langkah 1 Masukkan path folder berisi file .enc ║
║ Contoh: ./folder-bot atau /home/user/dokumen ║
║ Langkah 2 Masukkan password yang dipakai saat enkripsi ║
║ Mode (Easy/Hard) dideteksi otomatis dari file ║
║ Langkah 3 Konfirmasi → proses dekripsi dimulai ║
╠══════════════════════════════════════════════════════════════╣
║ ✔ Mode enkripsi terdeteksi otomatis — tidak perlu pilih ║
║ ✖ Jika password salah → file tidak akan terbuka ║
║ ✖ Mode Hard: file dirusak → dekripsi otomatis ditolak ║
╚══════════════════════════════════════════════════════════════╝Langkah 1 — Masukkan path folder
? Path folder target: ./folder-botFolder harus berisi file .enc hasil enkripsi sebelumnya.
Langkah 2 — Masukkan password
? Password dekripsi: ****************Masukkan password yang sama persis saat enkripsi dilakukan.
Mode enkripsi (Easy/Hard) dideteksi otomatis dari 6 byte pertama file — kamu tidak perlu memilih secara manual.
Langkah 3 — Konfirmasi & proses
╔══════════════════════════════════════════════════╗
║ 📋 Konfigurasi Dekripsi ║
╠══════════════════════════════════════════════════╣
║ Folder : /home/user/folder-bot ║
║ File : 12 file .enc ditemukan ║
╚══════════════════════════════════════════════════╝
? ⚡ Dekripsi semua file sekarang? (y/N)
🔵 ▸ Dekripsi bot.js.enc ✔ OK → bot.js
🔵 ▸ Dekripsi config.json.enc ✔ OK → config.json
🔵 ▸ Dekripsi handler.js.enc ✔ OK → handler.js
...
╔══════════════════════════════════════════════════╗
║ ✔ 12 file berhasil didekripsi ║
╚══════════════════════════════════════════════════╝Jika password salah
✖ Gagal dekripsi: bot.js.enc
↳ Error: bad decrypt / authentication failedFile tidak akan terbuka dan tidak akan rusak. Coba lagi dengan password yang benar.
📖 Panduan Menu — 🛡️ Obfuscation
Cara masuk menu
Pilih OBFUSCATE dari menu utama, atau jalankan:
node index.js obfuscate ./folder-kamuPanduan otomatis di terminal
╔══════════════════════════════════════════════════════════════╗
║ 📖 PANDUAN — OBFUSCATION KODE ║
╠══════════════════════════════════════════════════════════════╣
║ Langkah 1 Masukkan path folder berisi file kode ║
║ Contoh: ./folder-bot atau /home/user/project ║
║ Langkah 2 Pilih bahasa yang ingin diobfuscate ║
║ Bisa pilih lebih dari satu sekaligus (checkbox) ║
║ Langkah 3 Pilih level (khusus JavaScript): ║
║ MAX — 10 lapisan, sangat kuat ║
║ MEDIUM — 7 lapisan, lebih cepat ║
║ Langkah 4 Konfirmasi → proses obfuscation dimulai ║
╠══════════════════════════════════════════════════════════════╣
║ ✔ File asli tidak diubah — output: namafile.obf.EXT ║
║ ✔ Kode hasil obfuscation tetap bisa dijalankan ║
║ ⚠ Obfuscation bukan enkripsi — kode masih bisa di-reverse ║
║ tapi sangat sulit dan memakan waktu lama ║
╚══════════════════════════════════════════════════════════════╝Langkah 1 — Masukkan path folder
? Path folder target: ./folder-botLangkah 2 — Pilih bahasa (checkbox)
? Pilih bahasa yang ingin diobfuscate: (Tekan Space untuk pilih, Enter untuk lanjut)
❯ ◉ JavaScript .js
◉ Python .py
◉ PHP .php
◉ C / C++ .c/.cpp
◉ Java .java- Tekan
Spaceuntuk centang/hapus centang - Tekan
Auntuk pilih semua / batal semua - Tekan
Enteruntuk lanjut - Minimal harus memilih 1 bahasa
| Bahasa | Ekstensi yang di-scan | Output |
|---|---|---|
| JavaScript | .js (kecuali .obf.js) | .obf.js |
| Python | .py (kecuali .obf.py) | .obf.py |
| PHP | .php (kecuali .obf.php) | .obf.php |
| C / C++ | .c, .cpp | .obf.c, .obf.cpp |
| Java | .java (kecuali .obf.java) | .obf.java |
Langkah 3 — Pilih level (JavaScript)
? Level obfuscation JS:
❯ 🔴 MAX ─ ControlFlow + DeadCode + StringRC4 + SelfDefend + DebugProtect (Sangat Kuat)
🟡 MEDIUM ─ ControlFlow + DeadCode + StringRC4 (Lebih Cepat)| | MAX | MEDIUM | |---|---|---| | Control Flow Flattening | 100% | 75% | | Dead Code Injection | 40% | 20% | | String Encoding RC4 | 100% | 75% | | Self Defending | ✅ | ❌ | | Debug Protection | ✅ | ❌ | | Kecepatan proses | Lebih lama | Lebih cepat |
Level ini hanya berpengaruh pada JavaScript. Python, PHP, C/C++, dan Java selalu menggunakan mode maksimal.
Langkah 4 — Konfirmasi & proses
╔══════════════════════════════════════════════════════════════╗
║ 📋 Konfigurasi Obfuscation ║
╠══════════════════════════════════════════════════════════════╣
║ Folder : /home/user/folder-bot ║
║ Bahasa : JavaScript · Python · PHP · C/C++ · Java ║
║ Level JS: 🛡️ MAX ║
╠══════════════════════════════════════════════════════════════╣
║ ⚠ Output: namafile.obf.EXT (file asli tidak diubah) ║
╚══════════════════════════════════════════════════════════════╝
? ⚡ Obfuscate semua file sekarang? (y/N)
🛡️ ▸ JavaScript bot.js ✔ OK → bot.js.obf.js
🛡️ ▸ Python scraper.py ✔ OK → scraper.obf.py
🛡️ ▸ PHP api.php ✔ OK → api.obf.php
🛡️ ▸ C / C++ engine.c ✔ OK → engine.obf.c
🛡️ ▸ Java Main.java ✔ OK → Main.obf.java
╔══════════════════════════════════════════════════╗
║ ✔ 15 file berhasil diobfuscate ║
╚══════════════════════════════════════════════════╝🔬 Penjelasan Teknis Enkripsi
Mode Easy — AES-256-CBC
Password + Salt (32 byte acak)
↓ PBKDF2-SHA512 (100.000 iterasi)
AES-256 Key (32 byte)
↓ AES-256-CBC + IV (16 byte acak)
File terenkripsi (.enc)Mode Hard — AES-256-GCM
Password + Salt (32 byte acak)
↓ scrypt (N=65536, r=8, p=2)
AES-256 Key (32 byte)
↓ AES-256-GCM + IV (12 byte acak)
File terenkripsi (.enc) + Auth Tag (16 byte)scrypt membutuhkan ~256 MB RAM dan 1–3 detik per file — ini disengaja untuk mencegah brute-force.
🔬 Penjelasan Teknis Obfuscation
JavaScript — 10 Lapisan
| # | Lapisan | Efek |
|---|---|---|
| 1 | Control Flow Flattening | if/loop → switch-case besar yang sulit diikuti |
| 2 | Dead Code Injection (40%) | 40% kode palsu disisipkan |
| 3 | String Array + RC4 | Semua string dienkripsi RC4 di array tersembunyi |
| 4 | String Array Rotate & Shuffle | Array diputar & diacak tiap runtime |
| 5 | Numbers to Expressions | 42 → (0x2a * 0x1) |
| 6 | Self Defending | Kode merusak diri jika di-beautify |
| 7 | Debug Protection | Loop debugger, DevTools tidak bisa inspect |
| 8 | Split Strings | String panjang dipecah jadi potongan kecil |
| 9 | Transform Object Keys | Key object diacak |
| 10 | Hex Identifier Names | Semua variabel → _0x1a2b3c |
Python — 6 Lapisan
| # | Lapisan | Contoh |
|---|---|---|
| 1 | Rename identifier | data → _a3f9bc12 |
| 2 | Encode string | "hello" → "\x68\x65\x6c\x6c\x6f" |
| 3 | Encode angka | 42 → (58^26) |
| 4 | Dead code | 5 fungsi palsu disisipkan |
| 5 | Anti-debug | Deteksi sys.gettrace() → SystemExit |
| 6 | Exec wrap | Kode → exec(compile(base64_decode(...))) |
PHP — 5 Lapisan
| # | Lapisan | Keterangan |
|---|---|---|
| 1 | Base64 layer 1 | Seluruh source di-encode base64 |
| 2 | Base64 layer 2 | Hasil layer 1 di-encode lagi |
| 3 | Eval wrapper | eval(base64_decode(base64_decode(...))) |
| 4 | Anti-debug | Deteksi Xdebug → die() |
| 5 | Dead functions | Fungsi palsu dengan nama hex |
C / C++ — 5 Lapisan
| # | Lapisan | Keterangan |
|---|---|---|
| 1 | Rename fungsi | Nama fungsi user → _f3a9bc |
| 2 | Encode string | "hello" → ((char[]){0x68,0x65,...,0x00}) |
| 3 | Opaque predicate | Makro kondisi sulit dianalisis secara statis |
| 4 | Dead functions | __attribute__((unused)) functions |
| 5 | Macro injection | _OPQ1, _OPQ2, _DEAD macros |
Java — 5 Lapisan
| # | Lapisan | Contoh |
|---|---|---|
| 1 | Rename variabel | int count → int _v3a9f |
| 2 | Encode string | "hi" → Character.toString((char)0x68)+... |
| 3 | Encode angka | 100 → (137^37) |
| 4 | Dead methods | @SuppressWarnings("unused") private static int _m3f(...) |
| 5 | Opaque predicate | Math.random() check di awal setiap method |
📁 Struktur File Enkripsi
Easy Mode (FENC01):
Offset Size Isi
------ ---- ---
0 6 Magic bytes: "FENC01"
6 32 Salt (random, untuk KDF)
38 16 IV (random, untuk AES-CBC)
54 N Ciphertext (isi file terenkripsi)Hard Mode (FENC02):
Offset Size Isi
------ ---- ---
0 6 Magic bytes: "FENC02"
6 32 Salt (random, untuk KDF)
38 12 IV (random, untuk AES-GCM)
50 16 Auth Tag (verifikasi integritas)
66 N Ciphertext (isi file terenkripsi)❓ FAQ
Q: Apakah file asli dihapus setelah enkripsi?
A: Tidak. File asli tetap ada. Hapus manual setelah memastikan enkripsi berhasil dan password tersimpan aman.
Q: Apa yang terjadi jika password salah saat dekripsi?
A: Mode Easy → error bad decrypt. Mode Hard → error authentication failed. Tidak ada file output yang dibuat.
Q: Apakah bisa mengenkripsi semua jenis file?
A: Ya. Enkripsi AES-256 bekerja di level byte — bisa enkripsi .js, .py, .jpg, .zip, .mp4, dan sebagainya.
Q: Apakah file .obf.js bisa dijalankan langsung?
A: Ya. Hasil obfuscation tetap valid secara sintaks dan bisa dijalankan dengan node namafile.obf.js.
Q: Kenapa mode Hard lambat?
A: scrypt dirancang lambat untuk mencegah brute-force. Dengan N=65536, tiap percobaan butuh ~1–3 detik dan ~256 MB RAM.
Q: Berapa batas ukuran file?
A: Maksimal 1 GB per file. FileCrypt menggunakan stream-based processing.
Q: Apakah obfuscation bisa di-reverse?
A: Secara teoritis bisa, tapi kombinasi 10 lapisan membuat prosesnya sangat mahal — bisa memakan waktu berhari-hari bahkan bagi expert.
Q: Apakah bisa obfuscate satu file saja (bukan folder)?
A: Saat ini hanya mendukung folder. Letakkan file tunggal ke dalam folder kosong, lalu obfuscate folder tersebut.
📄 Lisensi
MIT License — © ALDY
