Ho un file binario e dovrei decifrare la sua password (compiti a casa). È stata inoltre fornita una funzione (una funzione che fa parte del file binario). Quella funzione ha mostrato che la stringa di input è stata confrontata con il carattere corretto della password per carattere e restituita falsamente all'istante quando un carattere era errato (non è un modo sicuro di farlo immagino perché è un tempo che perde e abbiamo un'idea della lunghezza corretta della password come esempio). Ma il nostro insegnante ha aggiunto un timer casuale che restituisce il risultato (Corretto / Sbagliato) per renderlo un po 'più difficile per noi ...
Comunque, l'ho già fatto con successo con il reverse engineering e ho ottenuto la password corretta. Ora ci sto giocando nella riga di comando:
/usr/bin/time -v ./program_name enter_password
Con questo comando, ottengo molte informazioni come l'ora di sistema, gli swap, i tempi di esecuzione. Ma ciò che è più interessante per me è "Switch di contesto volontario" perché più caratteri corretti della password immetto, meno "Switch di contesto volontario " Ottengo!
Più caratteri errati entro, più "cambiamenti di contesto volontari" ottengo.
Mi ci sono volute quasi due ore per decifrare la password semplicemente inserendo quel comando, inserendo i caratteri e osservando "Cambiamenti di contesto volontari". Ogni volta che UN personaggio era corretto, il "Cambio di contesto volontario" diminuiva di uno.
La mia domanda, che cosa sono esattamente "Switch di contesto volontari" e perché mi hanno aiutato a decifrare la password?