Eu tenho um arquivo binário e devo quebrar sua senha (lição de casa). Também foi fornecida uma função (uma função que faz parte do arquivo binário). Essa função mostrou que a string de entrada foi comparada com a senha correta caractere por caractere e retornou false instantaneamente quando um caractere estava errado (essa não é uma maneira segura de fazer isso, acho porque está vazando tempo e temos uma ideia do comprimento correto da senha como exemplo). Mas nosso professor adicionou um cronômetro aleatório que retorna o resultado (Correto / Errado) para tornar um pouco mais difícil para nós...
De qualquer forma, já fiz isso com sucesso com engenharia reversa e obtive a senha correta. Agora estou brincando com ele na linha de comando:
/usr/bin/time -v ./program_name enter_password
Com este comando, obtenho muitas informações como hora do sistema, trocas, tempo de execução. " Eu recebo!
Quanto mais caracteres errados eu inserir, mais "mudanças voluntárias de contexto" eu recebo.
Levei quase duas horas para quebrar a senha apenas digitando esse comando, inserindo caracteres e observando "Mudanças voluntárias de contexto". Sempre que UM caractere estava correto, as "mudanças de contexto voluntárias" diminuíam em um.
Minha pergunta, o que exatamente são "interruptores de contexto voluntários" e por que eles me ajudaram a quebrar a senha?