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

2024 年 11 月 19 日
 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 下来修改一下软件包名就差不多了。

18413 次点击
所在节点    分享创造
107 条回复
Admstor
2024 年 11 月 19 日
有时候觉得程序员任人鱼肉也是双向奔赴的结果

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

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

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

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

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

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

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

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

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

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

© 2021 V2EX