JS逆向分析某枝网的HMAC加密、wasm模块加密

这篇具有很好参考价值的文章主要介绍了JS逆向分析某枝网的HMAC加密、wasm模块加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这是我2022年学做JS逆向成功的例子,URL:(脱敏处理)aHR0cHM6Ly93d3cuZ2R0di5jbi9hdWRpb0NoYW5uZWxEZXRhaWwvOTE=

逆向分析:

1、每次XHR的GET请求携带的headers包括:

{
    "X-ITOUCHTV-Ca-Timestamp": "1697608868940",
    "X-ITOUCHTV-Ca-Signature": "hGlre/JKwbHvCWLpO5JQdUHF7nP4HiaA5ya1DenJToA=",
    "X-ITOUCHTV-Ca-Key": "89541443007807288657755311869534",
    "X-ITOUCHTV-CLIENT": "WEB_PC",
    "X-ITOUCHTV-DEVICE-ID": "WEB_1c2f8b90-6bd8-11ee-96e0-5bc8d7091aa8"
}

2、该网站的JS文件采用webpack形式。找出关键的加密逻辑:

this.s = function(t, n, a) {                
    var s = i.default.getUser
      , u = i.default.getJWT
      , c = i.default.getDeviceId
      , d = (new Date).getTime()
      , f = {}
      , p = ""
      , _ = "";
    a && (p = (0,
    r.default)(a),
    _ = l.default.stringify(p));
    var m = "".concat(t, "\n").concat(n, "\n").concat(d, "\n").concat(_);
    return f = {
        "Content-Type": "application/json",
        "X-ITOUCHTV-Ca-Timestamp": d,
        "X-ITOUCHTV-Ca-Signature": l.default.stringify((0,
        o.default)(m, "dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX")),
        "X-ITOUCHTV-Ca-Key": "89541443007807288657755311869534",
        "X-ITOUCHTV-CLIENT": "WEB_PC",
        "X-ITOUCHTV-DEVICE-ID": e.__DEVICEID__ || c()
    },
    u() && (f.Authorization = u()),
    s() && s().pk && (f["X-ITOUCHTV-USER-PK"] = s().pk),
    e.__X_FORWARDED_FOR__ && (f["X-Forwarded-For"] = e.__X_FORWARDED_FOR__),
    f
};

3、初步分析:

(1)X-ITOUCHTV-Ca-Timestamp很明显是时间戳。

(2)X-ITOUCHTV-Ca-Key这个值是固定的"89541443007807288657755311869534",可以写死。

(3)"X-ITOUCHTV-CLIENT": "WEB_PC"也是固定写死的。

(4)X-ITOUCHTV-DEVICE-ID:设备UUID,随便撸一串字符串都可以,但该网站要求一定要以 "WEB_"开头,比如:WEB_9527-3547-709394。

(5)X-ITOUCHTV-Ca-Signature:这是至关重要的签名值。

l.default.stringify((0, o.default)(m, "dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX"))

这一行代码前面的 l.default 可以不管了,因此理解为:o.default(m, "dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX");

其中长串字符是密钥,通过 o.default 方法把 m 值和密钥进行加密。

m 是什么?上面几行已写清楚了:

var m = "".concat(t, "\n").concat(n, "\n").concat(d, "\n").concat(_);

m 是由 t、n、d、_值串联起来的字符。通过断点跟踪,可以得知:t 是发送请求的方式(GET、POST、OPTION之类),n 是URL链接,d 是时间戳,至于“_”嘛,是个空字符串,然后每个子字符串以换行符拼接,因此这一行可以简化成 m = t + '\n' + n + '\n' + d + '\n'。

4、算法分析:

通过断点跟踪上面提及的 o.default 方法,o 值来源于“o = a(n(1305))”,是通过WebPack调取第序列号为1305的方法,可以看到

function(e, _t, n) {
    var r;
    e.exports = (r = n(43),
    n(393),
    n(285),
    r.HmacSHA256)
},

也就是使用HmacSHA256算法加密,然后输出BASE64字符串。

找一个Python的HmacSHA256的加密代码尝试一下:

import hmac
from base64 import b64encode
from hashlib import sha256


key = '。。。。。。'  # HMAC-SHA256加密的密钥
text = '。。。。。。' # 加密前的明文字符串
signature = str(b64encode(hmac.new(key.encode('utf-8'), text.encode('utf-8'), digestmod=sha256).digest()), 'utf-8')
print(signature)

输入明文、密钥,生成的结果结果对碰上了,跟开发者工具里看到的请求头的X-ITOUCHTV-Ca-Signature一致,幸好该网站没有魔改加密算法,因此接下来用Python的 hmac 库和 base64 库加密代码就水到渠成了。

2023年10月19日更新:

