Task 3: Brute force (prima parte)

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 variabile pin.

Il programma deve:

  • iterare su tutti il PIN p;
  • fare una fork e poi una exec per eseguire checkPIN p (potete trarre ispirazione da qui).

Al momento non preoccupatevi di attendere la terminazione, limitatevi alla parte di fork ed exec.

Output

Dovreste osservare:

  1. una serie di output nella forma PIN ... errato, uno per ogni PIN testato
  2. 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!