Network & Cybersecurity Wireless Engineering Firmware Deep-Dive

Spesifikasi Teknis & Panduan Runtut Pembuatan Captive Portal "Wi-Fi Horor" Berbasis ESP8266

Penulis: Tim Kusuma Web Dev Diterbitkan: 16 Juni 2026 Waktu: 01:13 PM Level: Menengah

Cyber Security Wireless

Bab I: Teori Pembajakan DNS & Mekanisme Rogue AP

Dalam dunia rekayasa jaringan nirkabel, salah satu teknik penetrasi yang paling efisien untuk memancing interaksi pengguna secara masif adalah dengan memanfaatkan arsitektur **Captive Portal**. Protokol ini umumnya digunakan oleh penyedia Wi-Fi publik di bandara atau hotel untuk memaksa pengguna mendarat di halaman autentikasi login terlebih dahulu sebelum bisa menikmati akses internet global.

Namun, proyek kali ini membalikkan fungsionalitas tersebut untuk kebutuhan yang jauh lebih eksperimental: membangun jaringan Wi-Fi lokal tiruan (*Rogue Access Point*) bertajuk **"Wi-Fi Horor"**. Dengan mengawinkan fungsionalitas server HTTP dan server DNS lokal pada chip **NodeMCU ESP8266**, kita mampu mencegah lalu lintas data peramban dari perangkat apa pun yang terhubung, mendeteksi sistem operasi mereka secara dinamis, dan memaksa browser mereka meluncurkan visual gambar kejutan (*jumpscare*) disertai efek suara audio berformat MP3 yang tersimpan di dalam memori internal perangkat.


Bab II: Persiapan Lingkungan Pengembangan & Instalasi Library

Sebelum melangkah ke proses kompilasi kode, lingkungan kerja pada sistem operasi komputer Anda harus dikonfigurasi secara presisi agar kompatibel dengan arsitektur pustaka kernel internal ESP8266 core SDK.

1. Instalasi Driver USB-to-UART Bridge

Board pengembangan berbasis ESP8266 (seperti NodeMCU V3 Lolin atau Wemos D1 Mini) menggunakan IC pengontrol khusus untuk menerjemahkan komunikasi serial USB menjadi jalur data UART komputer. Unduh dan instal driver berikut sesuai dengan tipe IC yang terpasang pada board fisik Anda:

  • IC CH340G / CH341: Umumnya digunakan pada NodeMCU versi clone buatan Asia. Anda wajib mengunduh driver CH344/CH340 Serials dari situs resmi WCH.
  • IC CP2102 / CP2104: Biasanya terpasang pada board NodeMCU Amica versi original. Unduh driver *CP21x USB to UART Bridge VCP Drivers* dari situs resmi Silicon Labs.

2. Konfigurasi Board Manager Arduino IDE

Secara default, Arduino IDE tidak mengenali mikrokontroler berbasis arsitektur 32-bit Xtensa milik ESP8266. Ikuti langkah sinkronisasi repositori berikut:

Buka aplikasi Arduino IDE, navigasikan ke menu File -> Preferences. Pada kolom Additional Boards Manager URLs, tempelkan tautan repositori manifest JSON resmi berikut:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Setelah itu, navigasikan ke menu Tools -> Board -> Boards Manager. Ketikkan kata kunci esp8266 pada kolom pencarian, pilih versi stabil terbaru (disarankan versi 3.1.2 atau yang lebih baru), lalu klik tombol Install.

3. Pengaturan Konfigurasi Compiler (Tools Menu Optimization)

Untuk menjamin stabilitas performa pemancaran sinyal, lakukan kustomisasi parameter kompilator di menu Tools sebelum melakukan kompilasi akhir:

  • CPU Frequency: Ubah dari 80 MHz ke 160 MHz. Overclocking aman ini melipatgandakan kecepatan pemrosesan data biner saat menyemburkan file gambar raksasa ke jaringan.
  • Flash Size: Pilih 4MB (FS:2MB OTA:~1019KB) atau menyesuaikan varian modul ESP-12F Anda untuk mengalokasikan ruang penyimpanan berkas yang luas.
  • lwIP Variant: Pilih v2 Higher Bandwidth. Opsi ini mengoptimalkan ukuran jendela TCP (*TCP Window Size*) untuk mempercepat transfer file multimedia byte-by-byte.

