有一段时间很好奇的一个事情,假设我现在有一部手机,我又正好忘记它的密码,那我要怎么做?
手头这一部安卓的pin码是四位数,假如是纯数字,那么0000-9999一共是10^4种组合,而每输入错误五次要等待30秒,不长不短,不间断的输入约需要55个小时左右,未免太挑战人类耐心的极限了。
那么通过漏洞或者调试模式破解,应该可行,甚至一键解锁。但这里要考虑更极端的环境
假设adb禁用,网络没有开启,调试模式也没有开(我的手机默认是这样的),那么该如何是好?
所想到的大致的解决:
写一个键盘,利用34u2的usb接口模拟HID,实现从usb接口侵入(机器化输入)
==================================================================
最初的方案:
通过otg实现外接键盘,再编程,实现输入数字
输入---》循环五次-----》等待31秒
有个问题是,五十五个小时,供电怎么办?
改进方案:
增进一条电源总线,外接电源到手机上面,这样就能解决手机供电的问题
假设,我破解完了,然后进入手机,但是外接的mcu并不知道,所以并不会停止输入,因此还要让它停止
再次改进方案:
通过图像识别是否完成了暴力破解
这部分的操作 输入PIN---》通知PC确认---》PC采集影像---》二值化----》比较特定区域的前后区别
不过这个我觉得有个BUG,就是USB作为HID设备时候是不能够输入串口的,所以还要用其他设备来作为板载串口输入(比如说蓝牙模块)。
增进廉价改进方案:
利用一枚色彩传感器,告知芯片是否完成了破解并记录最近的PIN码
先将我们的色彩传感器贴在屏幕上面,那么就可以直接的了解是否是有色彩的变化(进入主UI),只要采取特征比较就可以达到,并且不受到屏幕亮度变化的影响
==================================================================
至于苹果和其他:
苹果失败后最大会有半小时的锁定,而且,并不支持otg,还有ms 的WP,那玩意没人用吧?
完