Provate a realizzare un programma C che esegua checkPIN
con tutti i PIN di 5 cifre (attenzione che possono iniziare per 0 quindi dovete fare “padding” nel caso il numero sia più piccolo di 5 cifre: 1234 deve diventare 01234)
Questa tecnica si chiama brute force (attacco per forza bruta). Nel caso dei PIN è possibile perché sono pochi.
Suggerimento: utilizzate snprintf con la format string “%05d” per ottenere una stringa di 5 cifre con l’opportuno padding di zeri. Ad esempio:
char pin_str[128]; snprintf(pin_str,128,"%05d",pin);crea una stringa di 5 cifre nella variabile
pin_str
a partire da un numero intero contenuto nella variabilepin
.
Il programma deve:
- iterare su tutti il PIN
p
; - fare una
fork
e poi unaexec
per eseguirecheckPIN p
(potete trarre ispirazione da qui).
Al momento non preoccupatevi di attendere la terminazione, limitatevi alla parte di fork
ed exec
.
Output
Dovreste osservare:
- una serie di output nella forma
PIN ... errato
, uno per ogni PIN testato - il messaggio
fallimento fork: Resource temporarily unavailable
da un certo punto in poi in quanto avete creato troppi processi
Nel prossimo task completiamo il brute force aggiungendo l’attesa e il test dello stato di terminazione!