用模拟器挂机实现亲邻开门无广告自动化操作

340 天前
 KasuganoSoras

0x00 缘起

不知道从什么时候起,我们小区就装上了新的门禁,这个门禁系统是由一家叫亲邻科技的公司提供的,他们的门禁系统实际上就是个活动的广告牌,门禁开关上有广告,门上也有广告,到处都是广告。

其实这些都能忍了,但是忍不了的是他们的 App 开个门都要看广告,是真的烦人,而且这个破 App 又慢又卡,每次启动光是等那个加载界面都要等个十几秒钟,进去之后有时候登录失效了还要重新登录,登录完了加载数据又要十几秒钟,有这功夫我都能喊保安给我开个门了。

我也问过物业能不能搞个 NFC 之类的,得到的回复是暂时不支持,因为开通 NFC 是要收钱的,所以只能用 App 和人脸解锁,但我肯定不会把人脸数据卖给这些广告公司,那就只剩下 App 这条路能研究了。他们的 App 也有个什么免广告版,收费的,虽然一年就十几块钱,但我怎么可能会为这个玩意付钱?想都别想!

0x01 尝试破解

于是我就想着找个办法给它破解了。一开始我想的是通过抓包来破解,但是后来发现暂时行不通了,之前已经有 其他大佬尝试破解过了,而他们现在为了防破解,加入了 nonce 、sign 这两个参数对请求进行校验,同时还通过 SSL Pining 来阻止抓包,提升了破解难度。

虽然可以通过使用 Frida 和 blutter 等软件,再 Hook 掉 App 的签名接口来破解,但是这终归不是个稳定的办法,因为只要他们一修改签名方式,Hook 就没用了,又要重新逆向,非常麻烦。于是我想到了一个简单粗暴的办法,那就是:模拟点击。

0x02 另辟蹊径

简单粗暴,就是单纯通过模拟屏幕点击。配合软件在后台挂机实现自动开门。但是这个软件每次开门之后都会弹个广告出来,而且关闭广告必须要点那个小到不能再小的 X 按钮,并且这个按钮每次出现的位置都不同,有时候在左上角,有时候在右上角,如果要通过识图来获取按钮位置的话就太麻烦了,干脆每次开完门就重启一次 App ,这样就没有广告了。

private void CloseAd() {
    Thread thread = new Thread(() =>
    {
        Thread.Sleep(closeWait);
        stopAppCmd("com.qinlin.edoor");
        Thread.Sleep(300);
        startAppCmd("com.qinlin.edoor/.MainActivity");
        if (autoLockScreen) {
            Thread.Sleep(1000);
            powerBtn();
        }
    });
    thread.Start();
}

然后让程序监听在 HTTP 端口上,当收到请求的时候就发送 Adb 请求模拟屏幕点击,实现远程自动开门,配合 HTTP Shortcuts 这个非常好用的软件,就可以在手机主屏幕上一键开门了,再也不需要每次开门等个几十秒了。

最后附上项目地址: https://github.com/kasuganosoras/QLCloseDoor/

各位如有需要可以自取~

PS:理论上这个玩意也可以用于其他门禁系统,只需要 clone 下来修改一下软件包名就差不多了。

14198 次点击
所在节点    分享创造
107 条回复
Admstor
340 天前
有时候觉得程序员任人鱼肉也是双向奔赴的结果

这破玩意最好的解决办法就是砸了
just1
340 天前
歪个楼,上面这个电动车的面板是 app 自带的还是自己弄的,有办法自己弄个这种组件吗
rekulas
339 天前
可以试试逆向直接屏蔽掉
jasonchen168
339 天前
牛啊,我们小区也是这个破 APP ,还好我要卖房子了
tsja
339 天前
虽然 app 开门很烦人, 但是相比之前需要带 nfc 门禁, 宁可选择 app 开门. 感谢 up 提供的思路, 晚上就回去试试
imsoso
339 天前
这个垃 圾 app
走到了免费使用,付费看广告的极致
DigitaIOcean
339 天前
这个模式恶心,可同样恶心的不是选这个模式的吗
如果选一个没广告的,但需要安装费的(物业费里面出),如果表决的话,一定选没广告的?存疑
fbi007130
339 天前
一般来说,改 UI 的概率远大于改 hook 等,仅供参考。
joker8ren
339 天前
就是这玩意 我们小区也是 还好可以刷脸
KasuganoSoras
339 天前
@kk2syc #49 我搞逆向太菜了(

@dozer47528 #53 也有人脸识别开门,还有 IC 卡开门,但谁知道他拿你人脸数据做什么,IC 卡是要定期收费的,虽然不贵,但是我家里人也要用,开几张卡下来一年也要大几十块钱成本

@binxin #57 它在有网的情况下是不需要蓝牙和定位的,只有他的设备断网了才需要蓝牙

@dode #59 用人脸开门,或者花钱搞 IC 卡,只能这样了

@fbi007130 #68 这个倒是,但改 UI 重新适配也简单,一般来说就是调一下坐标的事情,而且我用了几个月观察下来发现 UI 基本不会变动,唯独就广告天天变

@SimonOne #43 这个是 HTTP Shortcuts 自带的图标库,我也不知道
MoonWalker
339 天前
@vchroc 深受其害,可以详细讲讲怎么做吗?
7f1hVWOG0UF4bC5P
339 天前
@phrack 天天说国人 国人的,看着真累。哪都有坏人 坏事。怎么?国外是有净化结界啊,坏人出了国就变好人了?
fbi007130
339 天前
看完楼主,感觉到不幸。我住的小区,也被换了门禁,可是那个厂商似乎要倒闭的样子。。。app 不更新几年了。。。于是。。。
SimonOne
339 天前
@KasuganoSoras #70 你下面其他软件的,比如那个短信的图标还蛮好看的。
Ansen
339 天前
之前我是直接抓接口和 token , 写了个脚本运行在服务器上, 做成捷径发 url 请求到服务器开门
wentx
339 天前
斗奶屏?
kita
339 天前
这种就应该在每个门禁那边普及人脸识别的阴谋论,侵害隐私什么都写上去
jqknono
339 天前
用 adguard 能去广告吗? 用我的公开版试试 public.adguardprivate.com
huangmingyou
339 天前
很刑。
KasuganoSoras
339 天前
@SimonOne #74 华为的主题里面找的,搜 Nine 九为 就有,有点类似安卓原生风格的图标

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1090682

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX