(JS逆向专栏三)某玩游戏平台网站登入MD5加密

2023-10-27

 声明:

        本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

名称:365玩游戏平台
目标:登入参数
加密类型:MD5
目标网址: http://minilogin.sgty.com/

第一步: 查看接口参数

加密值:password,sign

这里我们一眼就可以看出是用了MD5加密的为什么呢、这里首先要讲为什么每次去请求接口的时候把密码输入为123456,因为输入123456生成的MD5、SHA1等值是常见的我们一眼就能看出来

MD5:e10adc3949ba59abbe56e057f20f883e

SHA1:7c4a8d09ca3762af61e59520943dc26494f8941b

SHA256:8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

SHA512:ba3253876aed6bc22d4a6ff53d8406c6ad864195ed144ab5c87621b6c233b548baeae6956df346ec8c17f5ea10f35ee3cbc514797ed7ddd3145464e2a0bab413

第二步: 搜索参数名

这里我们初步判断完是MD5后我们再看我们要的参数是否都可以实现,我们可以看到这个password应该就是MD5(密码)去加密的 但是这个sign我们不知道是怎么去生成的,所以这里我们去搜索sign这个参数,我们就可以定位到如下 

定位到加密位置后我们再点下登入,我们可以看到传进来的data就是我们输入的明文密码sign=t(k + o.domain)这个o.domain

第一个o.domain的值是static.365wan.com

第二个就是k的值,k的值应该是经过这一段去生成的红色框框部分,我们先看一下生成的k值是怎么样的

这个k值不就是account+MD5(password)+o.domain吗?瞬间豁然开朗

 

加密要的参数都有了我们下来就差一个t方法了,我们老样子进入t这个方法,我们可以看到这里定义了一个t方法传入参数i返回加密后的参数值 我们直接扣下来用就可以了

 

第三步:实现加密参数

