记录某网站登录js逆向解密过程

8、99安全中心网页post登陆MD5算法分析【Post/Js逆向笔记】 事先说明:发布文章内容,只为自己自学逆向分析做一个记录,方便以后加以巩固学习逆向分析。 本人为逆向学习小白,所以发布的内容都是简单的逆向分析。大佬请高抬贵手! 1、分析的登陆网站地址 https://aq.99.com/V3/NDUser_Login.htm 2、使用工具 chrome浏览器 鬼鬼Js调试工具 3、Post抓包登陆分析 测试账号:Steven2020 密码 a123456 请求时发现 并不是post请求,而是get请求,请求的数据都是附加在get URL... 阅读详情

某网站登录对密码进行加密,对js一窍不通之下硬着头皮找代码,开始想着直接调用js文件,自写html等,由于学艺不精不会搞,为此求助论坛大佬,最后发现加密秘钥就在眼前,只因对加密规则等不熟悉,所以才相见不相识,特此记录

1.追踪发现js文件登录密码进行加密,追到te方法
在这里插入图片描述

2.到这里已经开始懵了
在这里插入图片描述

3.这里其实已经说明了大部分的加密方式,如iv,padding等,都是用的AES的CBC模式(当时对AES的参数等不熟知,只知道publicKey,privateKey)
在这里插入图片描述

  1. 代码就在眼前,但是缺不认识它
    此处有点恶心
  • 这里比较折磨我的是这个秘钥先进行Base64的解析,然后才拿解析后的密码去做aes加密,其实我是看得懂那段代码的,但是由于逆向经验不足,所以在在线加密解密工具处找了老半天

5.最后的最后,我已经把te(‘123456’).toString()已经成功获取,但是由于不知道ciphertext是什么,或者是什么加密规则,卡在了最后一步,机缘巧合(百度)之后发现这是base64和hex的互转,这里十分感谢那篇博客的前端代码给了我灵感,aes加密后可以得到base64或者hex,所以这里还需要在做一次转换(无逆向经验,大佬勿喷),此处贴上网址,也可以自己编码实现.https://base64.guru/converter/decode/hex
在这里插入图片描述

最后解密成功后当然是上我熟悉的java代码…

package cn.fly.code.util;

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;
import org.apache.tomcat.util.codec.binary.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.Security;
import java.util.Arrays;

/**
 * @Description:
 * @author: zhouyou
 * @date: 2022/07/22 09:12
 **/
public class AesUtils {

    // 算法名称
    final static String KEY_ALGORITHM = "AES";
    // 加解密算法/模式/填充方式
    final static String algorithmStr = "AES/CBC/PKCS7Padding";

    private static Key key;
    private static Cipher cipher;
    static boolean isInited = false;
    static byte[] iv = "db2139561c9fe068".getBytes();


