Я получил бинарный файл и должен взломать его пароль (домашнее задание). Была также задана функция (функция, которая является частью двоичного файла). Эта функция показала, что входная строка сравнивалась с правильным паролем символ за символом и сразу возвращала ложь, когда символ был неправильным (это небезопасный способ сделать это, я полагаю, потому что сейчас время утечки, и мы получаем представление о правильной длине пароля как пример). Но наш учитель добавил случайный таймер, который возвращает результат (правильный / неправильный), чтобы сделать его немного сложнее для нас ...
Во всяком случае, я уже сделал это успешно с помощью обратного инжиниринга и получил правильный пароль. Сейчас я играю с этим в командной строке:
/usr/bin/time -v ./program_name enter_password
С помощью этой команды я получаю много информации, такой как системное время, перестановки, время выполнения. Но что меня больше всего интересует, так это «Добровольные переключения контекста», потому что чем больше правильных символов введенного мной пароля, тем меньше «Добровольные переключения контекста» " Я получил!
Чем больше неправильных символов я ввожу, тем больше я получаю «добровольных переключений контекста».
Мне понадобилось почти два часа, чтобы взломать пароль, просто введя эту команду, введя символы и наблюдая «Добровольные переключения контекста». Всякий раз, когда ОДИН символ был правильным, «Добровольное переключение контекста» уменьшалось на единицу.
Мой вопрос, что такое «добровольное переключение контекста» и почему они помогли мне взломать пароль?