var t = function(i) {
    var a = function(a, i) {
        var e, f, b, c, g;
        b = a & 2147483648;
        c = i & 2147483648;
        e = a & 1073741824;
        f = i & 1073741824;
        g = (a & 1073741823) + (i & 1073741823);
        return e & f ? g ^ 2147483648 ^ b ^ c : e | f ? g & 1073741824 ? g ^ 3221225472 ^ b ^ c : g ^ 1073741824 ^ b ^ c : g ^ b ^ c
    }, j = function(i, b, c, e, f, g, h) {
        i = a(i, a(a(b & c | ~b & e, f), h));
        return a(i << g | i >>> 32 - g, b)
    }, d = function(i, b, c, e, f, g, h) {
        i = a(i, a(a(b & e | c & ~e, f), h));
        return a(i << g | i >>> 32 - g, b)
    }, m = function(i, b, c, e, g, f, h) {
        i = a(i, a(a(b ^ c ^ e, g), h));
        return a(i << f | i >>> 32 - f, b)
    }, p = function(i, b, c, e, f, g, h) {
        i = a(i, a(a(c ^ (b | ~e), f), h));
        return a(i << g | i >>> 32 - g, b)
    }, l = function(i) {
        var a = "", b = "", c;
        for (c = 0; c <= 3; c++) {
            b = i >>> c * 8 & 255;
            b = "0" + b.toString(16);
            a = a + b.substr(b.length - 2, 2)
        }
        return a
    }, g = [], h, o, k, q, n, e, f, b, c, g = i, i = g.length;
    i > 32 ? (g = g + "‎".charCodeAt(),
    i = i + 4) : 1;
    h = i + 8;
    o = ((h - h % 64) / 64 + 1) * 16;
    k = Array(o - 1);
    for (n = q = 0; n < i; ) {
        h = (n - n % 4) / 4;
        q = n % 4 * 8;
        k[h] = k[h] | g.charCodeAt(n) << q;
        n++
    }
    h = (n - n % 4) / 4;
    k[h] = k[h] | 128 << n % 4 * 8;
    k[o - 2] = i << 3;
    k[o - 1] = i >>> 29;
    g = k;
    e = 1732584193;
    f = 4023233417;
    b = 2562383102;
    c = 271733878;
    i = g.length;
    for (h = 0; h < i; h = h + 16) {
        o = e;
        k = f;
        q = b;
        n = c;
        e = j(e, f, b, c, g[h + 0], 7, 3614090360);
        c = j(c, e, f, b, g[h + 1], 12, 3905402710);
        b = j(b, c, e, f, g[h + 2], 17, 606105819);
        f = j(f, b, c, e, g[h + 3], 22, 3250441966);
        e = j(e, f, b, c, g[h + 4], 7, 4118548399);
        c = j(c, e, f, b, g[h + 5], 12, 1200080426);
        b = j(b, c, e, f, g[h + 6], 17, 2821735955);
        f = j(f, b, c, e, g[h + 7], 22, 4249261313);
        e = j(e, f, b, c, g[h + 8], 7, 1770035416);
        c = j(c, e, f, b, g[h + 9], 12, 2336552879);
        b = j(b, c, e, f, g[h + 10], 17, 4294925233);
        f = j(f, b, c, e, g[h + 11], 22, 2304563134);
        e = j(e, f, b, c, g[h + 12], 7, 1804603682);
        c = j(c, e, f, b, g[h + 13], 12, 4254626195);
        b = j(b, c, e, f, g[h + 14], 17, 2792965006);
        f = j(f, b, c, e, g[h + 15], 22, 1236535329);
        e = d(e, f, b, c, g[h + 1], 5, 4129170786);
        c = d(c, e, f, b, g[h + 6], 9, 3225465664);
        b = d(b, c, e, f, g[h + 11], 14, 643717713);
        f = d(f, b, c, e, g[h + 0], 20, 3921069994);
        e = d(e, f, b, c, g[h + 5], 5, 3593408605);
        c = d(c, e, f, b, g[h + 10], 9, 38016083);
        b = d(b, c, e, f, g[h + 15], 14, 3634488961);
        f = d(f, b, c, e, g[h + 4], 20, 3889429448);
        e = d(e, f, b, c, g[h + 9], 5, 568446438);
        c = d(c, e, f, b, g[h + 14], 9, 3275163606);
        b = d(b, c, e, f, g[h + 3], 14, 4107603335);
        f = d(f, b, c, e, g[h + 8], 20, 1163531501);
        e = d(e, f, b, c, g[h + 13], 5, 2850285829);
        c = d(c, e, f, b, g[h + 2], 9, 4243563512);
        b = d(b, c, e, f, g[h + 7], 14, 1735328473);
        f = d(f, b, c, e, g[h + 12], 20, 2368359562);
        e = m(e, f, b, c, g[h + 5], 4, 4294588738);
        c = m(c, e, f, b, g[h + 8], 11, 2272392833);
        b = m(b, c, e, f, g[h + 11], 16, 1839030562);
        f = m(f, b, c, e, g[h + 14], 23, 4259657740);
        e = m(e, f, b, c, g[h + 1], 4, 2763975236);
        c = m(c, e, f, b, g[h + 4], 11, 1272893353);
        b = m(b, c, e, f, g[h + 7], 16, 4139469664);
        f = m(f, b, c, e, g[h + 10], 23, 3200236656);
        e = m(e, f, b, c, g[h + 13], 4, 681279174);
        c = m(c, e, f, b, g[h + 0], 11, 3936430074);
        b = m(b, c, e, f, g[h + 3], 16, 3572445317);
        f = m(f, b, c, e, g[h + 6], 23, 76029189);
        e = m(e, f, b, c, g[h + 9], 4, 3654602809);
        c = m(c, e, f, b, g[h + 12], 11, 3873151461);
        b = m(b, c, e, f, g[h + 15], 16, 530742520);
        f = m(f, b, c, e, g[h + 2], 23, 3299628645);
        e = p(e, f, b, c, g[h + 0], 6, 4096336452);
        c = p(c, e, f, b, g[h + 7], 10, 1126891415);
        b = p(b, c, e, f, g[h + 14], 15, 2878612391);
        f = p(f, b, c, e, g[h + 5], 21, 4237533241);
        e = p(e, f, b, c, g[h + 12], 6, 1700485571);
        c = p(c, e, f, b, g[h + 3], 10, 2399980690);
        b = p(b, c, e, f, g[h + 10], 15, 4293915773);
        f = p(f, b, c, e, g[h + 1], 21, 2240044497);
        e = p(e, f, b, c, g[h + 8], 6, 1873313359);
        c = p(c, e, f, b, g[h + 15], 10, 4264355552);
        b = p(b, c, e, f, g[h + 6], 15, 2734768916);
        f = p(f, b, c, e, g[h + 13], 21, 1309151649);
        e = p(e, f, b, c, g[h + 4], 6, 4149444226);
        c = p(c, e, f, b, g[h + 11], 10, 3174756917);
        b = p(b, c, e, f, g[h + 2], 15, 718787259);
        f = p(f, b, c, e, g[h + 9], 21, 3951481745);
        e = a(e, o);
        f = a(f, k);
        b = a(b, q);
        c = a(c, n)
    }
    return (l(e) + l(f) + l(b) + l(c)).toLowerCase()
};

