npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

enkripsi-file

v1.2.0

Published

CLI enkripsi & dekripsi file massal — AES-256-CBC/GCM + Obfuscation multi-bahasa (JS, Python, PHP, C/C++, Java)

Readme

🔐 FileCrypt — Bulk File Encryption & Code Obfuscation CLI

 █████╗ ██╗      ██████╗  ██╗   ██╗
██╔══██╗██║     ██╔═══██╗╚██╗ ██╔╝
███████║██║     ██║   ██║ ╚████╔╝ 
██╔══██║██║     ██║   ██║  ╚██╔╝  
██║  ██║███████╗╚██████╔╝   ██║   
╚═╝  ╚═╝╚══════╝ ╚═════╝    ╚═╝   
        by ALDY • FileCrypt v1.2.0

CLI 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

| 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 install

Install 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.js

Tampilan 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
  ────────────────────────────────────────────────────────
  🚪  Keluar

CLI 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-kamu

Panduan 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-kamu

Panduan 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-bot

Folder 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 failed

File 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-kamu

Panduan 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-bot

Langkah 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 Space untuk centang/hapus centang
  • Tekan A untuk pilih semua / batal semua
  • Tekan Enter untuk 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/loopswitch-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 countint _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