首先是登录接口(获取userhash)
登录接口地址:https://my.ruanmei.com/Default.aspx/LoginUser
post一个json过去:
{
"mail":"",
"psw":"",
"rememberme":"true"
}
登录成功后,会在cookie写入一个user=hash=xxxxxx。
其中这个xxxxx就是后面要用到的hash
这个hash是通过以下方式加密:
加密模式:DES-ECB
填充方式:zeropadding
密钥:(#i@x*l%
IV偏移量:ECB无IV
输出方式:hex
可以解出由用户邮箱或手机号+(U+000C字符)+64位字符串
这个64位字符串,暂时不清楚是由什么方式加密,但是可以肯定的是其中的变量只有密码,不包含账户
各类签到接口的时间戳加密参数:
比如公众号签到:
https://my.ruanmei.com/api/UserSign/WeChatSign?userHash={userhash}&coinHistoryType=157×tamp=1599097691147&{key}={value}
这里有个参数的key和value都是加密的:
首先是密钥串:hd7%b4f8p9)*fd4h5l6|)123/*-+!#$@%^*()_+?>?njidfds[]rfbcvnb3rz/ird|opqqyh487874515/%90hggigadfihklhkopjj`b3hsdfdsf84215456fi15451%q(#@Fzd795hn^Ccl$vK^L%#w$^yr%ETvX#0TaPSRm5)OeG)^fQnn6^%^UTtJI#3EZ@p6^Rf$^!O$(jnkOiBjn3#inhOQQ!aTX8R)9O%#o3zCVxo3tLyVorwYwA^$%^b9Yy$opSEAOOlFBsS^5d^HoF%tJ$dx%3)^q^c^$al%b4I)QHq^#^AlcK^KZFYf81#bL$n@$%j^H(%m^ $_day=date("j");也就是js的getDate(),是当月的第几天,前面不补0 然后有个之家经过某种算法出来的时间戳数字: 之家时间戳:round($timestamp/50000)*$_day*3
参数Key的加密方式:
deskey=密钥串[int(之家时间戳%100000000/10000000)*$_day]+密钥串[int(之家时间戳%10000000/1000000)*$_day]+密钥串[int(之家时间戳%1000000/100000)*$_day]+密钥串[int(之家时间戳%100000/10000)*$_day]+密钥串[int(之家时间戳%10000/1000)*$_day]+密钥串[int(之家时间戳%1000/100)*$_day]+密钥串[int(之家时间戳%100/10)*$_day]+密钥串[int(之家时间戳%10)*$_day]
destext=密钥串[int(之家时间戳%10000/1000)*$_day]+密钥串[int(之家时间戳%1000/100)*$_day]+密钥串[int(之家时间戳%100/10)*$_day];
通过deskey和destext来进行DES加密
参数Values的加密方式:
deskey:和上面的一样
destext:时间格式,例如"2020-09-03 07:27:01"
通过deskey和destext来进行DES加密
这里的DES加密:
加密模式:DES-ECB
填充方式:zeropadding
密钥:deskey
IV偏移量:ECB无IV
输出方式:hex
加密字符串:destext
各类签到接口的endt参数(已废弃):
比如IT之家签到:
https://my.ruanmei.com/api/usersign/getsigninfo?userhash={userhash}&appver=630&endt={endt}
这里的endt参数,是通过一下方式加密:
加密模式:DES-ECB
填充方式:zeropadding
密钥:HCa%Y|7#
IV偏移量:ECB无IV
输出方式:hex
加密字符串由一个时间格式加密:2020-08-24 06:55:54
云日历登录的aesuserhash:
API:https://my.ruanmei.com/api/user/getaccesstoken?aesuserhash=urlencode({aesuserhash})&withuserinfo=true&extra=10|mytime_windows&appver=1.29&platform=windows
这个aesuserhash是由以下方式加密生成:
加密模式:AES-CBC
填充方式:pkcs5
密钥:&eVcDCpYNwe2T05T
IV偏移量:f4f@&$CKH$!X8mpX
输出方式:base64
加密字符串是由账户+(U+000C字符)+MD5(密码)组成
注意加密后需要urlencode传入
文中提到的(U+000C字符),编辑器里是看不到的,可以尝试直接在这里复制到代码内:()
就是括号中间的上箭头
好评
大佬之前的签到页面怎么没了啊
之前那个添加自动签到的网址是什么呀