account = '13755558888'
password = '123456'
domain = "static.365wan.com"
k = account+t(password)

sign = t(k+domain)
console.log(sign)

结果展示:

 看完点个赞吧,喜欢的可以点个关注!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(JS逆向专栏三)某玩游戏平台网站登入MD5加密 的相关文章

随机推荐

  • [ACTF新生赛2020]easyre 1

    查壳 是32位 upx壳 脱壳就是找的脱壳软件 我也不是很懂 就说下我的具体操作步骤吧 打开cmd 脱upx壳的软件拖进去 空格 d 空格 有壳文件拖入 解出来了 下面看代码吧 然后就挺简单的 就这点代码 下面那个for循环逆着写就行了 注
  • 欧科云链:2023年5月链上安全事件盘点

    一 基本信息 2023年5月安全事件约造成1800万美元损失 相比上月有显著下降 但安全事件发生频率并未减少 其中针对Jimbos Protocol的攻击造成了约750万美元损失 Arbitrum链的Swaprum项目Rug Pull造成了
  • C++继承-基本语法--继承方式--继承同名成员处理方式--多继承语法--菱形继承

    1 基本语法 继承 减少重复代码 语法 class 子类 继承方式 父类 子类也叫派生类 父类也叫基类 派生类中的成员包括两大部分 一类是从基类继承过来的 一类是自己增加的成员 从基类继承过来的表现其共性 而新增的成员体现了其个性 incl
  • GBASE 8s 并行机制之 PDQ 的基本概念

    Parallel database query PDQ 即并行数据库查询 当处理决策支持类 或数据仓库类查询 查询时 PDQ 特性可以用来极大地提高数据库查询处理的性能 启用PDQ后 GBase 8s 可以将查询操作分布到多个不同的处理器上
  • Kali之MSF的MS08-067漏洞复现详解

    1 MSF初识 MSF即Metasploit Framework 是一个综合性的渗透测试工具 集成信息收集 漏洞扫描 漏洞利用以及提权等功能的工具 目前安装的kali都自带MSF 可以直接在图形界面打开 也可以在kali的终端通过使用命令m
  • 假设检验之T检验、方差检验

    假设检验 spss 差异分析 一 假设检验 1 假设检验的假设 2 原假设与研究假设的关系 3 区分两种假设 4 假设检验统计决策的原理 5 假设检验的步骤 二 t检验 1 单样本T检验 2 独立样本T检验 3 配对样本T检验 三 方差分析
  • 【数据挖掘】从“文本”到“知识”:信息抽取(Information Extraction)

    从 文本 到 知识 信息抽取 这是一个大数据的时代 随着太阳东升西落 每一天都在产生大量的数据信息 人们通常更擅长处理诸如数字之类的结构化数据 但实际情况是 非结构化数据往往比结构化的数据多 当我们从互联网上获取了大量的如文本之类的非结构化
  • 【10天基于STM32F401RET6智能锁项目实战第4天】什么是中断,中断服务函数,系统滴答定时器

    什么是中断 中断服务函数 系统滴答定时器 一 中断的概述 二 外部中断 三 系统滴答定时器 一 中断的概述 二 外部中断 三 系统滴答定时器 如果这篇博文对你有帮助赶紧关注 点赞 收藏吧 感谢你的支持 后面还会有关于中断和系统滴答定时器的相
  • 客户端负载均衡Feign之四:Feign配置

    Ribbon配置 在Feign中配置Ribbon非常简单 直接在application properties中配置即可 如 设置连接超时时间 ribbon ConnectTimeout 500 设置读取超时时间 ribbon ReadTim
  • 涨知识了!这9个鲜为人知的 Python 第三方库真棒!

    欢迎关注 专注 Python 数据分析 数据挖掘 好玩工具 Python 编程充满了机会 它简单明了 拥有许多很酷的库和特色功能 可以使任务变得简单得多 每个 Python 开发人员都必须与热门的第三方库合作 如 NumPy pandas
  • 解决pandas左上角的数据索引、替换

    对于一个dataframe 左上角可以通过如下方式索引到 dataframe columns name 示例代码 import pandas as pd import numpy as np df pd DataFrame np rando
  • Unbuntu20.04(linux)离线安装seata

    一 解压 首先下载seata的安装包 cd usr local目录下执行以下命令 tar zxvf seata server 1 4 0 tar gz 二 修改配置文件 1 修改配置文件registry conf 修改自己的nacos信息
  • CSS更改默认滚动条的样式

    简介 默认滚动条样式又宽又粗 不太美观 一般在网页布局时会将滚动条优化 加一些圆角 改颜色 改宽高等等 此时就需要更改默认滚动条的样式 使用 将下面CSS代码放在全局CSS文件 全局滚动条的样式都会改为自定义设置的样式 只想修改局部某个页面
  • Python异常重试解决方案 Python中异常重试的解决方案详解

    想了解Python中异常重试的解决方案详解的相关内容吗 标点符在本文为您仔细讲解Python异常重试解决方案的相关知识和一些Code实例 欢迎阅读和指正 我们先划重点 python 重试 python 重试机制 python 出错重试 下面
  • ctf-web入门-文件上传

    Web 151 考点 后端无验证 前端校验 查看源码可以发现只能上传png图片 修改为php 写一个php文件上传一句话木马 可以发现已经成功上传 查看上级目录发现可疑文件 查看flag php文件内容得出flag 得到flag Web 1
  • 【python】leetcode中常用函数(持续更新)

    文章目录 1 1 Counter 计数器 1 2 enumerate 索引数组 1 3 defaultdict 缺省字典 1 4 deque 队列 1 5 heapq 堆 1 6 reduce 1 7 map 2 1 数组操作 2 3 字符
  • MATLAB深度学习之LSTM

    MATLAB深度学习之LSTM 深度学习工具箱 net trainNetwork sequences Y layers options clc clear 训练深度学习 LSTM 网络 进行序列到标签的分类 XTrain 是一个包含 270
  • Virtuoso工具基础讲解

    画图基础工具分为 Ic51 启动命令 icfb 渐淘汱 Ic61 启动命令 virtuoso 目前主流 建立电路 建立INV电路 操作指令 Tools library maneger 跳出新窗口 File New cell view 出现n
  • 右击 未出现 vscode打开

    右击 未出现 vscode打开 https blog csdn net Leo zjk article details 120883156 改动三处才有效 一是command要小写 然后Icon是 字符串值 三是最后不是 1 是 v don
  • (JS逆向专栏三)某玩游戏平台网站登入MD5加密

    声明 本文章中所有内容仅供学习交流 严禁用于商业用途和非法用途 否则由此产生的一切后果均与作者无关 若有侵权 请联系我立即删除 名称 365玩游戏平台 目标 登入参数 加密类型 MD5 目标网址 http minilogin sgty co