最近该网站的.js文件作了修改,在所有.js文件里已经找不到上述提到的加密逻辑了,而是通过wasm模块(WebAssembly)进行加密,逆向的难度进一步增强。

我通过逆向wasm、插桩分析,最后得知wasm只是纸老虎,加密算法依然是HmacSHA256而且没有被魔改,只是密钥以及 X-ITOUCHTV-Ca-Key 的值变了。

需要源代码的朋友欢迎联系我(+V:Scott373519)。

参考来源:

Python使用HmacSHA256并用base64加密_sha256+base64-CSDN博客文章来源地址https://www.toymoban.com/news/detail-721340.html

到了这里,关于JS逆向分析某枝网的HMAC加密、wasm模块加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JS逆向实战16——猿人学第20题 新年挑战-wasm进阶

    本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! https://match.yuanrenxue.cn/match/20 首先进去网站,我们查看下接口 发现有两个值是改变的

    2024年02月08日
    浏览(48)
  • 安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作

    1、布置前端页面 2、JS获取提交数据 3、JS对上传格式判断 4、后端对上传数据处理 前端JS进行后缀过滤,后端PHP进行上传处理 架构:html js php - upload.php 安全问题: 1、过滤代码能看到分析绕过 2、禁用JS或删除过滤代码绕过 前端白名单很轻易就能绕过 0、布置前端页面 1、获取

    2024年02月12日
    浏览(44)
  • 文章同步--飞鹤官方商城加密逆向分析(小程序)、蝉管家滑块加密参数逆向分析

    飞鹤官方商城加密逆向分析(小程序)       蝉管家滑块加密参数逆向分析      

    2024年02月12日
    浏览(206)
  • 【JS逆向一】逆向某站的 加密参数算法--仅供学习参考

    逆向日期:2024.02.06 使用工具:Node.js 文章全程已做去敏处理!!!  【需要做的可联系我】 可使用AES进行解密处理(直接解密即可):在线AES加解密工具 1、打开某某网站(请使用文章开头的AES在线工具解密):T9mpG48zIdYFB40hkjsQS4+N5rr4x4mSPHlx5EoT/+s= 2、点击右上角的登录按钮,账号

    2024年02月22日
    浏览(41)
  • 爬虫+RPC+js逆向---直接获取加密值

    免责声明:本文仅做技术交流与学习,请勿用于其它违法行为;如果造成不便,请及时联系... 目录 爬虫+RPC+js逆向---直接获取加密值 target网址: 抓包 下断点 找到加密函数 分析参数 RPC流程 一坨: 二坨: 运行py,拿到加密值 优志愿_2024高考志愿填报系统-新高考志愿填报选科指南 数据往

    2024年04月14日
    浏览(25)
  • 某网站DES加密逆向分析实战

    分析站点 : aHR0cDovL2VpcC5jaGFuZmluZS5jb20v 首先我们提交一下登陆信息: 搜索 j_password 查看加密函数: 把上图搜索到的 encryptPassword 函数拿出来分析一下:

    2024年02月11日
    浏览(29)
  • 某后台管理系统加密参数逆向分析

    在我们日常的渗透中经常会遇到开局一个登录框的情况,弱口令爆破当然是我们的首选。但是有的网站会对账号密码等登录信息进行加密处理,这一步不由得阻碍了很多人的脚步。前端的加解密是比较常见的,无论是 web 后台还是小程序,都常常存在加解密传输,签名防篡改

    2024年02月04日
    浏览(29)
  • JS逆向实战案例2——某房地产token RSA加密

    说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 url1:aHR0cDovL3pmY2ouZ3ouZ292LmNuL3pmY2ovZnl4eC94a2I/c1Byb2plY3RJZD05MzBlMDQ0MmJjNjA0MTBkYTgzNzQ0MmQ5ZGRiN2UwMiZzUHJlU2VsbE5vPTIwMjQwMDA1 url2:aHR0cDovL3pmY2ouZ3ouZ292LmNuL3pmY2ovZnl4eC94bXhrYnh4Vmlldw== 浏览器访问url1得到销控表(楼栋

    2024年01月18日
    浏览(42)
  • JS逆向实战13——某市公共资源交易中心Cookie混淆加密

    \\\"本文地址:https://www.cnblogs.com/zichliang/p/17346860.html 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 网站: aHR0cDovL2xkZ2d6eS5obmxvdWRpLmdvdi

    2023年04月24日
    浏览(60)
  • js逆向·找到登录时目标网站的加密算法的几种方式

    为什么要去找到目标网站的加密密码方法: 为了要把我们的payload正确的带入目标网站的服务器进行逻辑验证,那么就需要知道对方使用的什么加密或者编码规则来处理数据的,比如说我们输入的密码被base64编码了,然后发送给后端,后端会进行解码过后再带入逻辑验证中去

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包