Filer: Download challenge files

Writeup: WiFi Heist

Indledende Observationer

Jeg downloadede zip-filen, som indeholdt en Python-fil (wifi_heist.py).
Scriptet beskrev tydeligt, at WiFi-passwordet var blevet “scrambled” i tre trin, og at jeg skulle reverse processen i omvendt rækkefølge.

Flag-formatet var angivet som:

1
DDC{...}

Recon / Kortlægning

Jeg gennemgik funktionen:

1
def it_guy_scramble(password):

Den udførte tre transformationer:

Step 1 – Caesar Shift (+3)

1
shifted.append(chr(ord(char) + 3))

Hvert tegn blev forskudt 3 pladser frem i ASCII.


Step 2 – Reverse

1
backwards = shifted[::-1]

Hele listen blev vendt om.


Step 3 – XOR med 42

1
mixed.append(ord(char) ^ 42)

Hvert tegn blev XOR’et med tallet 42.

Den returnerede værdi var en liste af integers.

Den givne scrambled liste var:

1
2
3
4
5
scrambled_password = [
170, 28, 77, 25, 76, 72, 28, 65, 93, 72,
77, 28, 68, 76, 29, 95, 76, 72, 82, 25,
86, 84, 108, 109, 109
]

Analyse

Sårbarheden her er blot en reversibel transformationskæde.

Vigtigt at bemærke:

  • XOR er sin egen inverse -> a ^ b ^ b = a

  • Reverse kan blot laves igen

  • Caesar shift +3 kan reverseres med -3

Hintet sagde eksplicit:

Undo step 3 first, then step 2, then step 1.


Angrebet

Jeg skrev et solve-script, der udførte følgende:

  1. XOR 42 igen

  2. Reverse listen

  3. Shift -3

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from wifi_heist import scrambled_password

magic_number = 42

# Undo step 3 (XOR)
step3_undone = [n ^ magic_number for n in scrambled_password]

# Convert to characters
chars = [chr(n) for n in step3_undone]

# Undo step 2 (reverse)
chars = chars[::-1]

# Undo step 1 (shift -3)
flag = ''.join(chr(ord(c) - 3) for c in chars)

print(flag)

Flaget

Scriptet returnerede:

1
DDC{y0u_cr4ck3d_th3_c0d3}

Jeg verificerede flaget ved at bruge den medfølgende check_flag() funktion, som bekræftede korrekt løsning.


Konklusion

Challenge’en var en klassisk reversering af en simpel cipher-pipeline:

  • Caesar shift

  • Reverse

  • XOR

Den krævede grundlæggende forståelse af:

  • ASCII manipulation

  • XOR-egenskaber

  • Inverse operationer

Flaget var:

1
DDC{y0u_cr4ck3d_th3_c0d3}