Skip to content

2foil/Sunny-Running

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 

Repository files navigation

The Secret of Sunny Running

Warning

  本文仅供研究,使用者造成的任何后果由使用者自行承担,与作者无关。

  本文研究成果源于对iOS版Sunny Running的逆向分析。

License

  GPL v3

将要使用到的一些关键值或函数

 API_ROOT

  api根地址,http(s)://client4.aipao.me/api

 UUID

  iOS端是由CFUUID组件生成的通用唯一识别码,不重装APP时保持不变。

 IMEICode

  首次登陆后得到的类似Token的标识,用于后期登陆,生命周期较长。

 token

  每次登录后由服务器发送给客户端,用于标记本次登陆,生命周期猜测20min左右。

 userid

  跑步者在爱跑后台中的id,登陆后由服务器发送给客户端,与请求头中的签名有关。

 timespan和nonce

  这两个参数位于请求头中,用于验证请求。

  timespan为19位时间戳,可用13位时间戳+6位随机数模拟。

  nonce为随机整数,猜测范围-1999999999~1999999999。

 auth和sign

  这两个参数位于请求头中,用于验证请求。

  每处请求中auth和sign算法不尽相同,将在稍后请求流程解析中分析。

 MD5

  MD5加密函数,格式一律为32位大写。

请求流程解析,变量用(xxx)表示。

 微信登录(第一次登录)

  API_ROOT/(null)(此处非变量,就是"(null)")/QM_Users/Login?wxCode=(微信的OAuth字段)&IMEI=(UUID)

  此请求无法模拟,仅用于抓取IMEICode。

  请求头中有一处签名auth。

  auth = "S1" + MD5(MD5(UUID) + ":" + "(null)")

 IMEICode登录

  微信登录后服务器会回传IMEICode,有效期较长,用于长期登录。

  API_ROOT/token/QM_Users/LoginSchool?IMEICode=(你的IMEICode)

  请求头中有一处签名auth。

  auth = "S1"+ MD5(MD5(UUID) + ":" + (上次的token))

 获取用户信息

  API_ROOT/(token)/QM_Users/GS

  请求头中有一处签名auth。auth = "C"+(密文)

  加密方式为aes-128-cbc-pkcs5,明文为当前请求时间(mmss)+UUID。

  key:osldaaasmkldospd  gIv:0392030003920392

  此处(token)为上文提到的token,登录后获取,下同。

 开始跑步

  API_ROOT/(token)/QM_Runs/SRS?S1=(起始纬度)&S2=(起始经度)&S3=(要求长跑距离,男生2000,女生1600)

  请求头中有两处签名auth和sign。

  auth = "B" + MD5(MD5(UUID) + ":;" + token)

  sign = MD5(token + nonce + timespan + userid)

  起始纬度建议范围:30.534485~30.535127 (信部操场)

  起始经度建议范围:114.366687~114.367427 (信部操场)

  请求成功后服务器会回传一个runid,之后的请求会用到。

 结束跑步

  首先生成一个不重复10位小写字母字符串,然后分别替换下面请求参数中的0~9数字。

  用enc函数表示上面的处理过程。

  API_ROOT/(token)/QM_Runs/ES?S1=(runid)&S2=(enc(男生5000,女生4000))&S3=(enc(男生2000,女生1600))&S4=(enc(跑步时间,单位s))&S5=(enc(跑步距离,单位m))&S6=&S7=1&S8=(刚才生成的小写字母串)&S9=(enc(步数))

  请求头中有两处签名auth和sign。

  auth = "B" + MD5(MD5(UUID) + ":;" + token)

  sign = MD5(token + nonce + timespan + userid)

Author

  Jason, iOS Developer & Cracker

About

The Secret of Sunny Running

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published