0%

暴力破解BiliBili青少年模式

这是我最近一个很有意思的尝试。

考研期间为了限制自己,我拜托别人帮我设置了许多app的青少年模式,BiliBili就是其中一个,在考研结束后,我突然想着能不能在不询问密码的前提下解开这个青少年模式?

普遍存在的问题

我在网上搜到的一篇调查报告指出,现存的大多数青少年模式都形同虚设,要么是可以重新安装初始化app,要么是不设置解秘次数,可以暴力破解。这也就是我的主要思路。

重装

我尝试重新安装bilibili,或者再别人的手机上登录账号,然后得出结论,bilibili的青少年模式是跟着账号走的,除非更换账号,不然还是不行。

暴力破解

所以自然而然采取第二种策略,暴力破解。

手动输入的话会累死个人,于是我在尝试有没有什么自动化的方法。

通过adb可以模拟点击,然后获得了0-9的输入坐标后,就可以写出这么一段shell脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash

press(){
# 传递一个参数为要按下的值
case $1 in
0) adb shell input tap 500 2200 #0
;;
1) adb shell input tap 200 1500 #1
;;
2) adb shell input tap 500 1500 #2
;;
3) adb shell input tap 800 1500 #3
;;
4) adb shell input tap 200 1700 #4
;;
5) adb shell input tap 500 1700 #5
;;
6) adb shell input tap 800 1700 #6
;;
7) adb shell input tap 200 2000 #7
;;
8) adb shell input tap 500 2000 #8
;;
9) adb shell input tap 800 2000 #9
;;
esac
}

pass=0000 #第一位

until [ ! $pass -lt 10000 ] #a遍历0-9
do
press `expr $pass / 1000 % 10` #输入千位
press `expr $pass / 100 % 10` #输入百位
press `expr $pass / 10 % 10` #输入十位
press `expr $pass / 1 % 10` #输入个位
adb shell input tap 520 830 #立即验证
pass=`expr $pass + 1`
done

嘛,然后就可以用了。