Tengo un archivo binario y se supone que debo descifrar su contraseña (tarea). También se proporcionó una función (una función que forma parte del archivo binario). Esa función mostró que la cadena de entrada se comparó con la contraseña correcta carácter por carácter y se devolvió falsa instantáneamente cuando un carácter estaba equivocado (esa no es una forma segura de hacerlo, supongo porque es tiempo de fuga y tenemos una idea de la longitud correcta de la contraseña como ejemplo). Pero nuestro maestro ha agregado un temporizador aleatorio que devuelve el resultado (Correcto / Incorrecto) para que sea un poco más difícil para nosotros ...
De todos modos, ya lo hice con éxito con ingeniería inversa y obtuve la contraseña correcta. Ahora estoy jugando con él en la línea de comando:
/usr/bin/time -v ./program_name enter_password
Con este comando, obtengo mucha información, como la hora del sistema, los intercambios, el tiempo de ejecución ... Pero lo que más me interesa es "Cambios de contexto voluntarios" porque cuanto más caracteres correctos de la contraseña ingreso, menos "Cambios de contexto voluntarios " ¡Yo obtengo!
Cuantos más caracteres incorrectos ingrese, más "Cambios de contexto voluntarios" obtendré.
Me tomó casi dos horas descifrar la contraseña simplemente ingresando ese comando, ingresando caracteres y observando "Cambios de contexto voluntarios". Cada vez que UN personaje era correcto, los "Cambios de contexto voluntarios" disminuían en uno.
Mi pregunta, ¿qué son exactamente los "cambios de contexto voluntarios" y por qué me ayudaron a descifrar la contraseña?