贵州葫芦娃加密解密思路
一、背景
账号不多,但是懒得天天点开小程序去预约,因此尝试用脚本来代替人工预约,于是有了本文。
二、抓包请求,梳理必要条件
葫芦娃预约
#贵旅优品##新联惠购##空港乐购##贵盐黔品##遵航出山##乐旅商城##航旅黔购#
#小农##空港商城##贵盐##遵航出山##贵州酒店##机场云商##贵旅优品中签##小农中签##机场云商中签##新联惠购中签##贵盐中签##空港乐旅中签##遵航出山中签##航旅黔购中签##黔寻积分#
简单的抓了个包,抓取内容不重要,看了下请求头,图示红框请求头为葫芦娃家特有的加密的变量。
接下来破密就围绕这几个变量来处理。
三、直捣黄龙,小程序逆向
贵州葫芦娃小程序,据观察来看,一体n位,即一套代码用多个程序,只是样式微调,于是挑了一个小程序(新惠联购)进行逆向。
看了小程序的文件结构,根据公共方法里的http请求js文件,找到了请求头的加密方法(文件:utils\encryption.js)
查看文件得知,相关的请求头变量也有,所以加密方法找到了。
四、结果
根据小程序逆向得来的加密方法文件,
出现了一种加密格式hmac-sha256,
以及一种编码方式base64
同时出现了ak、sk关键词,在文件里也找到了自带的相关消息
根据知识量,大胆的猜测,葫芦娃的后端是采用AK/SK鉴权
说回主题,根据加密方法,照猫画虎,得到以下成果:
X-HMAC签名:
1、先编写一条字符串,格式:
请求方式(GET/POST) + "\n" + 请求Api的路径(不含域名,如https://gw.huiqunchina.com/front-manager/api/customer/promotion/channelActivity 中的“/front-manager/api/customer/promotion/channelActivity + "\n\n”) + ak + "\n" + 格式化后的(date也就是X-HMAC-Date) + "\n"
2、然后将上面的字符串为加密值,sk为key进行hmac-sha256加密
X-HMAC-ACCESS-KEY: 【ak的值,随着可能会小程序热更新改变】
X-HMAC-ALGORITHM: "hmac-sha256" -》常量
X-HMAC-DIGEST: 【以请求的数据为加密值,sk为key进行hmac-sha256加密】
X-HMAC-Date: Mon, 31 Jul 2023 13:29:04 GMT-》一种特定格式的GMT时间
注:以上hmac-sha256加密与base64编码,均是使用crypto-js库的加密方法,其方法与普通加密方法似乎有出入的,复现时注意一下。