JS逆向从入门到精通:7个高难度解密案例带你突破瓶颈

Py爬虫之 js逆向实战:某案例 在渗透学习的过程中,我们在测试未收权访问中,包括我们进行fuzz,都是需要获取js文件中的接口,然后进行进一步利用的,当然说这么多的根本原因是,越来越发现网络安全是一个全栈的学习路线,需要学习各种各样的知识,来提高自己的挖掘和利用能力,于是有了今天的这篇文章. 阅读详情

第一章:JS逆向初探:理解加密与混淆的本质

在现代Web应用中,JavaScript不仅是前端交互的核心,也常被用于保护敏感逻辑。为了防止代码被轻易分析和篡改,开发者广泛采用加密与混淆技术。这些手段虽不改变程序功能,却极大增加了逆向分析的难度。

加密与混淆的区别

  • 加密:将源码通过算法转换为密文,运行时需解密后执行,典型如字符串Base64编码配合动态eval
  • 混淆:通过重命名变量、插入冗余代码、控制流扁平化等手段使代码难以阅读,但逻辑不变

常见混淆特征识别

以下是一段典型的混淆代码示例:

// 混淆前
function login(user, pass) {
  return user + ':' + pass;
}

// 混淆后
var _0x1a2b = ['login', 'join', ':'];
(function(_0x3c4d5e, _0x6f7g8h) {
  var _0x9i1j2k = function(_0xal1m) {
    _0xal1m = _0xal1m - 0x0;
    return _0x1a2b[_0xal1m];
  };
  console[_0x9i1j2k('0x1')](_0x9i1j2k('0x0'));
}(_0x1a2b, 0x0));
上述代码使用了字符串数组抽取、函数封装和十六进制变量名,是典型的混淆模式。

逆向分析的基本流程

步骤操作说明
1. 静态分析使用浏览器开发者工具查看源码结构,识别混淆特征
2. 动态调试设置断点,观察变量变化与调用栈
3. 代码还原手动或借助工具(如JS Beautifier)格式化并去混淆
graph TD A[原始JS代码] --> B{是否加密?} B -- 是 --> C[解密处理] B -- 否 --> D[进入混淆判断] D --> E[控制流扁平化] E --> F[字符串抽取] F --> G[调试器防护] G --> H[逆向还原]

第二章:常见加密算法的识别与破解

2.1 Base64变种编码的特征分析与自动化解码

Base64变种编码广泛应用于绕过内容过滤机制,其核心特征在于字符表的替换或填充规则的调整。常见的变种包括URL安全Base64、Base62以及自定义字符映射。
典型变种特征对比
类型字符表变更填充符
标准Base64A-Z,a-z,0-9,+,/=
URL安全Base64用-和_替代+和/=或省略
Base64++自定义乱序字符表多重=或特殊符号
自动化解码逻辑实现

import base64
def decode_variant_b64(data):
    # 尝试标准解码
    try:
        return base64.b64decode(data)
    except:
        pass
    # 替换URL安全字符并重试
    data = data.replace('-', '+').replace('_', '/')
    padding = len(data) % 4
    if padding:
        data += '=' * (4 - padding)
    return base64.b64decode(data)
该函数通过异常捕获与字符替换策略,实现对多种变种的兼容性解码,适用于模糊识别场景。

2.2 深入AES与RSA在前端加密中的应用与密钥提取

在现代前端安全体系中,AES与RSA常被结合使用以兼顾性能与安全性。AES适用于大量数据的对称加密,而RSA则用于安全地交换AES密钥。
前端AES加密示例

// 使用CryptoJS进行AES加密
const encrypted = CryptoJS.AES.encrypt('敏感数据', '密钥').toString();
console.log(encrypted);
该代码将明文通过AES算法加密为密文,其中'密钥'应由安全方式生成或获取,实际项目中建议使用PBKDF2派生密钥。
RSA密钥封装流程
  • 服务端生成RSA密钥对,公钥下发至前端
  • 前端使用公钥加密AES密钥
  • 加密后的AES密钥通过HTTPS传输回服务端解密
此混合加密模式有效规避了对称密钥传输风险,同时保留了AES的高效性。

2.3 基于AST分析还原被混淆的加密函数逻辑

