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

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 条回复
ivencooli
340 天前
@phrack 你又懂完了,哥们
lengmou
340 天前
这谁能忍,尤其对老人小孩不懂操作的人来说,回个家都是麻烦
apollo007
340 天前
干,我们小区也是这个,见鬼
EndlessMemory
340 天前
开屏广告是真的烦,但是这玩意又是最不可能去掉的,听说这玩意费用老高了
laminux29
339 天前
本质上是物业在恶心业主,业主性格软弱,被欺负就很正常了。

楼主你这么搞,相当于主动把物业与业主的矛盾,转嫁给广告公司与业主,得不偿失,还帮了物业。
TOM2333
339 天前
@phrack 加沙不累,你去吧
johnnyNg
339 天前
我们也是这个,话说留个抓包的漏洞也不会影响到他特别多的收入吧,毕竟会抓包直接调接口的是少数人,不理解为啥封这么死
woyaojizhu8
339 天前
楼主不怕这里有亲邻内鬼,你发出来对方马上反制?
zerovoid
339 天前
确实,这个亲邻开门太恶心了,
你开个门,打开 APP 一个广告,开完门一个广告,
正常应该业主联合起来抵制这种 APP ,
次一级也要组织起来一起投诉这个 APP 。
learnshare
339 天前
本地的门禁服务商,一个小区录入人脸后,可以去开另一个小区的门。笑
(有两个可靠的信息来源)
V2April
339 天前
写代码破解小心被抓,我建议还是投诉物业要求提供刷卡解锁
xiaoxixi
339 天前
骑车每天撞两次门 几次下来就不用开门了 反正我住的小区的门禁坏了几次后就不在修了
KasuganoSoras
339 天前
@laminux29 #85 我也想,但是貌似业主群里没有人提过这事,大部分人都直接选择录入人脸信息用人脸解锁了,如果就我一个人跳出来说这事的话就有点尬了
@johnnyNg #87 以前是 http 明文的,后来越来越复杂,估计是破解方法太简单了,有手就行,导致很多人都去用,他们收益自然就下降了
@woyaojizhu8 #88 那我可就来劲了 我倒想看看他们还能整出来什么烂活
@zerovoid #89 没办法,我们这小区住户都是老年人居多,年轻人也大部分都开摆了,组织不起来,愿意花时间去研究其他方式开门的人一只手数得过来
@V2April #91 不要乱说啊,我只是写了个手机的自动化测试工具
chenstor
339 天前
太好了,我试一下。我那个小区有个破门也是这个系统,以前小程序还可以开门,现在直接下掉功能。APP 还没安装测试。
人脸是坚决不给这些辣鸡公司的
cuberwr1
339 天前
确实非常恶心,要人脸外加各种信息,还自带摄像头,这种没经过允许的拍摄应该也是侵犯了肖像权的,我家楼下之前那个开门的 app 里面直接放着密钥,给一个阿里云的服务器发请求,之后开门,之后估计是那个广告公司跑路了,门禁那个设备欠费了,门禁那个安卓机器我也拿了权限,直接给继电器一直上电把它烧了,之后就一直没门禁,最近几天又来个了新的,给继电器修了外加更大更亮的广告牌,还写着招商,声光兼具什么的,至少现在还没人投广告,没声音,要是有声音铁定拆掉,现在就想着直接自己接个设备到继电器来遥控,买了两个 2.4g 的模块,然后发现只是通讯里面没带 mcu ,我想从楼上控制貌似有点太远了,收不到信号,还要外加 mcu ,于是看到了频率更低功率更大的 315mhz 的模块,还自带开关量控制,刚用淘宝红包买了一对,指甲盖那么大,还看了半天早还给老师的射频的东西,自己剪线绕天线,不知道能不能接收到,发射的模块到了,接受的明天到,打算直接用鱼钩从那广告机电源取电,不知道电压是不是合适,有时候软件折腾很久的东西,直接考虑硬件解决更直接,感觉还能免去一些法律风险
cuberwr1
339 天前
@cuberwr1 #95 这傻逼物业整天不干人事,电梯里广告机我直接掀了,结果拆几次他们装几次,还把监控发到业主群结果被骂给我笑死了,不过那时候挺忙没管这事,要是闲着必去告个侵犯肖像权什么的,最后物业没办法就把广告机装到电梯的背面看不到的地方了,现在是看不到了,但是偶尔隐隐约约能听到一点广告机的声音
MossFox
339 天前
我靠,原来这截图是真有这种软件啊,我之前看到这么缺德的以为是整活的呢,
弹出的广告视觉上第一眼有三个个关闭按钮,细看才看到的第四个才是真的,然后怕你不点大卡片,除了 Primary Button 之外还加了个头发丝贴在上面忽悠你。
MossFox
339 天前
@MossFox #97 不对,右上角那个应该是页面内的叉,不是关弹窗的
run2
339 天前
@fanxasy 我们这不一样,我们也用这个,是业委会选的,本来物业公司有他们自己的门禁系统的(但不确定物业的有广告没)
wtdd
339 天前
这治标不治本啊,还是得给业委会提

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

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

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

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

© 2021 V2EX