我有一个二进制文件,我应该破解它的密码(作业)。还给出了一个函数(一个作为二进制文件一部分的函数)。该函数显示输入字符串与正确的密码逐个字符进行比较,并在字符错误时立即返回 false (我猜这是不安全的做法,因为它正在泄漏时间,我们知道正确的密码长度为例子)。但是我们的老师添加了一个随机计时器,它返回结果(正确/错误),让我们更难...
无论如何,我已经通过逆向工程成功完成并获得了正确的密码。现在我在命令行中使用它:
/usr/bin/time -v ./program_name enter_password
使用这个命令,我得到了很多信息,例如系统时间、交换、执行时间。但是对我来说最有趣的是“自愿上下文切换”,因为我输入的密码字符越正确,“自愿上下文切换”就越少“我明白了!
我输入的错误字符越多,我得到的“自愿上下文切换”就越多。
仅通过输入该命令,输入字符并观察“自愿上下文切换”,我就花了将近两个小时来破解密码。只要一个字符是正确的,“自愿上下文切换”就会减少一。
我的问题是,“自愿上下文切换”到底是什么,为什么它们帮助我破解密码?