在逆向分析混淆后的JavaScript代码时,直接阅读源码往往难以理解其真实逻辑。通过将代码解析为抽象语法树(AST),可系统性地识别和重构加密函数的执行流程。
AST的基本结构与节点类型
JavaScript引擎将代码转换为树状结构,其中每个节点代表语法元素,如变量声明、函数调用或表达式运算。例如,一个被混淆的异或加密函数可能表现为多个嵌套的BinaryExpression节点。

function _0x1a2b(c, k) {
    let r = '';
    for (let i = 0; i < c.length; i++) {
        r += String.fromCharCode(c[i] ^ k);
    }
    return r;
}
该函数通过对字符码逐位异或密钥实现简单加密。在AST中,^操作对应BinaryExpression节点,可通过遍历器捕获并提取密钥k的传入值。
自动化还原流程
  • 使用esprima或Babel Parser生成AST
  • 遍历函数体,识别循环与位运算模式
  • 提取常量密钥并重构可读函数

2.4 利用浏览器调试技巧动态捕获加密入口点

在逆向分析前端加密逻辑时,动态调试是定位加密入口的关键手段。通过浏览器开发者工具设置断点,可实时观察函数调用栈与变量变化。
设置断点捕获加密调用
使用“事件监听器断点”中的 XHR/fetch Breakpoints,可在网络请求发出前暂停执行,便于追踪加密函数的调用上下文。
Hook 加密函数入口
通过重写全局函数或对象方法,插入日志输出:
const originalEncrypt = window.encrypt;
window.encrypt = function(data) {
    console.debug('加密参数:', data);
    const result = originalEncrypt.apply(this, arguments);
    console.debug('加密结果:', result);
    return result;
};
该代码通过代理模式拦截原始加密函数,输出输入输出数据,便于分析加密逻辑触发时机与参数结构。

2.5 实战演练:破解某电商网站登录密码加密机制

在逆向分析某电商网站登录流程时,发现其前端对密码进行了多层加密处理。通过浏览器开发者工具抓包与断点调试,定位到核心加密函数。
加密函数逆向分析
function encryptPassword(pwd) {
    let salt = 'x9A@fG3!';
    pwd = CryptoJS.MD5(pwd + salt).toString();
    pwd = btoa(pwd); // Base64编码
    return pwd.substring(0, 10) + '!' + pwd.substring(10);
}
该函数首先将用户输入密码与固定盐值拼接后进行MD5哈希,再执行Base64编码,最后插入分隔符。盐值硬编码在JS中,存在泄露风险。
请求参数结构
  • username: 用户名(明文)
  • encrypted_pwd: 经过上述算法处理的密码
  • token: 来自登录页的CSRF令牌

第三章:JavaScript代码混淆技术深度剖析

3.1 控制流平坦化原理与去混淆还原策略

控制流平坦化是一种常见的代码混淆技术,通过将正常的线性执行流程转换为由调度器和状态机驱动的非线性结构,大幅增加静态分析难度。
平坦化核心结构
混淆后的函数通常被拆分为多个基本块,并通过一个主分发器循环调度执行:

var state = 0;
while (true) {
  switch (state) {
    case 0:
      doSomething();
      state = 2;
      break;
    case 1:
      return;
    case 2:
      compute();
      state = 1;
      break;
  }
}
上述代码中,state 变量控制执行路径,原本顺序执行的逻辑被“压平”到单一循环中,破坏了原有的控制流层次。
去混淆策略
常见还原方法包括:
  • 静态符号执行:追踪状态变量赋值与跳转条件
  • 图结构重建:将每个 case 块视为节点,构建控制流图(CFG)
  • 模式匹配:识别并替换标准平坦化模板
结合动态插桩可有效恢复原始执行顺序。

3.2 字符串加密与反压缩技术的手动与自动化处理

在逆向分析中,字符串常被加密或压缩以增加静态分析难度。手动处理适用于少量关键数据,而自动化则通过脚本批量还原。
常见加密与压缩组合
  • AES + Gzip:高强度加密配合高效压缩
  • XOR + Base64:轻量级混淆,常见于恶意软件
  • RC4 + Deflate:流加密与无损压缩结合
自动化解密示例(Python)
import base64, zlib
def decrypt_and_decompress(data):
    decoded = base64.b64decode(data)
    decompressed = zlib.decompress(decoded)
    return decompressed.decode('utf-8')
该函数先Base64解码,再使用zlib解压,最终还原原始字符串。参数data为经过Base64编码的压缩数据,常用于网络传输中的载荷还原。
处理流程对比
方式速度灵活性适用场景
手动慢高核心逻辑分析
自动快低批量数据处理

