cyberchallenge-modem/keygen/Readme.md
2020-07-19 11:59:13 +02:00

28 lines
1.2 KiB
Markdown

## Keygen
Il codice responsabile per la generazione della chiave WPA di ogni dispostivo.
Scrive il seriale in `/etc/serial`, il nome della rete in `/etc/ssid` e ila chiave WPA in `/etc/wpa`. E' poi uno script bash a inserirli nella conf di Hostapd.
Per ottenere una chiave i partecipanti hanno due opzioni:
1. Effettuare il reverse engineering dell'algoritmo e reimplementarlo di nuovo. Non essendo il codice ne' offuscato ne' particolarmente lungo, premesso che riconoscano la funzione di md5 dovrebbe essere fattibile in un tempo ragionevole.
2. Nel caso che il binario sia per un target `x86` occorre danneggiarlo (ad esempio rimuoverne gli header) in modo che non sia direttamente eseguibile. Allo stesso tempo per altre architetture, occorre introdurre qualche limitazione per cui non sia semplicemente eseguibile con `qemu-static` (ad esempio verificare gli hash di alcuni file nel filesystem, o aggiungere dipendenze a cui l'attaccante non ha accesso).
### Pseudocode
```
function gen_password(mac, serial) {
string password
seed1 = hex(md5(mac))
seed2 = hex(md5(serial))
len = 32
xorshift(seed1[0:8], seed1[8:16], seed1[16:24], seed1[24:32])
for (i = 0; i < len; i++) {
password += seed2[xorshift_get()%20]
}
return password
}
```