如何使用悦享校园

Written By Lindsay On Jun 21, 2020

  毕设结束到离校这段时间没事做,就看了一下怎么破解某理工大的热水系统。在 Github 上有相关的项目。由于各种原因,这里补充一下细节。
  这里是基于这个 Github 项目做的二次改进。

  1. 抓包
      需要抓取的信息可以参考这里
      由于较新的版本可能在 app 内进行证书验证,而不是使用用户证书,所以无法用代理进行 https 抓包。1.0.0 版本的服务器已经被弃用,也无法抓包。个人使用的是 1.0.9 版本的 app 进行抓包。
      另外需要说明一点的是,虽然 1.0.9 没有应用内的证书验证,不过其加入了指纹签名,在不知道其签名算法的情况下,无法自己实现其 api ,所以最终使用的还是 1.0.0 版本
      因此,本文具有时效性,如果旧版本的 apk 在网络上消失了,或软件服务器又换了,本文将不再有效。

2020-07-01 补充
  安卓 7 以上的版本虽然应用可以不信任用户证书,但是可以通过安卓 root 后,将自签名证书放入系统证书,绕过限制。此外,ios 系统没有这种限制,可以正常抓包。1.0.0 版本的悦享校园 apk 已经存档,所以该文长期有效。

  1. 写接口
      同样也是参考这里写接口,个人由于没有 arduino ,使用的是 flask 写个 web 应用放在路由器上。也不复杂,随便写写就行了。

  2. 网络转发
      上面说过 1.0.9 无法写 api , 1.0.0 版本的服务器已经关了。替代的方法是使用 iptables 将 1.0.0 版本发送的网络包转发到自己的应用上。
      在路由器上写入 iptables 规则

    iptables -t nat -A PREROUTING -d 118.31.18.116 -p tcp -j DNAT --to-destination 127.0.0.1:23333
    

      目的地址和端口改成自己开的 API 服务,行了。

参考项目:
GeGeShe/esp8266_csust_yuexiang