写在前面:

本文仅限交流学习使用,请勿使用在任何非法商业活动,禁止用于非法用途。否则后果自负。如有侵权,请告知删除,谢谢!


抓包分析:

本文以detailV3接口为例:

POST  https://app.dewu.com/api/v1/h5/index/fire/flow/product/detailV3

{
  "sign": "925981af5b1b6abfb57b795a4553f845",
  "spuId": 1263267,
  "propertyValueId": 29740814,
  "sourceName": "hottest",
  "skuId": 0
}

可以看到请求body里有一个sign加密参数,反编译小程序后用微信开发者工具打开,发现下面这段很可疑:

return e = Object.keys(t).sort().reduce((function (e, r) {return void 0 === t[r] ? e : "".concat(e).concat(r).concat(n(t[r]))}), ""), e += "19bc545a393a25177083d4a748807cc0", Object(r.md5)(e)

大概就是json键值拼接后加上一段常量值,取其md5

果然一致


响应体解密:

请求成功之后发现返回的是一段密文,由于比较长,这里摘抄一部分:

D352B3D6550E7A3443379AF45BA1EAD737CFA4DAC2562A71B3F62D454B07CF7EE813BF029F7677F9473BBBC7A55CC69E40670406D297EE6319467158FD579653C75C861473508C4C0437C5E52232387B52CC9B31849C022495964571ADD9E6615BEB74893EF89C74F62F9DC64A72F96552C56B9C500B74299A74F9C62BF38FCEC24B76D2E3D44611153FA1D42B1EFD9EE38410078B56797A1701D4F4BFE0DEDC50C6F923A41333915D23F1B3D5FC8B9F2D8F4268E89F4D12C9345C8125EAE4F14170AB70A5A4BD20E72339C980A1F6F12AB1716CA7F735DCA8AF566B1A3446F3A5EDF002E7B14236DD7A556A56091DD219FE60B532CBE90524A1A48E85FFF84E13F52CD9C2388D8B52625B7F8D3E9E1EB196EE92266B7609B84DA3F25A6AD861A3A8BFE5EC91EB1DA17214096E8C38879908A7C700D6C08A9E7F0B1CC48B455D40F088C39FD5EE9F6051F19B85CF078BEE7E35AAA7CA488BEC439C9825B7998C00962E7AC39B974EDED334E1796131145A4D42E5DD1BD1863ACD0B3BC42CDA1EFFB587AFE3ED0A37E7D6D738E85187AC5064F289E45486BDD1CE4F5018817D281062493D9CD26A3DC7D212A263E39F9DDF00758D428BAEF6B4D08176DA8C8E0170CD728C3966FC396BE73D6C0D8436DCF615688B506353E2CB67C69BCF1875074A98AA6DD8E9E39C7CB748B50D620286FA03B9D6DD360D2C49CA46C705C530AB7F13D52BD8AB32345AB436E9DBFE37EAEBA4DDB2131CC30023A9F8CB2BF320704AD386A79200B90A2ED21AE229E0227C31F9B2D386E1B94CD57354CC63BFC9D57F88EC7F2126799D94135A731A3C85F673790C31B3DF68C07E460895B179DE9DEE8BE9EB070EBC5ED4589C9569883C009FA50DAB7E400F0724693FD26799DEF1B7399F96DECFCC3C8640B7537F1AAA8E689F2C7106115700DB47D465F59FA3916E3D9F60B818B808E3A6D48F7492802F32EA7BEDF39DC6E68725F787DF2E40092606080EA16EE4816A786A587BA812E4A2F3AB11ED8E57561AACABD49A15BE6DED571CF252CF5A87D995DC1CF413D7845FED1A0748B363855B69FB69A2A2DA69D6C356DD64D143F2BE9329A2737FFE77BB463F2D7EAA4ED89282310693CF34B9E8F6AC13AA23F56E691B39292A20BA9C2CA5F0F35782075BA31B16B80EDA091A125BEEBF58812B10C3A508077363F7DE5404EFA0B073A324D3AA06118DC48EB099976C7FE4D9F36F925219F5479B4B00FC9FB64B8B04078171397667A5722B23FC96EA8FD182C164AE0C90B9EE0D7D9283A441DB8ED374B8CE1DF5360A458151617CB9F6F3A08459C1955CAF7D6EFE15D14CD65DEA5082FDD2E8D792498