4. Bedah Eksklusif Pustaka Core (Library Inclusions)

Proyek firmware ini mengandalkan arsitektur pustaka bawaan (*built-in libraries*) yang disediakan langsung oleh tim pengembang core ESP8266. Anda **tidak perlu mengunduh library pihak ketiga** melalui Library Manager karena pustaka berikut otomatis terinstal saat Anda menambahkan dukungan board ESP8266:

#include <ESP8266WiFi.h>

Pustaka ini memuat gangguan dan driver low-level jaringan nirkabel 802.11. Berfungsi mengontrol mesin radio internal chip ESP8266 untuk melakukan pemancaran sinyal beacon, mengonfigurasi alamat MAC perangkat, memanipulasi kanal frekuensi (channel 1-14), serta mengaktifkan mode pemancar mandiri (*Soft Access Point / AP Mode*) tanpa perlu bergantung pada router internet eksternal.

#include <ESP8266WebServer.h>

Pustaka instansiasi protokol HTTP tingkat aplikasi. Library ini mengelola mekanisme antrean paket masuk pada port TCP standar web (port 80), mengurai struktur *header HTTP request*, menangani pengiriman tipe konten dokumen web (*MIME Type* seperti text/html atau image/jpeg), serta mengembalikan kode status respon server global (seperti HTTP 200 OK atau HTTP 302 Redirect).

#include <DNSServer.h>

Pustaka pengontrol sistem resolusi nama domain lokal yang beroperasi pada protokol UDP port 53. Fungsi utamanya adalah melakukan intersepsi massal terhadap seluruh paket kueri DNS *A-Record* yang dikirimkan oleh sistem operasi client, mengabaikan alamat tujuan asli (seperti google.com), lalu mengembalikan alamat IP lokal milik ESP8266 secara paksa.


Bab III: Dokumen Arsitektur Fisik & Alur Berkas Jaringan

1

Langkah Eksekusi & Diagram Koneksi Perangkat

Keunggulan utama arsitektur proyek ini adalah portabilitasnya yang sangat ekstrem. Karena seluruh lalu lintas transmisi data dikelola oleh antena radio internal SoC ESP8266, sistem tidak membutuhkan diagram pengkabelan sensor luar yang rumit.

🚀 Prosedur Langkah demi Langkah Menjalankan Sistem:

1. Kompilasi Firmware: Pasang board ESP8266 pada software Arduino IDE Anda, hubungkan NodeMCU ke komputer via kabel micro-USB, buka file program .ino, lalu klik tombol upload hingga status berubah menjadi *Done Uploading*.

2. Aktivasi Daya: Lepaskan kabel dari komputer, pasang NodeMCU ke power bank atau adaptor charger 5V sebagai suplai energi independen. Perangkat sekarang bertindak sebagai server siber berjalan.

3. Penetrasi Target: Pengguna di sekitar akan mendeteksi sinyal Wi-Fi gratis terbuka bernama "Free_WiFi_Terkunci" tanpa password. Begitu mereka mengetuk tombol sambungkan, sistem operasi HP mereka (Android/iOS) akan langsung meluncurkan jendela browser otomatis (*Captive Portal*) secara paksa yang memuat aset web horor lokal dari memori flash Anda.

2

Metodologi Konversi File Gambar & Audio ke Rentetan Data Hex

