使用快捷指令捷径破解亲邻开门

9月27日更新:

最近发现快捷指令失效了,重新抓包后发现请求中增加了sign和nonce字段,这两个字段都是用来防御重放攻击的。虽然前几个接口并未强制验证,但关键的开门接口进行了验证,导致无法正常执行开门操作。目前暂时无解,正在思考其他替代方案。

原文:

由于最近快递只能送到小区门口,大大增加了出入小区的频次,也越来越发觉每次掏出门禁、刷门禁这个动作很繁琐,特别是在拿了很多东西的情况下。

因此希望通过更便捷的方式打开小区门禁,我选择通过iOS的“快捷指令/捷径”。

实现思路:抓包开门请求,使用快捷指令/捷径模拟请求。

尝试一

第一个想到的是抓小程序的请求链接。在WiFi中设置好电脑的代理地址和端口,打开Charles进行抓包,会有下面四个关键请求:

# 请求1,初次登录,换取sessionId
https://mobileapi.qinlinkeji.com/api/wxmini/v3/appuser/checkLogin?sessionId=undefined

# 请求2,刷新首页
https://mobileapi.qinlinkeji.com/api/wxmini/v3/appuser/refresh?sessionId=wxmini:XXXXX

# 请求3,获取最近使用的小区门禁
https://mobileapi.qinlinkeji.com/api/doorcontrol/queryUserDoorByCache?sessionId=wxmini:XXXXX

# 请求4,打开指定门禁
https://mobileapi.qinlinkeji.com/api/open/doorcontrol/v2/open?sessionId=wxmini:XXXXX

这四个请求都为POST方式。当然,请求时需要带上相关参数,具体抓包可见。

对我们有价值的是请求4,使用“快捷指令/捷径”模拟请求4即可。

刚做完的时候还是好用的,但是到了第二天,就发现无法正常开门,猜测到是sessionId过期了。通过搜寻,找到一个可以使sessionId不过期的方法,应该是定期向亲邻服务器模拟请求2,使当前使用的sessionId出于活跃状态。

但我不推荐这样做,原因:1.我没尝试;2.就算有用,你还需要有个服务定期请求,也增加了不必要的浪费。

尝试二

在抓小程序无果后,想到了能不能抓取亲邻开门App的请求。App相比小程序,更加自由,认证方式也比较简单,我猜sessionId应该也能保持很久吧?

在WiFi中设置好电脑的代理地址和端口,打开Charles进行抓包,运行亲邻开门App。

奇怪的是无论怎么操作都没有抓到任何请求,这应该是App强制跳过了代理。

解决方法也很简单,使用系统VPN进行代理转发。我这里使用的是Surge,新建一个代理规则,默认走代理,代理服务器的IP和端口,填写电脑的代理地址和端口。测试一下,能抓到请求了。

关键请求和小程序类似,我就不再列举,开门请求为:

# 开门请求
https://mobileapi.qinlinkeji.com/api/open/doorcontrol/v2/open?appChannel=2&macAddress=FC19CA012345&sessionId=app:XXXXX

其中macAddress的值为门禁的mac地址,sessionId为App的登录session。

目前session一直有效中。

已创建好的“快捷指令/捷径”在 https://sharecuts.cn/shortcut/5342 ,或直接扫描下方二维码添加。

《使用快捷指令捷径破解亲邻开门》上有7条评论

  1. 你好,怎么样才能抓到https 数据,已经安装了charles证书,surge设置代理,但是https数据还是不能显示,请问有什么秘诀吗》?谢谢!

    1. 如果你说的https数据不能显示,指的是能看到请求,但看不到内容,那目测是证书没配置好。
      你在安装完charles证书后,ios设备还需要到设置>通用>关于本机>拉到最下面“证书信任设置”中,将刚才安装的证书开启。
      如果你也开启了,还是不行,建议重启手机和电脑。

  2. 感谢回复,你说的设置都没问题,证书已经信任了,手机重启试过了 ,charles版本也换了,一直没找到问题的原因,难道是亲邻开门版本问题,请问你抓包的是哪个版本的app,谢谢

    1. 大概率不是亲邻版本的事情,比如你抓别的能抓到https吗?
      你还可以再试一下:在手机上,把surge改为直连,开启mitm和抓取流量,直接用surge抓取流量。

  3. 我的surge是网上找的免费版没有mitm等功能,用stream手机抓包也是看不到内容,只能抓亲邻开门叮咚mp3。https比如百度网页等可以看见发送内容,google等和亲邻一样提示证书不匹配,所以我怀疑亲邻有sslpinning之类的,用了安卓4.4.2模拟器+drony转发,不行又试了xpose框架just trustme+sslunpinning等各种方法都试过了,就亲邻抓不到,后来看了你的文章就换了iphone+surge 还是一样handshake_failur问题,charles提示返回亲邻服务器证书是digicert,手机电脑证书都安装了所以我也不知道问题出在哪里

    1. 我刚才又试了下,最新版的APP,直接可以用surge抓到。我是iOS最新版+surge最新版+亲邻科技最新版。
      如果你能用mitm,需要注意两点:一个是安装根证书,另一个是需要在mitm里开启“跳过服务端证书认证”和“用于tcp连接”,因为亲邻APP的就是tcp连接。

      另我这篇文章是用mac环境下的Charles,我建议你换一下charles版本,有些破解版本确实存在问题。不建议使用安卓,因为安卓整个系统都是该安全的地方不安全,不安全的地方瞎安全。

发表评论

电子邮件地址不会被公开。 必填项已用*标注