[ 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
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.pytiap 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."