Mengapa kita menggunakan `PROGMEM` dan bukan sistem file partisi lokal seperti SPIFFS atau LittleFS? Jawabannya terletak pada efisiensi waktu eksekusi *I/O*. Membaca file dari sektor partisi LittleFS membutuhkan siklus panggilan bus SPI yang menjembatani memori flash ke core CPU, memicu latensi pemuatan gambar beberapa milidetik. Sebaliknya, array byte yang dideklarasikan dengan penanda `PROGMEM` akan langsung dipetakan ke dalam ruang alamat instruksi memori flash (*Flash Instruction Memory Space*), memungkinan CPU melakukan pembacaan instan via instruksi pointer secara paralel.

🖼️ Alur Konversi Gambar & Audio Menggunakan Web Tools Online:

1. Siapkan file gambar seram Anda (format JPG/PNG) dan file suara jeritan berdurasi pendek (format MP3 kualitas rendah, contoh: 64kbps mono agar ukuran file kecil).
2. Buka web browser di komputer, lalu akses alat bantu konverter file-ke-hex online terbaik: Notisrac FileToCArray Generator atau software desktop **Hex Editor Neo**.
3. Unggah berkas gambar/audio Anda ke situs tersebut. Setel tipe arsitektur output menjadi **Hexadecimal (C-Style Array)**.
4. Klik tombol konversi, lalu salin (*copy*) ribuan baris kode deretan angka hex berawalan 0x yang dihasilkan sistem web tersebut.

Bagian Kode Mana Saja yang Perlu Diubah di Arduino IDE?

Aset Hex hasil konversi di atas disalin untuk menimpa blok memori array lama di bagian atas skrip kodingan kamu:

// 1. Tempat menaruh data hex gambar kustom baru kamu:
const uint8_t image_data[] PROGMEM = { 
  0x47, 0x49, 0x46, 0x38, 0x39, ... // Tempel ribuan baris data hex baru di sini
};

// 2. Tempat menaruh data hex audio klip MP3 kustom baru kamu:
const uint8_t audio_data[] PROGMEM = { 
  0xFF, 0xFB, 0x50, 0xC4, 0x00, ... // Tempel ribuan baris data hex suara di sini
};
3

Bab IV: Pembedahan Komplit Fungsi Kode Berkas Firmware

Berikut adalah analisis teknis komplit baris demi baris dari seluruh fungsi-fungsi penting penyusun sistem nirkabel *Captive Portal* Wi-Fi Anda:

1. Fungsi Pengirim Struktur Inti Web ➡️ void handleRoot()
void handleRoot() {
  server.send(200, "text/html", index_html);
}

**Penjelasan Mendalam:** Fungsi ini mendengarkan ketukan request pengguna yang mendarat di alamat URL utama (`/`). Fungsi akan membalas dengan status kode HTTP `200` (artinya koneksi sukses/OK) serta menembakkan string raksasa index_html berisi arsitektur tag HTML, elemen styling CSS, dan fungsi skrip JavaScript yang bertugas menyusun visualisasi serta memicu pemutaran audio secara otomatis di browser HP target.

2. Fungsi Aliran Data Gambar Memori Flash ➡️ void handleImage()
void handleImage() {
  server.send_P(200, "image/jpeg", (const char*)image_data, sizeof(image_data));
}

**Penjelasan Mendalam:** Ketika tag `` di halaman HTML meminta file aset gambar pendukung lewat rute URL `/image.jpg`, fungsi ini akan terpanggil. Karena data gambar berukuran besar dan dikunci di dalam ROM flash agar RAM tidak jebol, kita wajib menggunakan metode khusus server.send_P() (bukan `server.send` biasa) untuk mengalirkan rentetan byte biner dari array image_data langsung ke peramban client berdasarkan total ukuran aslinya sizeof().

3. Fungsi Aliran Data Audio MP3 Memori Flash ➡️ void handleAudio()
void handleAudio() {
  server.send_P(200, "audio/mpeg", (const char*)audio_data, sizeof(audio_data));
}

