XOR operacija i primena u CTF zadacima
1️⃣ Šta je XOR?
XOR (Exclusive OR, ekskluzivno ILI) je bitovska (bitwise) logička operacija koja poredi dva bita:
- rezultat je 1 ako su bitovi različiti
- rezultat je 0 ako su bitovi isti
Tablica istinitosti
| A | B | A ⊕ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Primer XOR operacije po bitovima
0101
⊕ 0011
----
0110
Objašnjenje po bitovima:
- 0 ⊕ 0 = 0
- 1 ⊕ 0 = 1
- 0 ⊕ 1 = 1
- 1 ⊕ 1 = 0
Rezultat je 0110.
💡 Ključno svojstvo XOR-a (simetričnost)
XOR ima veoma važno svojstvo koje se stalno koristi u kriptografiji i CTF zadacima:
original ⊕ ključ = šifra
šifra ⊕ ključ = original
Drugim rečima:
- isti ključ se koristi i za šifrovanje i za dešifrovanje
- XOR operacija je reverzibilna
Zbog toga je XOR idealan za jednostavne kriptografske zadatke.
2️⃣ Zašto se XOR često koristi u CTF zadacima
XOR je izuzetno popularan u CTF-ovima zbog sledećih razloga:
- ✔ jednostavan je za razumevanje i implementaciju
- ✔ veoma brz (radi na nivou bitova)
- ✔ često se koristi za skrivanje stringova, flagova ili fajlova
-
✔ može se koristiti sa:
-
jednim bajtom kao ključem
- ponavljajućim ključem (repeating-key XOR)
- ✔ odličan je za početničke i srednje teške kripto zadatke
Mnogi zadaci u CTF-u se svode na pitanje:
„Čime je ovo XOR-ovano i kako da vratim original?“
3️⃣ Praktičan primer XOR šifrovanja
Ulazni podaci
- Tekst:
ZASTAVA - Ključ:
0x20
Korak 1: Pretvaranje karaktera u heksadecimalne vrednosti
| Karakter | ASCII (hex) |
|---|---|
| Z | 0x5a |
| A | 0x41 |
| S | 0x53 |
| T | 0x54 |
| A | 0x41 |
| V | 0x56 |
| A | 0x41 |
Korak 2: XOR sa ključem 0x20
| Operacija | Rezultat | Karakter |
|---|---|---|
| 0x5a ⊕ 0x20 | 0x7a | z |
| 0x41 ⊕ 0x20 | 0x61 | a |
| 0x53 ⊕ 0x20 | 0x73 | s |
| 0x54 ⊕ 0x20 | 0x74 | t |
| 0x41 ⊕ 0x20 | 0x61 | a |
| 0x56 ⊕ 0x20 | 0x76 | v |
| 0x41 ⊕ 0x20 | 0x61 | a |
Rezultat
zastava
Vidimo da je originalni tekst ZASTAVA XOR-ovan u zastava.
4️⃣ Mini CTF zadatak 🧩
Zadatak
Dat je string koji je XOR-ovan jednim bajtom ključa.
- Ključ:
0x1C - Šifrovani podaci (heksadecimalno):
4f 59 5f 67 6e 7d 66 69 71 79 71 43 44 53 4e 3d 61
Tvoj cilj
Dešifruj podatke i otkrij originalni tekst.
Hint
Koristi formulu:
dešifrovano = šifra ⊕ ključ
Probaj da XOR-uješ svaki bajt sa 0x1C i pretvoriš rezultat u ASCII karakter.
📝 Provera Znanja
Unesite svoj odgovor ispod da biste proverili da li ste razumeli lekciju: