CiLocks 6位PIN爆破耗时推算:为什么它几乎不可行,如何聪明地缩短时间
【免费下载链接】CiLocksCrack Interface lockscreen, Metasploit and More Android/IOS Hacking项目地址: https://gitcode.com/GitHub_Trending/ci/CiLocks
CiLocks 是一款开源的 Android/iOS 锁屏攻击工具,主打"Crack Interface lockscreen"(界面锁屏破解),内置 4位/6位 PIN 爆破、词表爆破、Metasploit 后门生成等功能。本文专门推算它内置的6位PIN爆破(Brute Pin 6 Digit)到底要跑多久,并给出 4 种能大幅缩短时间的实用思路,帮你在动手前先算清"这笔时间账"。
一、CiLocks 是什么:PIN 爆破功能在哪里
CiLocks 是一个 Bash 脚本驱动的终端工具箱,核心入口就是仓库根目录的主脚本 cilocks。运行后你会看到这样的主菜单(v2.1):
与锁屏破解直接相关的选项有三个:
- 2. Brute Pin 4 Digit—— 全量穷举 0000~9999,共 1 万种
- 3. Brute Pin 6 Digit—— 全量穷举 000000~999999,共 100 万种
- 4. Brute LockScreen Using Wordlist—— 自定义词表爆破,可以只试"最可能的几百个 PIN"
另外仓库还自带两份穷举词表:4digit.txt(1 万行)和 6digit.txt(100 万行、约 7MB),可直接配合选项 4 使用。
它的爆破原理很"朴素":通过 ADB 远程向手机模拟按键。每输入一位数字就执行一次adb shell input keyevent,输完后用 keyevent 66 提交,然后循环下一个 PIN。也就是说,PIN 的每一位数字,背后都是一次完整的 ADB 命令往返。
二、6位PIN爆破耗时推算:3 个时间变量
要推算总耗时,只需要拆解 3 个变量。
1️⃣ 参数空间:100 万种组合
6 位数字 PIN 的组合数是 10⁶ = 1,000,000 种。脚本从 6digit.txt 逐行读取,顺序尝试直到成功。
2️⃣ 单次尝试的真实成本:ADB 命令开销
看主脚本中 6 位爆破的实现(cilocks),每个 PIN 需要 7 次 ADB 命令(6 位数字 + 1 次提交):
- 一次
adb shell input keyevent在USB 直连、本机执行时大约 100~300ms(网络 ADB、模拟器或高负载机器上可能到 500ms 以上) - 单个 PIN ≈ 7 × 0.1~0.3s ≈0.7~2.1 秒
- 100 万个 PIN 的纯输入耗时 ≈8~24 天——注意,这还没算任何惩罚延迟
3️⃣ 隐藏的时间大头:每 5 次失败触发 30 秒延迟
Android 锁屏有一条通用规则:连续 5 次输错,强制锁定约 30 秒(脚本作者也在 README.md 中专门提示了这一点)。脚本对此做了适配:每尝试 5 个 PIN 就主动 sleep 30 秒并重新唤醒锁屏界面。
更需要注意的是:6 位爆破分支的代码里,每 5 次失败实际消耗约 60 秒(一个 30 秒的倒计时循环 + 一次额外的sleep 30)。
📊 一张表看懂:4位 vs 6位 PIN 全量爆破
| 项目 | 4位 PIN(选项 2) | 6位 PIN(选项 3) |
|---|---|---|
| 组合总数 | 10,000 | 1,000,000 |
| 每个 PIN 的 ADB 命令数 | 5 | 7 |
| 纯输入耗时(0.1~0.3s/命令) | 约 1.4~4.2 小时 | 约 8~24 天 |
| 失败惩罚延迟 | 约 2,000 次 × 30s ≈16.7 小时 | 约 200,000 次 × 60s ≈139 天 |
| 全量跑完(最坏情况) | ≈ 18~22 小时 | ≈ 5.5~6.5 个月 |
结论一目了然:4位PIN全量爆破熬一个通宵勉强可行;6位PIN全量爆破,理论最优也要跑大半年,中间还要求设备不断电、USB 不断连、ADB 不掉线。现实中任何一个环节掉链子就要重来。这就是"几乎不可行"的原因——瓶颈不在计算量,而在ADB 通信延迟 × 失败惩罚的乘积效应。
⚠️ 还有两个现实中的不确定因素:
- 部分品牌/系统会升级惩罚:比如错 5 次锁 30 秒,错 30 次锁几分钟甚至永久锁定并要求账号验证。脚本里写死的是 30 秒,遇到更严格的机型需要自行调整。
- ADB 通道不稳定:脚本作者也提示过,若在某些设备上按键不生效,需要修改 cilocks 中被注释的
adb shell input keyevent 26唤醒逻辑。
三、如何聪明地缩短爆破时间
既然全量穷举不现实,思路就一句话:少试、试得准、试得快。
方法一:改用词表爆破,只试最可能的几百个 PIN
这是收益最大的一招。真实世界的 PIN 极度不均匀:1234、123456、生日号、手机号后几位占了绝大多数。
- 使用主菜单选项 4(Brute LockScreen Using Wordlist),喂入一份精心挑选的几百行词表
- 仓库自带的 6digit.txt 开头就是 123456、123123、111111、654321 这类高频 PIN,说明作者也意识到了这一点
- 实测账:500 个候选 PIN × 7 次 ADB × 0.2s ≈ 10 分钟输入 + 约 100 次 60s 惩罚延迟 ≈2 小时左右,而不是 6 个月
组词表的实用技巧:高频 PIN 表(各数据库公布的 Top 常见密码)+ 目标生日/纪念日(年份+月日,如 200001、199812)+ 手机号/工号片段,通常 200~500 条就能覆盖"正常人会设的 PIN"的绝大部分。
方法二:压低单次 ADB 尝试的开销
- 坚持 USB 直连本机执行:网络 ADB(
adb connect IP:5555)每次命令多几十到几百毫秒,对 100 万次尝试是灾难级放大 - 使用性能正常的电脑,避免一边跑爆破一边做其他 ADB 操作
- 在 Root 过的 Android 模拟器(Termux/NetHunter)中本地执行时,ADB 调用延迟明显更低
方法三:把"失败惩罚"管理起来
- 每 5 次失败的 30 秒延迟是系统行为,无法跳过,但可以让脚本"不白等":确认惩罚时间结束后再恢复尝试,而不是干等
- 对惩罚更严的机型,观察实际锁定时长,按需调整脚本中
sleep 30的数值 - 让脚本只在你确认设备在线时运行,掉线后 ADB 重连而不是从头再来(可配合词表断点记录"已试到哪一行")
方法四:有 Root / 特殊条件时,根本不用爆破
如果设备已经满足某些条件,PIN 爆破直接跳过:
- 菜单选项 9:Remove LockScreen {Root}—— 已 Root 的设备可直接移除锁屏
- 菜单选项 5:Bypass LockScreen {Antiguard}—— 通过随仓库提供的辅助 APK(AntiGuard/AntiGuard.apk,核心逻辑见 unlock.java)绕过锁屏,受系统版本限制
- 解锁成功后还能用选项 7:Jump To Adb Toolkit(截图、拷贝相机照片、备份数据等)做后续取证
四、写在最后:先算账,再动手
| 策略 | 候选量 | 预期耗时 |
|---|---|---|
| 6位全量穷举(选项 3) | 1,000,000 | 约 5.5~6.5 个月 ❌ |
| 4位全量穷举(选项 2) | 10,000 | 约 18~22 小时 ⏳ |
| 高频词表爆破(选项 4) | 200~500 | 约 1~2 小时 ✅ |
| Root / AntiGuard 绕过 | — | 秒级 ✅✅ |
记住这个决策链:能绕就绕(Root/AntiGuard),不能绕就用词表,词表不行才考虑全量。6位PIN全量爆破在工程上"能跑通",但时间成本决定了它只适合做原理演示,不适合实战。
最后提醒一句:本工具及本文所有方法仅可用于自己所有的设备或获得明确授权的安全测试、教学研究,请勿用于任何非法用途(README 中也有同样的 Important notice 提示)。
【免费下载链接】CiLocksCrack Interface lockscreen, Metasploit and More Android/IOS Hacking项目地址: https://gitcode.com/GitHub_Trending/ci/CiLocks
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考