摩拜单车开锁实现原理剖析

1.开锁技术可能性分析



1  mqtt 实现 

摩拜服务器作为broker, 手机APP 和  智能锁作为 subcriber/publisher, 过程如下

1.  智能锁和摩拜云端保持长连接,订阅开锁消息(根据ID)

2. APP 用mqtt 登录上 摩拜borker后 携带智能锁号订阅 请求开锁消息(根据ID)

3. borker 收到 开锁消息后,经过业务处理,向智能锁发送开锁消息,同时向APP发送请求开锁消息


2.  Restful Api 短连接实现

摩拜服务器不采用MQTT协议,过程如下
1. 智能锁和摩拜服务器采用私有协议保持长连接
2. 手机APP 通过 Restful API post 智能锁ID 到服务器请求开锁
3. 服务器业务鉴权(是否注册,登录,余额足够),如果鉴权通过则向智能锁发送开锁命令,同时将开锁结果存在数据库
4.返回鉴权结果,如果余额够,则每隔一定周期调用Restful API 查询开锁进度,页面给予刷新,呈现相关结果。


2. 定位摩拜IP,截获开锁过程中的协议

要验证摩拜的实现过程,做靠谱的做法是分析开锁过程中的协议
为此特地找来一辆摩拜单车,用APP开锁,用wireshark 截获开锁过程中的协议,并对协议进行分析


在服务器返回证书的时候可以看到,证书的内容 *.mobike.com ,因此摩拜服务器的IP是 118.89.213.135

经过查询得知IP地址居然是北京腾讯,考虑到腾讯是摩拜的股东,这也就不奇怪了。




3.开过过程协议分析


3.1 开始开锁


3.2 结束开锁



3.3 结论

从开始开锁到结束开锁 手机APP 向 摩拜服务器的443 端口 发送了14次连接请求,如果APP和服务器是长连接,APP大可不必向同一端口反复连接请求,因此有理由相信,摩拜单车开锁过程中采用的是短连接,最有可能是APP 反复调用 RestApi 接口来获取状态

  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值