V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
KasuganoSoras
V2EX  ›  分享创造

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

  •  4
     
  •   KasuganoSoras ·
    kasuganosoras · 31 天前 · 9183 次点击

    0x00 缘起

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

    img

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

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

    0x01 尝试破解

    img

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

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

    0x02 另辟蹊径

    img

    简单粗暴,就是单纯通过模拟屏幕点击。配合软件在后台挂机实现自动开门。但是这个软件每次开门之后都会弹个广告出来,而且关闭广告必须要点那个小到不能再小的 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 这个非常好用的软件,就可以在手机主屏幕上一键开门了,再也不需要每次开门等个几十秒了。

    img

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

    各位如有需要可以自取~

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

    107 条回复    2024-11-20 19:58:23 +08:00
    1  2  
    LanhuaMa
        101
    LanhuaMa  
       30 天前
    @Leasing #72 有没有可能,坏人出国就被逮捕了,所以待在国内专门坑你们这些 “好人”?
    duanzhanling
        102
    duanzhanling  
       30 天前
    厉害👍
    coolloves
        103
    coolloves  
       30 天前
    还要是要装一个模拟器,然后一直开机挂着,太难了
    电脑一直开着估计每天也要 1 度电的吧.
    1d074bfa18d34f6c
        104
    1d074bfa18d34f6c  
       30 天前
    @KasuganoSoras #12 别人免费提供就必须接受吗?普通人来说这样不就等于不看广告不让开门吗? 所以那么贵的房子是花钱买难受,这算是强制绑架住户的时间了吧 ,况且这也不是真的免费而是成本转移到了住户身上,退一步说后续如果有维护上的问题他们是不是可以说不提供免费服务了
    rukeypei
        105
    rukeypei  
       30 天前
    有才兄弟
    Fred0410
        106
    Fred0410  
       30 天前 via iPhone
    没想到开门还需要技术
    jdjingdian
        107
    jdjingdian  
       30 天前
    本质来说,业主是交了物业费的,那么问题来了,这个玩意的广告收入会给业主吗
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2684 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:48 · PVG 20:48 · LAX 04:48 · JFK 07:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.