Pernahkah kamu bertanya-tanya, seberapa mudah seseorang bisa mencuri username dan password kamu di jaringan yang tidak aman? Jawabannya mungkin lebih mengejutkan dari yang kamu kira. Dengan tool gratis bernama Wireshark dan beberapa langkah sederhana, siapapun bisa menangkap data login yang dikirim melalui HTTP dalam hitungan detik.

Artikel ini bukan tentang cara meretas orang lain. Ini adalah panduan edukasi untuk membantu kamu memahami sendiri mengapa HTTPS bukan sekadar fitur opsional — melainkan sebuah keharusan.

Kita akan membangun server HTTP lokal dari nol, menangkap paket data dengan Wireshark, dan melihat dengan mata kepala sendiri bagaimana data login terekspos di jaringan

Apa itu Wireshark?

Wireshark adalah network packet analyzer open-source yang digunakan oleh network engineer, security researcher, dan administrator jaringan di seluruh dunia. Fungsinya sederhana: menangkap dan menganalisis semua data yang lalu-lalang di jaringan.

Bayangkan Wireshark seperti "kaca pembesar untuk jaringan" — setiap paket data yang melintas bisa kamu buka, periksa isinya, dan analisis secara detail.

Wireshark bisa digunakan untuk:

  • Troubleshooting masalah jaringan
  • Analisis protokol jaringan
  • Edukasi keamanan siber
  • Membuktikan bahaya HTTP plain text ← yang akan kita lakukan hari ini

Download Wireshark:

Perbedaan HTTP vs HTTPS yang Wajib Kita Pahami

Sebelum masuk ke lab, kita perlu memahami perbedaan fundamental antara dua protokol ini:

HTTP (HyperText Transfer Protocol)

HTTP mengirimkan data dalam bentuk plain text — artinya siapapun yang bisa mengintersep koneksimu akan bisa membaca semua yang kamu kirim: username, password, bahkan nomor kartu kredit.

HTTPS (HTTP Secure)

HTTPS mengenkripsi semua data menggunakan TLS/SSL sebelum dikirimkan. Bahkan jika seseorang berhasil menangkap paketnya, yang mereka lihat hanya data acak yang tidak bisa dibaca.

Analogi: HTTP seperti mengirim surat tanpa amplop semua orang bisa membaca isinya. HTTPS seperti surat yang dimasukkan ke brankas yang hanya penerima bisa buka.

Menyiapkan Lab: Server HTTP Lokal

Untuk eksperimen ini, kita membutuhkan dua file: halaman login HTML dan server Python sederhana. Tidak perlu install framework apapun — Python sudah cukup.

Yang Kita Butuhkan

  • Python 3 (biasanya sudah terinstall di Linux/Mac)
  • Wireshark
  • Browser (Chrome / Firefox)
  • Dua file: login.html dan server.py

Struktur folder:

Berikut Folder github yang bisa kamu clone https://github.com/Ahmatsembiring/Server-HTTP-Login/tree/main

wireshark-lab/
    ├── login.html    ← Halaman login HTML
    └── server.py     ← Server HTTP Python

File 1: login.html

Buat halaman login sederhana yang mengirim data via HTTP POST. Ini yang akan kita tangkap di Wireshark:

<!DOCTYPE html>
<html lang="id">
<head>
  <meta charset="UTF-8">
  <title>Login - HTTP Demo</title>
</head>
<body>
  <h2>Login Portal (HTTP)</h2>
  <!-- ACTION mengarah ke server Python kita -->
  <form method="POST" action="http://localhost:8080/login">
    <input type="text"     name="username" placeholder="Username"><br>
    <input type="password" name="password" placeholder="Password"><br>
    <button type="submit">Login</button>
  </form>
</body>
</html>

File 2: server.py

Server Python ini menerima request HTTP POST dan mencetak data yang diterima ke terminal — persis seperti yang akan tertangkap Wireshark:

from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import parse_qs, unquote_plus

class LoginHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        # Sajikan halaman login.html
        with open('login.html', 'rb') as f:
            self.send_response(200)
            self.send_header('Content-Type', 'text/html')
            self.end_headers()
            self.wfile.write(f.read())

    def do_POST(self):
        length = int(self.headers.get('Content-Length', 0))
        body   = self.rfile.read(length).decode('utf-8')
        params = parse_qs(body)

        username = unquote_plus(params.get('username', [''])[0])
        password = unquote_plus(params.get('password', [''])[0])

        # DATA INI TERLIHAT DI WIRESHARK!
        print(f'Username: {username}')
        print(f'Password: {password}')

server = HTTPServer(('0.0.0.0', 8080), LoginHandler)
print('Server berjalan di http://localhost:8080')
server.serve_forever()

Menjalankan Lab Step by Step

Step 1 — Jalankan Server

Buka terminal, masuk ke folder lab kamu, lalu jalankan:

cd wireshark-lab

python3 server.py

# Output:

# Server berjalan di http://localhost:8080

tep 2 — Setup Wireshark

Buka Wireshark dan lakukan konfigurasi berikut:

  1. Pilih interface: Loopback: lo (untuk traffic lokal)
  2. Isi filter di kolom atas: http.request.method == "POST"
  3. Klik tombol Start Capture (ikon sirip hiu biru)

Catatan: Jika interface Loopback tidak muncul, coba jalankan Wireshark dengan sudo (Linux) atau sebagai Administrator (Windows).

Step 3 — Login di Browser

# Buka browser, akses:

None
Localhost lab yang telah dibuat

http://localhost:8080

Isi form login dengan username dan password apapun, lalu klik Login.

Step 4 — Analisis di Wireshark

Kembali ke Wireshark. Kamu akan melihat paket HTTP POST muncul. Klik paket tersebut, lalu expand bagian HTML Form URL Encoded di panel bawah.

None
paket HTTP POST muncul di Wireshark

Membaca Paket di Wireshark

Saat kamu mengklik paket POST di Wireshark, kamu akan melihat struktur seperti ini di panel tengah:

None

Perhatikan baris terakhir — username dan password terbaca jelas tanpa enkripsi apapun. Inilah yang terjadi di setiap website yang masih menggunakan HTTP.

Mengapa HTTPS Menyelesaikan Masalah Ini?

Saat website menggunakan HTTPS, data yang sama akan terlihat seperti ini di Wireshark:

Transport Layer Security
  TLSv1.3 Record Layer: Application Data Protocol
    Encrypted Application Data: 8f3a2c1d9b... (tidak terbaca)

Tidak ada username. Tidak ada password. Hanya data terenkripsi yang tidak berguna bagi siapapun yang mencoba mengintersep.

HTTPS memberikan tiga jaminan keamanan:

  • Confidentiality — Data dienkripsi, tidak bisa dibaca pihak ketiga
  • Integrity — Data tidak bisa dimodifikasi di tengah perjalanan
  • Authentication — Kamu berkomunikasi dengan server yang benar, bukan imposter

KESIMPULAN

Eksperimen sederhana ini membuktikan satu hal dengan jelas: HTTP tidak aman untuk mengirimkan data sensitif. Bukan teori, bukan asumsi — kamu bisa melihatnya sendiri dengan mata kepala sendiri.

Sebagai developer, pastikan setiap project yang kamu buat menggunakan HTTPS. Sebagai pengguna internet, biasakan mengecek ikon gembok sebelum mengisi form apapun. Dan sebagai learner di bidang networking dan cybersecurity, Wireshark adalah teman terbaik untuk memahami apa yang sebenarnya terjadi di balik layar.

Selamat bereksperimen, dan ingat — gunakan ilmu ini untuk membangun sistem yang lebih aman, bukan sebaliknya