Android pin爆破工具|无需root|无需adb调试

Android pin爆破工具|无需root|无需adb调试

Android-PIN-Bruteforce

通过强制使用锁屏PIN解锁Android手机(或设备)。
将您的Kali Nethunter手机变成适用于Android设备的暴力PIN破解器!
(无需root,无需adb)

工具是如何运行的

它使用USB OTG电缆将锁定的电话连接到Nethunter设备。它模拟键盘,自动尝试PIN,并在尝试过多错误猜测后等待。

[Nethunter手机] <-> [USB电缆] <-> [USB OTG适配器] <-> [锁定的Android手机]

USB HID小工具驱动程序提供USB人机接口设备(HID)的仿真。这使Android Nethunter设备可以模拟键盘输入到锁定的电话。就像将键盘插入锁定的电话并按下键一样。

⏱ 使用三星S5尝试所有可能的4位数PIN只需花费超过16.6个小时,但是使用经过优化的PIN列表,您应该花费更少的时间。

需要用到的工具

  • 锁定的Android手机(目标)
  • Nethunter手机(或任何具有HID内核支持的root 过的Android
  • USB OTG(随身携带)电缆/适配器(USB公头Micro-B到母头USB A)和标准充电线(USB公头Micro-B到公头A)。

Android-PIN-Bruteforce的优点

  • 将您的NetHunter手机变成Android PIN破解机
  • 与其他方法不同,您不需要在锁定的电话上启用ADB或USB调试
  • 锁定的Android手机无需root
  • 您不需要购买特殊的硬件,例如Rubber Ducky,Teensy,Cellebrite,XPIN Clip等。
  • 您可以轻松修改退避时间以破解其他类型的设备

⭐ 特征

  • 1至10位数字的任意的长度破解PIN
  • 使用配置文件来支持不同的手机
  • 针对3位,4位,5位和6位PIN的优化PIN列表
  • 绕过电话弹出窗口,包括“低电量”警告
  • 检测电话何时拔出或关闭电源,并每5秒重试一次
  • 每次X PIN尝试后可配置的N秒延迟
  • 日志文件

安装方法

待定

执行脚本

如果将脚本安装到/sdcard/,则可以使用以下命令执行该脚本。

bash ./android-pin-bruteforce

请注意,Android会使用noexec标志挂载/sdcard。您可以使用进行验证mount

用法

Android-PIN- bruteforce(0.1)用于通过暴力强制锁屏PIN解锁Android手机(或设备)。

更多信息请访问:https://github.com/urbanadventurer/Android-PIN-Bruteforce

命令:
  crack                开始破解PINs
  resume               从选择的pin重新开始
  rewind               从选择的pin反向重新开始破解
  diag                 显示诊断信息
  version              显示版本信息并退出

参数:
  -f, --from PIN       从这个PIN重新开始
  -a, --attempts       从数字错误开始尝试
  -m, --mask REGEX     为PIN中的已知数字使用掩码
  -t, --type TYPE      选择pin或者图案开始破解
  -l, --length NUM     破解的pin数字长度
  -c, --config FILE    指定要加载的配置文件
  -p, --pinlist FILE   指定一个自定义PIN列表
  -d, --dry-run        Dry run for testing. Doesn't send any keys.
  -v, --verbose        输出详细的日志

用法:
  android-pin-bruteforce <命令> [参数]

支持的Android手机/设备

这已通过包括三星S5,S7,摩托罗拉G4 Plus和G5 Plus在内的各种手机的成功测试。

它可以将Android版本6.0.1至10.0解锁。
进行暴力攻击的能力并不取决于所使用的Android版本。
这取决于设备供应商如何开发自己的锁屏。

检查电话数据库以获取更多详细信息 https://github.com/urbanadventurer/Android-PIN-Bruteforce/wiki/Phone-Database

🎳 PIN码列表

除非用户选择自定义PIN列表,否则默认情况下使用优化的PIN列表。

不同长度的破解PIN

使用--length命令行选项。

使用此命令可以破解3位数的PIN码,

 ./android-pin-bruteforce crack --length 3

使用此命令来破解6位数PIN码 

./android-pin-bruteforce crack --length 6

优化的PIN列表来自哪里?

通过从数据库泄漏中提取数字密码,然后按频率排序来生成优化的PIN列表。所有未出现在密码泄漏中的PIN都将添加到列表中。

优化的PIN列表是从Ga $$ Pacc DB Leak(21GB解压缩,688M帐户,243个数据库,138920个数字密码)生成的。

4位PIN码列表

从不同来源使用4位PIN列表的原因是,与从Ga $$ Pacc DB Leak生成的列表相比,它提供了更好的结果。

optimised-pin-length-4.txt是所有可能的4位数PIN的优化列表,按可能性顺序排序。可以pinlist.txthttps://github.com/mandatoryprogrammer/droidbrute中找到文件名

该列表经iSEC合作伙伴高级安全工程师Justin Engler和Paul Vines的许可使用,并用于他们的Defcon演讲中,“使用机械手可重配置按钮打桩机(和C3BO)进行机电PIN破解”

戴着面具破解

掩码使用标准grep扩展格式的正则表达式。

./android-pin-bruteforce crack --mask "...[45]" --dry-run
  • 要尝试从1900年到1999年的所有年份,请使用 19..
  • 要尝试使用第一个数字为1且最后一个数字为1的PIN,请使用掩码为 1..1
  • 要尝试以4或5结尾的PIN,请使用 ...[45]

📱 不同手机的配置

设备制造商会创建自己的锁屏,这些锁屏不同于默认的或现有的Android。要找出您的手机需要哪些按键,请将键盘插入手机并尝试不同的组合。

使用--config FILE命令行参数加载其他配置文件。

例子: 

./android-pin-bruteforce --config ./config.samsung.s5 crack

您还可以config通过自定义发送的时间和键来编辑文件。

以下配置变量可用于支持其他手机的锁屏。

# Timing
## DELAY_BETWEEN_KEYS is the period of time in seconds to wait after each key is sent
DELAY_BETWEEN_KEYS=0.25

## The PROGRESSIVE_COOLDOWN_ARRAY variables act as multi-dimensional array to customise the progressive cooldown
## PROGRESSIVE_ARRAY_ATTEMPT_COUNT__________ is the attempt number
## PROGRESSIVE_ARRAY_ATTEMPTS_UNTIL_COOLDOWN is how many attempts to try before cooling down
## PROGRESSIVE_ARRAY_COOLDOWN_IN_SECONDS____ is the cooldown in seconds

PROGRESSIVE_ARRAY_ATTEMPT_COUNT__________=(1  11 41)
PROGRESSIVE_ARRAY_ATTEMPTS_UNTIL_COOLDOWN=(5   1  1)
PROGRESSIVE_ARRAY_COOLDOWN_IN_SECONDS____=(30 30 60)

## SEND_KEYS_DISMISS_POPUPS_N_SECONDS_BEFORE_COOLDOWN_END defines how many seconds before the end of the cooldown period, keys will be sent
# set to 0 to disable
SEND_KEYS_DISMISS_POPUPS_N_SECONDS_BEFORE_COOLDOWN_END=5
## SEND_KEYS_DISMISS_POPUPS_AT_COOLDOWN_END configures the keys that are sent to dismiss messages and popups before the end of the cooldown period
SEND_KEYS_DISMISS_POPUPS_AT_COOLDOWN_END="enter enter enter"

## KEYS_BEFORE_EACH_PIN configures the keys that are sent to prompt the lock screen to appear. This is sent before each PIN.
## By default it sends "escape enter", but some phones will respond to other keys.

# Examples:
# KEYS_BEFORE_EACH_PIN="ctrl_escape enter"
# KEYS_BEFORE_EACH_PIN="escape space"
KEYS_BEFORE_EACH_PIN="escape enter"

## KEYS_STAY_AWAKE_DURING_COOLDOWN the keys that are sent during the cooldown period to keep the phone awake
KEYS_STAY_AWAKE_DURING_COOLDOWN="enter"

## SEND_KEYS_STAY_AWAKE_DURING_COOLDOWN_EVERY_N_SECONDS how often the keys are sent, in seconds
SEND_KEYS_STAY_AWAKE_DURING_COOLDOWN_EVERY_N_SECONDS=5

## DELAY_BEFORE_STARTING is the period of time in seconds to wait before the bruteforce begins
DELAY_BEFORE_STARTING=2
## KEYS_BEFORE_STARTING configures the keys that are sent before the bruteforce begins
KEYS_BEFORE_STARTING="enter"

弹出窗口

我们在冷却期结束之前或有选择地在冷却期之前发送密钥。这是为了使锁屏应用程序保持活动状态,并消除有关不正确的PIN尝试次数或电池电量不足警告次数的所有弹出窗口。

测试从NetHunter手机发送的密钥

测试来自终端的发送密钥

从笔记本电脑到NetHunter电话使用ssh,然后使用以下命令测试发送密钥:

在此示例中,发送了回车键。

echo "enter" | /system/xbin/hid-keyboard /dev/hidg0 keyboard

在此示例中,发送了ctrl-escape。

echo "left-ctrl escape" | /system/xbin/hid-keyboard /dev/hidg0 keyboard

注意:发送config文件变量中的键组合是不同的。目前仅ctrl_escape支持。

在此示例中,键a,b,c被发送。

echo a b c | /system/xbin/hid-keyboard /dev/hidg0 keyboard

测试从应用发送密钥

此Android应用程序是一个虚拟USB键盘,可用于测试发送键。

https://store.nethunter.com/zh_CN/packages/remote.hid.keyboard.client/

如何发送特殊密钥

将此列表用于以下变量:

  • KEYS_BEFORE_EACH_PIN
  • KEYS_STAY_AWAKE_DURING_COOLDOWN
  • KEYS_BEFORE_STARTING

要发送特殊键,请使用以下标签。可以在hid_gadget_test源代码中找到此列表。

钥匙标签钥匙标签
左Ctrlf6
右Ctrlf7
左shiftf8
右shiftf9
左-altf10
右altf11
左metaf12
右meta插入
返回home
退出分页
bckspc删除
tabend
空格键向下翻页
大写锁定right
f1向左
f2向下
f3输入
f4向上
f5锁定

要同时发送多个密钥,请使用以下列表:

  • ctrl_escape(发送左ctrl和转义)

如果您需要更多组合键,请在GitHub的问题列表中打开一个新的问题。

自定义渐进式冷却

config文件的以下部分控制渐进式冷却。

## The PROGRESSIVE_COOLDOWN_ARRAY variables act as multi-dimensional array to customise the progressive cooldown
## PROGRESSIVE_ARRAY_ATTEMPT_COUNT__________ is the attempt number
## PROGRESSIVE_ARRAY_ATTEMPTS_UNTIL_COOLDOWN is how many attempts to try before cooling down
## PROGRESSIVE_ARRAY_COOLDOWN_IN_SECONDS____ is the cooldown in seconds

PROGRESSIVE_ARRAY_ATTEMPT_COUNT__________=(1  11 41)
PROGRESSIVE_ARRAY_ATTEMPTS_UNTIL_COOLDOWN=(5   1  1)
PROGRESSIVE_ARRAY_COOLDOWN_IN_SECONDS____=(30 30 60)

数组与此表相同。

尝试次数尝试直到冷却冷却
1530
11130
41160

为什么不能使用笔记本电脑?

这可在Android手机上使用,因为与笔记本电脑上的端口不同,USB端口不是双向的。

Android如何模拟键盘

密钥是使用发送的/system/xbin/hid-keyboard。要对此进行测试并发送密钥1,您可以使用

echo 1 | /system/xbin/hid-keyboard dev/hidg0 keyboard

在Kali Nethunter中,/system/xbin/hid-keyboard是的编译副本hid_gadget_test.c。这是一个用于测试Linux内核中包含的HID小工具驱动程序的小程序。可以在https://www.kernel.org/doc/html/latest/usb/gadget_hid.htmlhttps://github.com/aagallag/hid_gadget_test找到该文件的源代码。

🔧 故障排除

如果不是强行PIN

检查电缆的方向

Nethunter手机应连接常规USB电缆,而锁定手机应连接OTG适配器。

OTG电缆应连接到锁定的Android手机。常规USB电缆应连接到Nethunter电话。

请参阅有关如何连接电话的图形。

检查它是否在模拟键盘

您可以使用常规的充电/数据USB电缆将NetHunter手机连接到计算机,从而验证NetHunter手机是否成功模拟了键盘。打开像记事本这样的文本编辑器时,它会破解,您应该会看到它在文本编辑器中输入了PIN码。

请注意,您不需要使用OTG电缆。

尝试重启手机

尝试关闭手机电源,甚至可以取出电池。

尝试新的电缆

尝试使用新的电缆/适配器,因为电缆/适配器可能有故障。

如果未使用正确的PIN解锁手机

您发送按键的速度可能太快,手机无法处理。在配置文件中增加DELAY_BETWEEN_KEYS变量。 💡 如果您看不到手机屏幕上出现4个点,则可能是它没有收到4个按键。

🔋 管理功耗

如果您的电话电量耗尽太早,请按照下列步骤操作:

  • 开始之前,请确保两部手机都已充满电至100%
  • 如果可能,降低受害电话和NetHunter电话上的屏幕亮度
  • 将两部手机都设置为飞行模式,但是您可能需要启用WiFi才能通过SSH访问NetHunter手机。
  • 锁定的电话将为NetHunter电话供电,因为它显示为键盘配件
  • 使用带有Y型分配器的USB OTG电缆作为外部电源,以便在破解时为NetHunter手机充电
  • 稍事休息即可为您的设备充电。使用CTRL-Z暂停脚本,然后使用fgshell命令恢复。
  • 避免使用SEND_KEYS_STAY_AWAKE_DURING_COOLDOWN_EVERY_N_SECONDS配置选项。这将导致锁定的手机使用更多的电池以保持屏幕通电。而是使用SEND_KEYS_DISMISS_POPUPS_N_SECONDS_BEFORE_COOLDOWN_END选项(默认)。

检查诊断报告

使用命令diagdisplay诊断信息。

bash ./android-pin-bruteforce diag

如果在插入USB电缆后收到此消息,请尝试从锁定的Android手机中取出电池,然后重新打开电源。

[FAIL] HID USB device not ready. Return code from /system/xbin/hid-keyboard was 5.

usb-devices命令如何工作

diagnostics命令使用usb-devices脚本,但是仅在确定USB电缆是否连接错误时才需要使用该脚本。可以从https://github.com/gregkh/usbutils/blob/master/usb-devices下载

使用详细输出

使用该--verbose选项检查配置是否符合预期。在修改配置时,此功能特别有用。

使用空运行

使用该--dry-run选项可检查其运行方式,而无需将任何密钥发送到设备。在您修改配置或在开发过程中,此功能特别有用。

空运行将:

  • 不发送任何密钥
  • 如果KEYBOARD_DEVICEHID_KEYBOARD丢失,将继续而不是中止。

HID USB模式

在NetHunter手机的外壳程序中尝试以下命令: 

/system/bin/setprop sys.usb.config hid

💣 已知的问题

  • 这无法检测到何时猜出了正确的PIN并解锁了手机。
  • 您的手机可能用完了 🔋 电池找到正确的PIN码之前。
  • 不要信任来自未知来源的电话配置文件,而无需先对其进行检查。配置文件是Shell脚本,并且可能包含恶意命令。

🚀 路线图

  • [完成]作品
  • [DONE]检测USB HID故障
  • [完成]改善使用率和命令行选项/配置文件
  • [DONE]为n位PIN添加暴力破解
  • [DONE]已知数字的掩码
  • [DONE]反向破解PIN列表(以查找哪个最近的PIN解锁了设备)
  • [DONE]实施可配置的锁屏提示
  • [DONE]尝试10次后进行冷却时间更改
  • [工作中]查找/测试更多要进行暴力破解的设备
  • 添加进度栏
  • 添加预计到达时间
  • ASCII艺术
  • NetHunter的更好GUI
  • 适用于iPhone的工具
  • 检测手机何时解锁(使用Nethunter相机作为传感器?)
  • 破解Android模式(首先尝试常见模式)

下载地址

①GitHub:Android-PIN-Bruteforce/master.zip
②雨苁网盘:https://w.ddosi.workers.dev