我们需要后续的协议操作肯定离不开返回的内容,所以解密响应体非常重要,追踪函数后发现下面这个函数:

function Z(t, n, i, o, a) {var s, c = m,u = g,l = t[u(574, "PY[)")] || t,p = u(575, "Q)iM"),f = e(i ? i[u(576, "BT!N")](",") : ["1", "1"], 2),h = f[0],d = f[1];if ("wx" === o ? s = wx : "qq" === o ? s = qq : "dy" === o && (s = tt), a || (rt = d, s[c(577)](u(578, "A9qh"), d)), "1" === h) {var v;try {var y = S[c(45)][c(579)][u(580, "GVzz")](l),_ = S[u(581, "kYAm")][u(582, "s*Gd")][u(583, "vPY@")](y);if (!(v = S.MM[u(584, "a%bJ")](_, S[u(585, "1VQD")][u(586, "2dNh")][c(235)](n[c(54)](10, 16)), {iv: S[u(587, "PY[)")][c(62)][c(235)](n[u(588, "FCI6")](20, 16)),mode: S[c(589)][c(568)],padding: S[c(569)][u(590, "GA59")]})[u(591, "^My#")](S[c(45)][c(62)])[c(20)]())) try {var b = S[c(45)][c(579)][c(235)](l),x = S[c(45)][c(159)][c(63)](b);(v = S.MM[c(592)](x, S[c(45)][u(593, "Vih(")][u(594, "#Ace")](p[c(54)](10, 16)), {iv: S[u(595, "3M![")][c(62)][u(596, "^My#")](p[c(54)](20, 16)),mode: S[u(597, "3M![")][c(568)],padding: S[u(598, "1VQD")][c(570)]})[u(599, "IL7s")](S[u(600, "O@Bp")][c(62)])[u(601, "QHvF")]()) || (v = t)} catch (e) {v = t}} catch (e) {try {var w = S[c(45)][c(579)][c(235)](l),k = S[c(45)][u(602, "8ByR")][c(63)](w);(v = S.MM[u(603, "h]Ba")](k, S[u(604, "X9C9")][u(605, "JLqm")][c(235)](p[u(606, "BT!N")](10, 16)), {iv: S[u(607, "wh7E")][u(608, "2a!b")][c(235)](p[c(54)](20, 16)),mode: S[c(589)][c(568)],padding: S[u(609, "FCI6")][c(570)]})[c(20)](S[u(610, "X55z")][u(611, "BT!N")])[u(612, "dsUg")]()) || (v = t)} catch (e) {v = t}}return r(v) === c(613) ? JSON[c(63)](v) : v}return r(t) === c(613) ? JSON[c(63)](t) : t
}

通过调用该函数成功解密出如下数据:


