Я отримав двійковий файл, і я повинен зламати його пароль (домашнє завдання). Була також задана функція (функція, яка є частиною бінарного файлу). Ця функція показала, що рядок введення порівнюється з правильним символом пароля за символом і повертається помилковим миттєво, коли персонаж був невірним (це не безпечний спосіб зробити це, я думаю, тому що протікає час, і ми отримуємо уявлення про правильну довжину пароля як приклад). Але наш викладач додав випадковий таймер, який повертає результат (Правильний / Неправильний), щоб зробити це трохи важче для нас ...
У будь-якому випадку, я вже успішно це зробив із зворотною технікою і отримав правильний пароль. Тепер я граю з ним у командному рядку:
/usr/bin/time -v ./program_name enter_password
За допомогою цієї команди я отримую багато інформації, наприклад, системний час, свопи, час виконання. Але мені найцікавіше "добровільні контекстні комутатори", оскільки чим правильніші символи введеного паролю, тим менше "добровільні контекстні комутатори" " Я отримав!
Чим більше помилкових символів я ввожу, тим більше "добровільних контекстних переключень" я отримую.
Мені знадобилося майже дві години, щоб зламати пароль лише ввівши цю команду, ввівши символи та спостерігаючи за "Добровільними контекстними комутаторами". Кожного разу, коли один символ був правильним, "добровільні контекстні комутатори" зменшувалися на одиницю.
На моє запитання, що таке "добровільні контекстні комутатори" і чому вони допомогли мені зламати пароль?