Lewati ke isi

[ MODUL F9 ] Python untuk Security

Fase: Fondasi · Estimasi: 45 menit (santai, sambil coba) · Prasyarat: F8 Tujuan akhir: Bisa membaca & memodifikasi skrip Python untuk decode, kirim request, olah byte, hitung hash. 📖 Glossary. 🧪 Belum ada Python? Pakai online Python (cari "online python") — tanpa instal.


1. Briefing 🎯

Komputer tak kenal lelah — biar ia yang mengulang pekerjaan membosankan. Python favorit operator karena mudah dibaca. Kamu tak perlu jadi programmer hebat — cukup bisa baca & ubah skrip. Kita pelan-pelan, satu konsep satu kotak.


2. Materi Inti 📚

2.1 Variabel (wadah data)

nama = "operator"     # string (teks)
umur = 20             # integer (angka)
aktif = True          # boolean (benar/salah)
print(nama)           # tampilkan
Output:
operator

2.2 Percabangan (if) — komputer mengambil keputusan

umur = 20
if umur >= 18:
    print("dewasa")
else:
    print("belum")
Output:
dewasa

2.3 Perulangan (for) — mengulang otomatis

for i in range(3):    # i = 0, 1, 2
    print(i)
Output:
0
1
2

2.4 Fungsi (resep yang bisa dipakai ulang)

def sapa(x):
    return "Halo, " + x
print(sapa("operator"))
Output:
Halo, operator

🔖 Checkpoint #1: kamu sudah lihat variabel, if, for, fungsi. Itu 80% yang kamu butuh. Santai — sisanya tinggal "perkakas".

2.5 String vs Bytes (PENTING di security!)

  STRING  "abc"   → teks untuk manusia
  BYTES   b"abc"  → data mentah untuk komputer (kripto/encoding pakai ini)
s = "flag"
b = s.encode()        # string → bytes
print(b)              # Output: b'flag'
print(b.decode())     # bytes → string  → Output: flag

2.6 Perkakas (library) andalan

import base64
print(base64.b64decode("ZmxhZw=="))   # Output: b'flag'

import hashlib
print(hashlib.sha256(b"data").hexdigest())  # "sidik jari" SHA-256

print(bytes.fromhex("666c6167"))       # Output: b'flag'

2.7 XOR (sering muncul di crypto) — sebaris saja

data = bytes([0x10, 0x20])
key = 0x42
hasil = bytes([x ^ key for x in data])   # XOR tiap byte dengan kunci
print(hasil)

2.8 🧪 Worked Example: kirim request web (requests)

import requests
r = requests.get("https://example.com/")
print(r.status_code)     # Output: 200
print(r.text[:50])       # cuplikan isi halaman
Pakai session + cookie (untuk yang sudah login):
s = requests.Session()
s.post("https://situs/login", data={"user":"a","pass":"b"})
print(s.get("https://situs/dash").text)

2.9 Cara menjalankan

$ python3 solve.py

💡 Simpan skrip kecil tiap menyelesaikan soal (solve.py) — jadi catatan & bisa dipakai ulang.


⚠️ Kesalahan Umum

Salah Benar
Lupa indentasi (spasi di dalam if/for) Python wajib indentasi rapi
Campur string & bytes b"..." untuk bytes; pakai .encode()/.decode()
print lupa tanda kurung Python 3: print("x")
Kira harus jago coding dulu Cukup bisa baca & modifikasi skrip

3. 🛰️ Kacamata Intelijen Siber

  • Analis hadapi data besar (log, dump, paket). Python ubah berjam-jam → detik.
  • Skrip kecil untuk decode, parsing, korelasi = roti & mentega analis.
  • Paham bytes = paham data mentah apa adanya (penting forensik & kripto).

🟪 Purple: skrip sama bisa untuk menyerang (otomasi exploit) & bertahan (otomasi analisis log).


4. Hubungan ke Write-up CTF 🔗

  • Hampir semua write-up punya solve.py (decode XOR, kirim request, simulasi VM).
  • Proksi Merah → kirim payload + parse respons; Mesin Tanpa Nama → simulasi VM.

5. Rangkuman 🧾

  • Python: variabel, if, for, fungsi — cukup bisa baca & modifikasi.
  • String vs bytes: .encode()/.decode(); kripto pakai bytes.
  • Library: base64, hashlib, bytes.fromhex, XOR sebaris, requests.
  • Simpan solve.py tiap soal.

6. Uji Pemahaman ✅

1. Beda string & bytes + cara ubah string→bytes? 2. 1 baris Python untuk decode Base64 "ZmxhZw=="? 3. Output for i in range(3)? 4. Library untuk (a) hashing, (b) request web? 5. Output 0x10 ^ 0x42? 6 (PG). Mengotomatiskan login berulang ke web: A. hashlib · B. requests · C. xxd · D. chmod

🔑 Kunci Jawaban 1. **String** teks manusia, **bytes** data mentah; ubah dengan `"teks".encode()`. 2. `base64.b64decode("ZmxhZw==")` → `b'flag'`. 3. **0, 1, 2**. 4. (a) `hashlib`, (b) `requests`. 5. `0x52` (= 82 = 'R'). 6. **B.**

7. Misi Berikutnya 🚀

Lanjut ke F10 — Git & Versioning.


LIGHTSIBER · Modul F9 · "Biar komputer yang mengulang; kamu yang berpikir."