3.3 实战案例:逆向某反爬平台的多层混淆脚本

在某反爬系统中,前端通过多层字符串混淆与动态函数调用生成签名参数。初始观察发现,关键逻辑被包裹在自执行函数中:

(function() {
  var _0x12ab = ['push', 'slice', 'join', 'toString'];
  var _0x34cd = function(index) {
    return _0x12ab[index];
  };
  window.sign = function(data) {
    var stack = [];
    stack[_0x34cd(0)](data.length);
    return stack[_0x34cd(1)](0)[_0x34cd(2)]('-');
  };
})();
上述代码使用数组索引替代字符串字面量,实现基础混淆。通过静态替换 `_0x34cd(0)` 为 `'push'` 可还原逻辑。
动态解密流程分析
该平台还引入定时器触发二次加密:
  • 首次加载时注册延迟任务
  • 利用 atob 解码嵌入的 Base64 脚本
  • 通过 eval 注入新函数到作用域
结合浏览器断点调试与 AST 解析工具,可逐层剥离混淆层,最终提取核心签名算法。

第四章:高级反检测机制绕过技巧

4.1 调试器检测与禁用:console断点、debugger对抗

在前端安全防护中,防止代码被轻易调试是关键一环。攻击者常通过浏览器开发者工具设置`console`断点或利用`debugger`语句中断执行流程,进而分析逻辑或绕过验证。
检测并禁用console输出
可通过重写`console`方法实现屏蔽:

if (typeof console !== 'undefined') {
  ['log', 'warn', 'error'].forEach(method => {
    console[method] = () => {}; // 清空输出行为
  });
}
此代码将`console.log`等方法重定向为空函数,有效隐藏敏感日志信息。
对抗debugger断点
定期检查时间差可识别调试器存在:

setInterval(() => {
  const start = performance.now();
  debugger;
  const end = performance.now();
  if (end - start > 100) {
    // 检测到长时间停滞,疑似人为断点
    document.body.innerHTML = '调试被禁止';
  }
}, 1000);
当`debugger`语句被执行且被暂停时,时间差显著增大,系统即可触发响应机制。

4.2 环境指纹识别绕过:WebDriver、Canvas、字体指纹

现代反爬虫系统广泛依赖浏览器环境指纹进行设备识别,其中 WebDriver、Canvas 渲染和字体枚举是三大关键维度。
WebDriver 检测与绕过
自动化工具常暴露 navigator.webdriver 为 true。可通过启动参数隐藏:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
driver = webdriver.Chrome(options=options)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => false});")
上述代码通过禁用自动化特征并重写属性实现隐蔽。
Canvas 指纹扰动
网站通过绘制文本并提取像素哈希值识别设备。使用 Puppeteer 可注入噪声:

await page.evaluateOnNewDocument(() => {
  HTMLCanvasElement.prototype.getContext = () => ({
    fillText: () => {},
    getImageData: () => ({ data: new Uint8ClampedArray(10000) })
  });
});
该脚本拦截绘图上下文,返回伪造图像数据,干扰指纹生成。
字体指纹混淆
  • 真实字体列表暴露操作系统类型
  • 可通过虚拟化常用字体名称模拟多样性
  • 推荐禁用字体枚举 API 或返回固定集合

4.3 动态生成代码与eval执行的监控与拦截

在现代JavaScript运行时环境中,动态代码执行(如通过eval、new Function)常被滥用,带来严重的安全风险。为防范恶意行为,需对代码生成过程实施有效监控。
常见动态执行方式
  • eval("console.log('x')"):直接执行字符串代码
  • new Function('a', 'return a + 1'):构造函数式动态编译
  • setTimeout("alert(1)", 100):间接调用支持字符串执行
拦截策略实现
通过重写原生方法可实现前置审计:
const originalEval = window.eval;
window.eval = function(code) {
  console.warn("拦截到eval调用:", code);
  if (/\bdocument\.cookie\b/.test(code)) {
    throw new Error("禁止访问敏感API");
  }
  return originalEval.call(this, code);
};
上述代码通过代理window.eval,在执行前检查是否包含敏感操作(如读取cookie),实现细粒度控制。类似机制可扩展至Function构造器等其他入口。

4.4 实战突破:应对某金融平台的高强度JS运行时保护