    public static void init(byte[] keyBytes) {

        // 如果密钥不足16位,那么就补足.  这个if 中的内容很重要
        int base = 16;
        if (keyBytes.length % base != 0) {
            int groups = keyBytes.length / base + (keyBytes.length % base != 0 ? 1 : 0);
            byte[] temp = new byte[groups * base];
            Arrays.fill(temp, (byte) 0);
            System.arraycopy(keyBytes, 0, temp, 0, keyBytes.length);
            keyBytes = temp;
        }
        // 初始化
        Security.addProvider(new BouncyCastleProvider());
        // 转化成JAVA的密钥格式
        key = new SecretKeySpec(keyBytes, KEY_ALGORITHM);
        try {
            // 初始化cipher
            cipher = Cipher.getInstance(algorithmStr, "BC");
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchProviderException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 加密方法
     *
     * @param content  要加密的字符串
     * @param keyBytes 加密密钥
     * @return
     */
    public static byte[] encrypt(byte[] content, byte[] keyBytes) {
        byte[] encryptedText = null;
        init(keyBytes);
        try {
            cipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
            encryptedText = cipher.doFinal(content);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return encryptedText;
    }

    /**
     * 解密方法
     *
     * @param encryptedData 要解密的字符串
     * @param keyBytes      解密密钥
     * @return
     */
    public byte[] decrypt(byte[] encryptedData, byte[] keyBytes) {
        byte[] encryptedText = null;
        init(keyBytes);
        try {
            cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv));
            encryptedText = cipher.doFinal(encryptedData);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return encryptedText;
    }


    public static void main(String[] args) throws UnsupportedEncodingException, DecoderException {
        String password = "db2139561c9fe068";
        AesUtils aes = new AesUtils();
        // 加解密密钥
        String content = "123456";
        // 加密字符串
        System.out.println("加密前的:" + content);
        System.out.println("加密密钥:" + new String(password.getBytes()));
        // 加密方法
        byte[] enc = encrypt(content.getBytes(), password.getBytes());
        Hex hex = new Hex();
        System.out.println("加密后的内容:" + new String(hex.encode(enc)));
        // 解密方法
        byte[] dec = aes.decrypt(enc, password.getBytes());
        System.out.println("解密后的内容:" + new String(dec));
        String hexString = Hex.encodeHexString(enc);
        System.out.println("解密后的内容:" + hexString);
        //System.out.println(Base642Hex("ld8jqijUmfRHd7yn1Rl5fQ=="));
    }


    /**
     * base642Hex
     * @param guid
     * @return
     */
    public static String Base642Hex(String guid){
        byte[] decoded = Base64.decodeBase64(guid);
        String hexString = Hex.encodeHexString(decoded);
        return hexString;
    }

}

在这里插入图片描述
--------------END-----------------

Python爬虫高阶:微店混淆逆向解密 前言 采集目标 网址: aHR0cHM6Ly93d3cud2VpZGlhbi5jb20vP3NvdXJjZT1ndWFud2FuZw== 工具准备 开发工具:pycharm 开发环境:python3.7, Windows10 使用工具包:requests, node.js,buff 项目解析思路 首先需要找到网页的登录页面的登录接口 登录页面:aHR0cHM6Ly9kLndlaWRpYW4uY29tL3dlaWRpYW4tcGMvbG9naW4vP3NwaWRlcl90b2tlbj04M 阅读详情

相关推荐

JS逆向day02-空中网登录逆向

空中网登录逆向 空中网登录逆向相对来说难度不高,但是也有碰到许多坑,故写下此日志记录爬坑 接口解析 空中网的登录接口采用目前少见的get请求来设置cookie登录,但其中参数是有加密的,我们此次的目标就是逆向出其中的加密方式,首先我们来看一下登录get请求中需要的参数 可以见到基本的参数是显而易见的,username也没有加密,只有password和_两个参数是我们需要探讨的东西 这时候的思...

q6378561的博客 958

JS实现前端密码加密,后台解密

前端JS加密

不积跬步无以至千里 3854

私募pp网-私募排行js逆向

在数据采集的学习过程当中,发现了一个有意思的网站,所以记录一下,仅供学习交流,用于其他用途与作者无关。目标:私募基金当中的列表页数据。

zzp28218的博客 1896

简易易学JS逆向解码

假如我们在测试过程中发现可疑函数时,可以打开调试器 ctrl shift +f全局搜索js文件中出现这函数的地方,辨别出定义这个函数的语句点击左边的“行数”进行断点调试,让网站从上向下运行到我们打了断点的地方停止运行,以便我们了解函数在我们刷新页面时运行情况;后来利用全局搜索发现这个函数是将我们输入的用户名以及加密后的密码(我们输入的)存储到这个函数中,明白这个之后,在之后需要爆破密码时,我们就可以逆向破解它的密码加密方法。1.js指的是当我们运行1.py文件时,它会先运行1.js。

zkaqlaoniao的博客 808

python爬虫登录加简单的js逆向

今天从群里看到一个朋友的求助,本着学习的心开始研究 打开这个web.ext文件 只有这样才能打开目标网页,这个好像一个爬虫作业,不是直接联网的那种网站 最后爬取的url是:http://127.0.0.1/8888 我也不懂是什么原理,继续 打开网页直接就是登录,打开F12登录一次试试,看看密码有没有加密 密码随便写的,只为了抓个包 明文的密码,他还给了个密码本需要自己尝试密码是什么 用上面抓到的包发送请求,找到真的账号密码 impo...

m0_60922723的博客 1825

【安全研究】某黑产网站后台滲透与逆向分析

某黑产网站安全与逆向分析

吴秋霖的博客 7773

【JavaScript 逆向】最新某米商城登录逆向,user,hash 参数解密

某米商城最新加密参数 user 的逆向分析

Yy_Rose的博客 3721

PSF(点扩散函数)与去卷积算法消除图像模糊

本文旨在总结图像处理中使用去卷积的传统方法来进行图像去模糊的相关知识。

m0_53607446的博客 6014

python在逆向中的应用——解码得到flag

条条大路通罗马:python实现解码。

Godchar的博客 2865

导出库的版本_Windows下PaddleOCR在C++中的推理部署(CPU版本)CMake + VS2017

PaddleOCR是一个与OCR相关的开源项目,不仅支持超轻量级中文OCR预测模型,总模型仅8.6M(单模型支持中英文数字组合识别、竖排文本识别、长文本识别,其中检测模型DB(4.1M)+识别模型CRNN(4.5M)),而且提供多种文本检测训练算法(EAST、DB)和多种文本识别训练算法(Rosetta、CRNN、STAR-Net、RARE)。本文将教大家通过PaddleOCR(CPU版...

weixin_31304817的博客 1914

新卡尝鲜记:RTX 5070Ti适配PyTorch生态的实战避坑指南

本文分享了RTX 5070Ti适配PyTorch生态的实战经验。针对CUDA 12.8兼容性问题,详细介绍了安装PyTorch Nightly版本、手动编译xformers库以及寻找PyTorch3D第三方预编译包的完整流程与解决方案,帮助用户快速搭建可用的深度学习开发环境。

weixin_29094775的博客 288

js逆向·找到登录时目标网站的加密算法的几种方式

-文件流程断点 -代码全局搜索 -XHR提交断点 jsEncrypter插件 phantomjs

XXokok的博客 2552

《网络安全自学教程》- 802.1x协议

802.1x协议架构,工作原理/认证流程,认证方式,MAB认证,触发认证的三种方式,EAP报文格式,EAPOL报文格式

wangyuxiang946的博客 2万+

12、同花顺网页Post登陆RSA算法分析【Post/Js逆向笔记】

发布文章内容,只为自己自学逆向分析做一个记录,方便以后加以巩固学习逆向分析。 本人为逆向学习小白,所以发布的内容都是简单的逆向分析。大佬请高抬贵手! 1、分析的登陆网站地址 http://upass.10jqka.com.cn/login?redir=HTTP_REFERER 2、使用工具 chrome浏览器 鬼鬼调试工具 3、Post抓包登陆分析 测试账号 Steven2020 测试密码 a123456 post抓包 提交的数据为 uname: hzpm0Ux9EF..

Steven的杂货铺 2288

【华为OD机试真题 2025C卷新题】855、识文断句 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷新题】855、识文断句 | 机试真题+思路参考+代码分析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为

KJ.JK 1850

2026年运维工程师常见面试选择题

这篇文章总结了30道Linux运维面试常见问题及解析,涵盖基础命令、系统监控、故障排查、数据库、缓存、容器编排等多个方面。主要内容包括: 基础命令使用:如df查看磁盘、free查看内存、top监控进程等 系统监控与故障排查:负载判断、端口检查、进程管理等 中间件相关:Nginx状态码、MySQL主从复制、Redis缓存问题 容器技术:Docker优势、Kubernetes作用 运维理念:高可用、监控告警、发布策略、备份容灾 工作原则:故障处理优先级、运维工程师核心能力 文章不仅提供标准答案,还解析了各命令的

不务正业的猿 193

11、利得金融网页Post登陆RSA算法加密分析【Post/Js逆向笔记】

发布文章内容,只为自己自学逆向分析做一个记录,方便以后加以巩固学习逆向分析。 本人为逆向学习小白,所以发布的内容都是简单的逆向分析。大佬请高抬贵手! 1、分析的登陆网站地址 http://www.leadbank.com.cn/login/ 2、使用工具 chrome浏览器 鬼鬼调试工具 3、Post抓包登陆分析 测试账号 Steven2020 测试密码 a123456 post提交 返回数据 data: d59b937110d12446c0f10347b66e03c501..

Steven的杂货铺 903

低代码部署与管理——OpenClaw智能助手的应用部署与运维(2026技术版)

OpenClaw智能助手的低代码部署与管理平台采用分层架构设计,包含部署工具、环境管理、版本控制等核心模块,支持从开发到生产的全流程自动化部署。该系统通过Docker、Kubernetes等技术实现应用构建和部署,利用Terraform等工具管理多环境配置,并提供完善的监控运维能力。平台针对开发、测试、预生产和生产环境提供差异化配置,确保部署效率和运行可靠性。这种架构设计遵循自动化、可扩展性和安全性原则,显著提升了智能助手应用的部署效率和运维质量。

一键难忘的博客 317

5、中关村在线网页Post登陆MD5算法分析【Post/Js逆向笔记】

事先说明:发布文章内容,只为自己自学逆向分析做一个记录,方便以后加以巩固学习逆向分析。 本人为逆向学习小白,所以发布的内容都是简单的逆向分析。大佬请高抬贵手! 1、分析的登陆网站 http://www.zol.com.cn/ 2、使用工具 chrome浏览器 鬼鬼调试工具 3、开始post分析 测试账号为: Steven2020 密码:a123456 打开Google开发者工具后,抓到post登陆请求 返回出来的fromdata数据为: userid: S...

Steven的杂货铺 447

39、高频 LLC 谐振转换控制系统动态优化算法分析与研究

本文针对高频下LLC谐振转换器动态性能差的问题,提出一种基于谐振电容器充放电估计动态切换时间的优化控制算法。通过改进状态轨迹控制方法,突破传统算法在谐振频率与开关频率相等条件下的限制,并结合新型采样策略有效抑制电压过冲。算法在MATLAB和SABER中完成仿真验证,并搭建基于STM32F407的原型系统进行测试,结果表明该方法显著缩短动态响应时间,提升系统稳定性。研究为高频、高功率密度开关电源的动态优化提供了可行解决方案。

linux6sysadmin的博客 111

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

7、188wan游戏网页Post登陆RSA算法分析【Post/Js逆向笔记】

事先说明:发布文章内容,只为自己自学逆向分析做一个记录,方便以后加以巩固学习逆向分析。 本人为逆向学习小白,所以发布的内容都是简单的逆向分析。大佬请高抬贵手! 1、分析的登陆网站 http://www.188wan.com/ 2、使用工具 chrome浏览器 鬼鬼Js调试工具 3、Post登陆分析 测试账号:Steven2020 测试密码:a123456 在点击登陆最后,不光光只出现了一个post的登陆请求包 还有一个 get的 token 包 {"errn...

Steven的杂货铺 768

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Js基础一】解密前端加密:掌握JavaScript逆向,轻松破解复杂数据!

jsjavaScript是一种弱类型语言,也就是说不需要指定变量的类型,JavaScript的变量类型由它的值来决定, 定义变量需要用关键字 'var', 一条JavaScript语句应该以“;”结尾var 变量名 = 值;//同时定义多个变量可以用","隔开,公用一个‘var’关键字函数就是可以重复使用的代码块, 使用关键字function定义函数。// 函数定义');定义函数时,函数如果有参数,参数放到小括号里面,函数如果有返回值,返回值通过return关键字来返回arguments。

kdayjj966的博客 3159

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JS 逆向加解密:堆栈原理与四大定位技巧

本文介绍了前端逆向工程中定位加解密逻辑的核心方法论。首先强调理解调用堆栈原理的重要性,堆栈记录了函数执行脉络,是逆向追溯数据流的关键。通过四种精准定位方式: 全局搜索:适用于已知加密特征的快速定位 事件断点:从用户操作反向追踪加密逻辑 XHR/Fetch断点:从网络请求逆向加密源头 启动器调试:处理动态加载代码场景 掌握"先理解执行流程,再定位关键代码"的逆向思维,配合堆栈分析和定位技巧,可有效提升逆向效率,避免盲目搜索。

vortex5的博客 3290

对某登录站点的JS前端逆向思路

js逆向一直没有相关了解,虽然目前渗透遇见的不是很多,大多数遇见的要么不加密,要么无法实现其加密流程,不过最近看到了一个较为简单的站点正好能够逆向出来,就做了简单记录。本文旨在介绍js逆向的一些基础思路,希望能对初学js前端逆向的师傅有所帮助。

蚁景网安学院 1372

1.JS逆向简介

JS逆向是指通过分析前端JavaScript代码,理解其加密逻辑和请求流程,以绕过网站反爬机制获取数据的技术。它主要用于还原加密参数、模拟用户行为、破解验证机制等场景。JS加密则是对敏感数据使用Base64、AES等算法进行前端处理,而逆向的核心在于模拟加密过程而非解密。加密技术能保障数据传输安全、保护本地数据、提升密码安全性,常见形式包括请求头/参数加密、Cookie验证等。在逆向实践中,需要识别各种加密方式并在Python中模拟生成过程,特别对于全加密场景具有较高技术挑战。

ningmengjing_的博客 2327
上一篇: 批量删除微博
下一篇: Guava Cache、LoadingCache本地缓存的使用
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值