**Penjelasan Mendalam:** Memiliki kemiripan arsitektur dengan fungsi handle gambar, fungsi ini merespon request pemutar musik html yang meminta berkas suara dari endpoint URL `/scream.mp3`. Data array biner bertipe data byte dialirkan secara aman dengan tipe konten khusus internet (*MIME Type*) berlabel audio/mpeg agar browser ponsel target mengenali data tersebut sebagai trek lagu audio MP3 yang siap diputar keras lewat speaker HP.

4. Fungsi Interseptor Pembajak URL & Captive Portal ➡️ void setup()
void setup() {
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();

  dnsServer.start(DNS_PORT, "*", myIP);

  server.on("/", handleRoot);
  server.on("/image.jpg", handleImage);
  server.on("/scream.mp3", handleAudio);
  server.on("/generate_204", handleRoot); 
  server.onNotFound(handleNotFound);

  server.begin();
}

**Penjelasan Mendalam:** Blok fungsi inisialisasi ini mengaktifkan mode pemancar nirkabel WIFI_AP menggunakan konfigurasi SSID pengenal Wi-Fi pilihan Anda. Kunci utama keberhasilan trik pembajakan jaringan ini terletak pada baris perintah dnsServer.start(). Penggunaan parameter tanda bintang ("*") memerintahkan mesin DNS internal ESP8266 untuk mencegat dan merutekan paksa alamat domain apa pun yang diketik oleh pengguna di HP mereka (misalnya google.com atau facebook.com) agar dialihkan paksa menuju ke alamat IP lokal gateway ESP8266 sendiri. Baris rute /generate_204 sengaja didaftarkan khusus untuk mengelabui sistem deteksi konektivitas bawaan sistem operasi smartphone Android agar langsung membuka tirai jendela peramban otomatis.

5. Fungsi Siklus Eksekusi Kontinu ➡️ void loop()
void loop() {
  dnsServer.processNextRequest();
  server.handleClient();
}

**Penjelasan Mendalam:** Fungsi super loop ini berjalan tanpa henti mengeksekusi dua perintah vital. Fungsi dnsServer.processNextRequest() memproses antrean request pembajakan rute domain dari gawai client baru yang masuk, sedangkan fungsi server.handleClient() bertugas mengelola lalu lintas pengiriman data halaman web HTML dan file biner hex gambar/audio dari server ke peramban pengunjung agar konektivitas jaringan nirkabel berjalan sinkron dan responsif setiap milidetik.


Unduh Berkas Repositori Firmware (.INO) Resmi via Google Drive

Seluruh cetak biru file kodingan firmware lengkap untuk proyek **Captive Portal Wi-Fi Horor** ini—meliputi skrip pengaturan struktur string HTML interaktif, manajemen alokasi token memori driver radio, hingga fungsi pengalihan lalu lintas mesin DNS—telah dikemas rapi ke dalam berkas berekstensi `.ino` resmi.

Anda dapat langsung mengunduh file mentahan kodingan Arduino tersebut secara aman melalui tautan folder direktori Google Drive resmi di bawah ini:


Konklusi Eksperimen Jaringan

Rekayasa sistem nirkabel berbasis Captive Portal membuktikan betapa dinamisnya pemanfaatan chip murah seperti ESP8266 dalam mensimulasikan protokol keamanan jaringan nirkabel modern. Teknik penyimpanan file media di dalam memori flash ROM terbukti ampuh memangkas beban kerja RAM, menghasilkan performa transmisi server lokal yang tangguh, responsif, dan stabil tanpa memerlukan koneksi internet ataupun hardware server luar yang mahal.

Selamat melakukan pengujian di lingkungan kerjamu! Lakukan modifikasi aset visual dan audio sekreatif mungkin, jinakkan setiap baris hambatan kompilasi kompilator Arduino IDE dengan kepala dingin, dan mari terus melahirkan karya inovasi produk rekayasa teknologi komputer masa depan!


Bagikan esai manifesto ini:
#ManifestoVibeCoding #Arduino #Technic Informatics #Iot Project #VibeCoding #Nodemcu ESP8266