在逆向某金融平台的前端安全机制时,发现其采用多层混淆与运行时校验结合的方式,动态检测执行环境完整性。
核心反调试技术分析
平台通过 Function.prototype.toString 拦截和定时器堆栈检测判断调试行为。关键代码如下:

// 拦截函数字符串化
const originalToString = Function.prototype.toString;
Function.prototype.toString = function() {
  if (this === debuggerHook) {
    throw new Error('Debug detection triggered');
  }
  return originalToString.call(this);
};
该逻辑用于识别是否对敏感函数进行 toString 调用,常用于调试探查。
绕过策略:环境虚拟化
采用 Puppeteer 配合 JavaScript 代理对象伪造运行时上下文:
  • 重写 console API 防止输出暴露
  • 模拟 window.navigator 属性链
  • 劫持 setInterval 实现反检测延迟
通过构造隔离的 JS 执行沙箱,成功规避运行时完整性校验,实现数据稳定抓取。

第五章:从逆向思维到安全防御的全面升华

以攻促防:红队视角下的漏洞挖掘
在真实渗透测试中,攻击者常利用逻辑缺陷绕过身份验证。例如,通过修改JWT令牌中的alg字段为none,可使部分实现忽略签名验证。

// 漏洞示例:不安全的JWT解析
const jwt = require('jsonwebtoken');
jwt.verify(token, false, { algorithms: ['none'] }); // 危险配置
构建纵深防御体系
企业应部署多层防护机制,避免单点失效导致全局沦陷。典型架构包含以下层级:
  • 网络层:防火墙 + 入侵检测系统(IDS)
  • 应用层:WAF + 输入过滤 + 输出编码
  • 数据层:字段级加密 + 访问审计日志
  • 终端层:EDR解决方案 + 行为监控
自动化响应与威胁狩猎
结合SIEM平台与SOAR技术,可实现异常行为自动阻断。下表展示某金融企业针对暴力破解的响应策略:
触发条件响应动作执行时间
5分钟内10次失败登录IP临时封禁 + 用户锁定<30秒
来自高风险地区访问强制MFA验证<10秒
流程图:事件响应闭环
监控告警 → 分析研判 → 隔离处置 → 取证溯源 → 策略更新
定期开展对抗演练,模拟APT攻击路径,验证防御链有效性。某电商企业在模拟供应链投毒攻击后,将第三方组件扫描纳入CI/CD流水线,缺陷发现率提升70%。
极验V4点选验证码逆向分析:从原理到自动化实战 验证码作为网络安全的基础防线,其核心原理在于区分人类用户与自动化程序。行为式验证码通过分析用户交互过程中的鼠标轨迹、点击时序等生物特征,构建动态风控模型,极大提升了机器模拟的难度。这项技术的工程价值在于为高安全场景(如登录、交易)提供了可靠的防护层。在自动化测试、数据采集研究等合规场景下,理解其工作机制有助于突破技术瓶颈。本文以极验V4点选验证码为例,深入剖析其动态密钥、前端混淆、行为建模等安全机制,并详细讲解如何通过逆向工程定位加密函数、模拟人类轨迹,最终设计出基于Playwright的浏览器自动化方案, 阅读详情

相关推荐

CTF竞赛入门指南:从Web安全与逆向工程开启网络安全实战之路

网络安全的核心在于理解系统漏洞与攻防原理。在实战环境中,通过模拟攻击与防御,可以深入掌握漏洞挖掘、代码审计和协议分析等关键技术。CTF(Capture The Flag)竞赛正是这样一个理想的训练场,它将抽象的安全概念转化为具体的挑战任务,让学习者在解决实际问题的过程中锻炼工程实践能力。对于初学者而言,Web安全和逆向工程是两个极佳的切入点。Web安全聚焦于应用层漏洞,如SQL注入和XSS,需要理解HTTP协议、前后端交互及数据流处理;而逆向工程则侧重于程序分析,要求具备汇编语言阅读和调试能力,以解密程序逻

weixin_33889245的博客 465

JS逆向-将接口返回的加密数据进行解密

按下F5刷新页面之后,可看到程序运行到断点处会停止,然后每按下一次F8,在下方控制台输入【Object(d.a)(t.encrypt_data)】并回车,可看到在这个加密流程里每次打印的数据都不一样,说明网页里的数据都是使用的这个函数。如下图,表格里的数据是通过【productListVip】这个接口进行请求的,而且看预览里的返回参数,【encrypt_data】是一段字母+符号+数字,也就是被加密的数据。此时我们已找完解密函数,我们新建一个HTML页面,在编辑器里尝试一下解密。

wgz1264924388的博客 2万+

CTF技能树构建:从Web安全到逆向工程的实战能力培养路径

网络安全竞赛(CTF)是培养实战能力的重要途径,其核心在于构建系统化的技能体系。CTF技能树涵盖了Web安全、逆向工程、密码学、杂项和二进制漏洞利用等多个技术领域,每个领域都涉及从基础概念到高级应用的完整知识链。掌握这些技能不仅需要理解漏洞原理,更需要通过工具链和攻击者思维将理论转化为实战能力。例如,在Web安全中,代码审计和SQL注入的利用是常见考点;而在逆向工程中,静态分析与动态调试的配合至关重要。这种系统化训练能够有效提升在真实攻防场景中的问题解决能力,为从事安全研究、渗透测试等职业打下坚实基础。

angw337679452的博客 418

【万字解析】JS逆向由浅到深,3个案例由简到难,由练手到项目解析(代码都附详细注释)

假设有一个网站,它使用了JavaScript来进行表单验证。当用户在登录表单中输入用户名和密码后,点击登录按钮时,JavaScript代码会对输入的用户名和密码进行验证,如果验证通过,则允许用户登录,否则会提示错误信息。

五包辣条的博客 1万+

CTF实战解题思维框架:从信息收集到漏洞利用的50+核心思路

在网络安全和计算机系统学习中,漏洞分析与利用是核心技能之一,其本质在于理解软件运行原理并发现其设计或实现中的缺陷。从技术原理层面,无论是Web应用、二进制程序还是逆向工程,安全问题的根源往往可归结为输入验证、内存管理或逻辑处理不当。掌握系统化的分析方法和利用技术,对于提升安全攻防能力、理解系统底层机制具有重要价值。在CTF竞赛等实战场景中,这体现为一套从信息侦察、威胁建模到漏洞利用的通用解题框架。本文围绕SQL注入绕过、反序列化漏洞、ROP链构造、格式化字符串利用等高频技术点,结合具体案例,系统梳理了覆盖W

diaogan4202的博客 1420

分布式爬虫架构设计与IP代理池实战全解析

在互联网数据采集领域,面对百万级页面和严苛的反爬限制,单机爬虫往往力不从心。分布式爬虫通过任务队列拆分、多节点调度与去重策略,能够实现高并发下的稳定抓取;而IP代理池作为对抗IP封禁的核心组件,负责代理的采集、校验、评分与动态分配。合理设计分布式架构与代理池联动机制,可显著提升数据采集系统的可用性和可扩展性。本文结合电商价格监控场景,深入解析分布式爬虫的模块划分、Scrapy框架的分布式改造、代理池构建流程、反爬对抗策略及全链路监控方案,为大规模数据采集工程落地提供可参考的实践路径。

weixin_34023982的博客 188

【逆向基础】JS逆向入门:小白也可以看懂

出于对数据安全的考虑,现代化的网站/APP通常会对数据接口做加密处理。而分析这些接口的加密算法并实现模拟调用的过程就叫做「逆向」。逆向对于爬虫工程师来说是一个永远绕不开的话题,也逐渐成为各企业招聘时,JD 中的一个必备技能要求。本文就以某在线翻译网站接口加密参数分析为案例,分享一下网页爬虫的逆向原理、分析思路和分析过程。本文通过一个案例分享了爬虫逆向的原理和思路,由于案例比较简单,仅通过在网页 JS 资源文件里直接搜索关键词就能找到对应的加密算法。

liaozp88的博客 1万+

爬虫JS逆向思路 - - 扣JS(data解密)

o函数 a.a.decode函数 我们都已经将函数给复制出来了 最后一步就是 把之前浏览的加密参数复制给一个变量 然后执行复制在pycharm中的 function s(e)主函数。👉接下来 看里面return的函数结构 发现 a.a.decode就是对e进行加密的函数 然后最外层就是o函数对整个进行处理 那么我们先选中a.a.decode进入这个函数的结构。👉接下来 先将 这个function s(e)主函数 复制出来 并且进行一些小的改写 因为a.a是可以不需要的。

ZTLJQ的博客 7408

JS逆向基础知识

elements是前端调式页面的,比如页面的每一个元素都是有一个元素标签的,我们修改的不是服务器,是服务器推送给我们的本地的一个文件,没有任何实际的意义。请求头当中的包都是可以自定义的,如果请求头当中包含Accept-Encoding的话,表示浏览器会对我们发送的请求进行ZIP压缩,然后发给服务器,服务器接收到这个之后,会对他进行解压,然后进行处理。在做JS逆向的时候,是要做不同的下断测试,要求大家的是每种断点都要会,JS逆向光会一种是不够的,最起码拿下一个网站要会三种技巧,都要hold住。

山兔的博客 6257

js逆向案例一二

目录一、请求参数|Cookie|Referer校验(⭐)1、案例1_有道翻译2、案例2_百度翻译3、案例2_建筑市场 一、请求参数|Cookie|Referer校验(⭐) 难度系数一颗星,简单的js逆向,适合初级新手练习,每个案例1小时内可完成破解 涉及到md5、aes、des、rsa,本地需安装node环境,然后再安装crypto-js库: npm install crypto-js 1、案例1_有道翻译 (1)案例网址: 点击网址 (2)案例反爬点:请求参数salt、sign、Its、bv

十一姐的博客 8245

从零开始,手把手教你用RTL代码设计一个简单的8位CPU(附状态图与ALU设计)

本文详细介绍了如何从零开始设计一个简单的8位CPU,包括状态机设计、ALU实现与RTL编码实战。通过具体的指令集分析、状态图设计和Verilog代码示例,帮助读者深入理解CPU工作原理,并掌握RTL代码编写技巧。特别适合计算机系统学习者和硬件设计爱好者。

weixin_30847063的博客 321

JS逆向-基础入门案例(详细步骤)

免责声明:本文仅用于学习和研究目的,不鼓励或支持任何非法活动。所有技术内容仅供个人技术提升使用,未经授权不得用于攻击、侵犯或破坏他人系统。我不对因使用本文内容而引起的任何法律责任或损失承担责任。所谓js逆向,常说补环境,扣代码。首先找到加密数据的入口,比如登录密码通过一个函数加密的,那这就是加密的入口,函数肯定还会调用其他函数,我们要将其缺失的函数,变量等补齐,扣下来就好了。(补环境)这样就能让其主加密函数执行了呀。(我们就拿到web加密某字段的代码了)基基础案例,入门案例,大佬跳过~

金灰的博客 6349

从零到一:基于Blazor和Elsa Workflows的工作流系统开发实战

本文详细介绍了如何利用Blazor和Elsa Workflows构建高效的工作流系统,从技术选型到生产环境部署,涵盖动态工作流建模、Blazor前端集成及性能优化等核心内容。通过实战案例,展示如何实现订单处理系统的自动化与灵活性,提升企业流程效率。

weixin_26875109的博客 429

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

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

kdayjj966的博客 3160

C语言|深入浅出讲解int转换为float全过程(附2017年统考大题案例)

int转换为float类型为什么会发生精度损失? 精度损失的详细过程究竟是什么样的? 什么样情况float会发生精度损失?没有弄懂2017年浮点数统考大题? 这一篇用2017年统考大题案例帮你更深的理解浮点数的存储规则。

DADONGOOO的博客 1万+

Flash芯片的VCC上电到可操作时间过长

Flash的VCC上电到操作时间(tVSL)通常有最大值限制,如果超过这个时间,核心风险是状态机不同步和指令锁存错误。比如芯片内部振荡器可能已经尝试启动又休眠了,但主控却在这之后才发送指令,导致完全 misinterpreted。Flash芯片的(从电源上电到可以正常进行读写操作的时间)如果过长,会产生一系列负面影响简单来说,这个时间过长意味着电源上升速度太慢,违反了芯片的要求。

qq_61918649的博客 724

JS逆向---常见加解密算法总结

基本算法,我们可以理解为分为两类:常见的不可逆取盐(数据摘要)算法盐,可以理解为数据摘要声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关。本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除,请各位自觉遵守相关法律法规。

m0_52336378的博客 2846

新手避坑指南:用COMSOL Multiphysics仿真气体放电(汤逊vs.流注)

本文详细介绍了使用COMSOL Multiphysics仿真气体放电的实战指南,涵盖汤逊理论和流注模型的实现方法。通过对比两种放电模型的关键参数和物理场配置,帮助新手避免常见错误,准确预测气体击穿过程。文章还提供了工程应用案例,如高压绝缘子设计优化,展示了仿真技术在电力设备绝缘设计中的实际价值。