得物(毒)加密算法解析 得物逆向相关推荐

  1. 51物联卡解析!购买的物联网卡正确姿势

    现如今,依托物联网行业的支持,物联网卡前景也是越来越好,随之,有越来越多的物联卡代理商相继出现都想分一块物联卡市场的蛋糕,但是代理商越多,行业就越乱,质量问题.失联跑路等各种问题接踵而至,所以我们在购 ...

  2. 阿里云物联网平台物模型数据解析脚本

    在一些物联网业务场景中,由于资源受限或配置较低,设备端不适合直接构造物模型的JSON数据结构体与物联网平台进行直接通信.这种情况下,可以将设备上报的原数据直接透传到物联网平台.物联网平台调用您提交的数 ...

  3. 华为畅享10plus搭在s鸿蒙系统,华为畅享10 Plus智慧功能解析 识物、翻译、购物给你快捷体验...

    华为畅享10 Plus智慧功能解析 识物.翻译.购物给你快捷体验 2019年11月22日 14:10作者:黄页编辑:黄页 分享 作为当前市场上的"千元实力派",华为畅享10 Plu ...

  4. 得物java怎么样_[上海] 得物(毒 app) 国际技术 招聘 高级 Java 开发工程师

    得物(毒 app) 国际技术的内推来了,简历直呈 leader,加快面试流程,一有反馈立即回复. Q: 国际技术是做什么的? A: 负责开拓得物的国际市场,已在香港地区上线 app 开展业务,接下来会 ...

  5. 挚同道合,物所不能!挚物·AIoT产业领袖峰会报名进入倒计时!

    自两年前马云提出"物联的本质是智联网"这一论断,智联网(AIoT)一词便火速走红.它揭示了AI与IoT内在需求的呼应.协同落地的趋势,之后,我们见证了双方携手在科技圈各大领域攻城略 ...

  6. 毒盘解析[JIE版]百毒网盘在线解析

    // ==UserScript== // @name 毒盘解析[JIE版] // @author JIEMO // @description 百毒网盘在线解析 // @version 1.7.0 // ...

  7. 物联卡/物联网卡/物联流量卡的那些事!

    由于物联网卡的使用限制,对于很多人来讲,平时应该还没有机会接触物联网卡,简单来讲,物联网卡就是由三大运营商(移动.联通.电信)提供,基于物联网专网,用来满足智能硬件的联网.管理,以及集团公司的移动信息 ...

  8. Java中4大基本加密算法解析

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一, 大家可以查看RFC2045- RFC2049, 上面有MIME的详细规范. 简单的java加密算法有: BASE64 严格地说, ...

  9. 4G物联卡跟NB物联卡有什么区别

    通过一张看不见的网,将各个物体连接在一起,实现万物互联.智能运转,为人们生活.公司运营提供便利,这就是物联网.在这个物联网中,作为信息数据传输载体的物联卡就显得尤为重要.相信大家在行业中有听说过4G物 ...

  10. 物联卡如何代理 物联卡代理商有哪些?

    近年来随着物联网行业的爆发,越来越多的人都想分一杯物联网的羹,尤其是物联卡行业,物联卡是由三大运营商给企业设备提供的2G/3G/4G流量卡,在物联网市场的价值越来越明显,因此,市场上出现了许多咨询物联 ...

最新文章

  1. 南京晓庄学院大一第二学期计算机数据结构期末考试试卷及答案,南京晓庄学院数据结构题库参考答案.docx...
  2. Matlab与随机变量和样本的数字特征
  3. Badread: simulation of error-prone long reads Badread:模拟容易出错的长读断
  4. 关于JAVA的String类的一些方法
  5. Struts2 action之间相互跳转传递参数
  6. 简记用ArcGIS处理某项目需求中数据的步骤
  7. 三羊献瑞(暴力破解)
  8. VS studio 2019 加 CUDA + CUDNN 开发环境配置
  9. Ubuntu中eclipse端口被占
  10. 上位机与下位机的通讯
  11. Excel VBA生成SQL建表语句
  12. 机器学习 | 泰坦尼克号数据集
  13. 使用ArchR分析单细胞ATAC-seq数据(第一章)
  14. wps中vbe6ext.olb不能被加载问题(附WPS2019宏下载)
  15. 教你App如何上架应用宝----腾讯开放开发平台
  16. 七日年化收益率怎么计算
  17. 超简单的pyTorch训练-onnx模型-C++ OpenCV DNN推理(附源码地址)
  18. springboot集成rabbitmq,根据查询的信息创建多个消息中心和消息队列,并实现不同的消息发送到不同的消息中心
  19. 华为云配置https访问
  20. 初始单片机:51单片机最小系统最全讲解

热门文章

  1. Livezilla on Linux 安装配置教程
  2. 全国气象预报业务产品grib2数据格式解析
  3. 洛谷:P5520 [yLOI2019] 青原樱(数学,普及/提高-)
  4. Ubuntu开启BBR加速
  5. win7系统不能保存文档到服务器,win7 64位系统编辑word文档后无法保存的解决方法...
  6. 【实战】在qgis上查看街景照片( go2streetview谷歌街景、go2mapillary)
  7. CUDA中的Warp Shuffle
  8. android项目图片分辨率转换工具
  9. 浅谈代理服务器的作用
  10. C++入门基础(上)