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_stra partire da un numero intero contenuto nella variabilepin.
Il programma deve:
- iterare su tutti il PIN
p; - fare una
forke poi unaexecper 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 unavailableda 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!