weixin_28716181的博客 478

python爬虫之js逆向入门:常用加密算法的逆向和实践

JS逆向的加密算法包括对称加密算法(如AES、DES、RC4)和非对称加密算法(如RSA、DSA、ECC)。在对称加密中,使用相同密钥进行加密和解密,速度快但需安全传输密钥。在非对称加密中,使用不同密钥进行加密和解密,公钥加密、私钥解密,可提供更好安全性但速度较慢。JS逆向需根据算法特点及已知知识进行识别和解密。

IMLiFeLong 3651

RK3588开发笔记-USB3.0接口调试

RK3588平台是一款强大的处理器,但要充分发挥其性能,需要正确调试其各种接口,包括USB 3.0接口。USB 3.0接口提供了更快的数据传输速度,但也可能面临一些问题。本篇博客将介绍如何在RK3588平台上调试USB 3.0接口,以确保其稳定性和性能。RK3588芯片具有强大的USB资源,包括多个USB接口和高速数据传输能力。RK3588通常具有多个USB接口,包括USB 2.0和USB 3.0。USB 2.0用于低速和全速设备连接,而USB 3.0则用于高速设备连接。

flypig has a dream! 2561

GitHub霸榜神器!NextChat领衔DeepSeek全栈开发范式

NextChat(原ChatGPT-Next-Web)是GitHub上斩获81.2K星标的现象级开源项目,定位为"轻量级AI助手终端",支持DeepSeek、Claude、GPT-4、Gemini等20+主流大模型。• 原生集成DeepSeek、GPT-4、Gemini Pro等模型API,同时兼容RWKV-Runner、LocalAI等自建模型框架,通过环境变量。• 客户端体积仅5MB(Windows安装包约6MB),采用PWA渐进式Web应用技术,首屏加载速度优化至100KB级,老旧设备亦可流畅运行。

实战AI智能体 899

JS逆向解析

JS逆向解析一、什么是JS逆向?二、密钥加密种类三、逆向解密实战   3.1.1 实战演练:微信登录方式解密 一、什么是JS逆向?   我们经常在浏览网页的时候并且想要通过网页进行复制粘贴某文本的时候会蹦出来一个弹窗显示让你进行账号登录,你可能有时会有疑问,当我们对网页源进行抓包的时候,会发现我们输入的密码是一串由字母或数字等符号组成的,其实这就是一个密码经过加密呈现的一段加密文字,而我们所做的解密工作,通过解密步骤得到密码的过程,称为JS逆向。 二、密钥加密种类   密码加密的方式肯定不止一种,如果所有网

Lucifer__god的博客 1907

华为OD机试双机位C卷:打印机队列 (C++/Py/C/Java/Js/Go)

华为OD机试双机位C卷 打印机队列,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 打印机队列。

qq_45776114的博客 1794

js逆向——返回加密数据的处理

这样数据解密的步骤我们已经分析完了,现在还有一个问题就是我怎么知道返回的7个XHR数据包哪一个是列表页展示的、我们希望得到的目标数据呢?这说明我们收到的响应数据是加密后的结果,返回客户端之后由客户端解密拿到明文字符串展示在前端当中,所以我们才能在网页看到有效的信息。现在我们还需要确认一件事,就是这个网站使用的AES-CBC是不是标准的AES算法,这将决定我们需不需要扣代码。而且通过观察,js代码没有特别需要扣的地方,都是使用的库当中自带函数。ok,今天的你就到此为止吧,我们下期再见~

Tandy12356_的博客 2793

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JS 逆向实例

一、百度翻译(入门级) 首先分析网络响应包,由名字和响应内容可知 v2transapi 是需要分析的包 网络响应包 点击启动器,根据经验,send 和 ajax 都涉及 jquery 等源码,前端程序员不会轻易修改,因此需要分析的是下面的 langIsDeteced,跳转到引用的 js 代码 启动器 上下划拉代码,可以在上方发现和请求内容相近的代码结构 js...

CourserLi的博客 1320

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: 从手动到自动:JavaScript埋点升级之路(企业级实践案例曝光)
下一篇: TypeScript环境下Redux配置的3种高级模式:提升代码健壮性的秘诀
QuickDebug
博客等级 码龄1年 152粉丝 2013原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值