永久共享单车协议分析

POST http://www.ewbike.com:100/api/ConsumeMgt/RentalConfirm HTTP/1.1
signature: 5335EA21818BC77DE7D396DDD69D36FD
timestamp: 1526993648533
token: 36C4EEBD2CA246C19ACCA8282AE6E432
Accept-Encoding: gzip, deflate
Connection: Closed
platform: android
appversion: 2.1
Content-Type: application/json; charset=utf-8
Content-Length: 66
Host: www.ewbike.com:100
User-Agent: okhttp/3.2.0

{"flagid":"","lockno":"30032175","scantime":"2018-05-22 20:54:19"}


token为令牌,每次登录更新,可以解包获得

最主要的是signature的加密获取。

我们通过反编译可以看到加密部分在com.forever.framework.encrypt类中

永久共享单车协议分析

第一个参数就是post的参数,永久单车的接口post都是以json的格式post出去的,比如

{"flagid":"","lockno":"30032175","scantime":"2018-05-22 20:54:19"}

在经过加密函数的时候,加密函数把他转换成了这样的格式:

 flagid=&lockno=30032193&scantime=2018-05-23 20:56:44

也就是stringBuilder的值,str2就是时间戳了,we.b()我调试的时候答应出来是版本名,比如 1.0 ,或者2.1版本

在post的头也包含了这个参数 appversion: 2.1.


永久共享单车协议分析


最关键的加密部分就是这样了

以下是api接口


1。开锁

POST http://www.ewbike.com:100/api/ConsumeMgt/RentalConfirm HTTP/1.1
signature: 5335EA21818BC77DE7D396DDD69D36FD //签名算法必须  根据版本号时间戳post的参数计算出来
timestamp: 1526993648533    //时间戳 必须
token: 36C4EEBD2CA246C19ACCA8282AE6E432  //令牌必须
Accept-Encoding: gzip, deflate
Connection: Closed
platform: android
appversion: 2.1        //版本必须
Content-Type: application/json; charset=utf-8
Content-Length: 66
Host: www.ewbike.com:100
User-Agent: okhttp/3.2.0

参数(lockno是固定桩的***,在固定桩可以看到):{"flagid":"","lockno":"30032175","scantime":"2018-05-22 20:54:19"}

返回结果: