百炼成钢;JavaScript逆向九大专题详解

您所在的位置:网站首页 论述对称加密算法与非对称加密算法的含义 百炼成钢;JavaScript逆向九大专题详解

百炼成钢;JavaScript逆向九大专题详解

2023-07-10 11:08| 来源: 网络整理| 查看: 265

JavaScript是一种脚本语言,通常用于在Web浏览器中编写交互式前端应用程序。它是一种解释性语言,可以在客户端(浏览器)和服务器端(Node.js)上运行。

JavaScript可以用于创建动态网页、Web应用程序、游戏、移动应用程序等。它是一种弱类型语言,意味着变量的类型可以在运行时动态更改。JavaScript具有丰富的内置函数和库,可以轻松地与HTML和CSS集成,使其成为Web开发的重要组成部分。

本系列将从九个方面讲解JavaScript逆向专题 1.浏览器调试 js作用域浏览器对象属性浏览器控制台 2.国标哈希算法 sha1算法sha256算法sha512算法md5hmac算法python和JavaScript实现 3.国标对称加密 DES算法AES算法crypto-js模块使用pycryptodome 4. 国标非对称加密 RAS算法原理非对称特征JavaScript算法还原ras模块jesencrypt 5.webpack模块打包 webpack打包原理webpack构造形式全局导出加密函数 6.JS混淆 JavaScript压缩 混淆原理OB混淆特性OB混淆JavaScript 7.cookie反爬处理 cookie加解密原理cookie和session机制cookie hook技巧acw_sc_v2调试 9.AST抽象语法树 AST 技术介绍字符串和编码还原evaluate方法学习JavaScript实战解混淆 10.JS安全产品攻防 瑞数acw_sc_v2

专题文章较长,建议关注+收藏,以免找不到

关注公众号获取电子版+视频:

第一章:浏览器调试

JavaScript是一种在浏览器中运行的脚本语言,它可以通过浏览器对象来访问和操作浏览器的各种属性和方法。在进行JavaScript逆向分析时,了解浏览器对象的属性和方法是非常重要的。

1.JS作用域

在JavaScript中,作用域是指变量和函数的可访问范围。JavaScript中有两种作用域:全局作用域和局部作用域。

全局作用域是指在整个JavaScript程序中都可以访问的变量和函数,而局部作用域是指只能在函数内部访问的变量和函数。

2.浏览器对象属性

在JavaScript中,浏览器对象是指浏览器提供的一些对象,可以通过这些对象来访问和操作浏览器的各种属性和方法。以下是一些常用的浏览器对象属性:

window:表示当前浏览器窗口或标签页。document:表示当前文档对象。location:表示当前文档的URL。navigator:表示当前浏览器的信息。history:表示当前浏览器的历史记录。 3.浏览器控制台

浏览器控制台是开发者工具中的一个重要组成部分,可以用来调试JavaScript代码、查看网络请求、分析页面性能等。以下是一些常用的浏览器控制台命令:

console.log():用于输出日志信息。console.dir():用于输出对象的属性和方法。console.error():用于输出错误信息。console.warn():用于输出警告信息。console.clear():用于清空控制台。 示例代码: // 输出日志信息 console.log("Hello, world!"); // 输出对象的属性和方法 var obj = {name: "Tom", age: 18}; console.dir(obj); // 输出错误信息 console.error("Something went wrong!"); // 输出警告信息 console.warn("This is a warning!"); // 清空控制台 console.clear();

以上是JavaScript逆向专题之浏览器介绍的一些基础知识,对于进行JavaScript逆向分析的开发者来说,了解这些知识是非常重要的。

第二章:国标哈希算法

国标哈希算法是一种将任意长度的消息压缩成固定长度摘要的算法,常用于数据完整性校验、数字签名等领域。本文将从sha1算法、sha256算法、sha512算法、md5算法、hmac算法以及Python和JavaScript实现六个方向详细介绍国标哈希算法。

1.sha1算法

sha1算法是一种安全性较高的哈希算法,将任意长度的消息压缩成160位的摘要。以下是Python实现sha1算法的示例代码:

import hashlib def sha1(data): sha1 = hashlib.sha1() sha1.update(data.encode('utf-8')) return sha1.hexdigest()

以下是JavaScript实现sha1算法的示例代码:

function sha1(data) { const sha1 = crypto.createHash('sha1'); sha1.update(data); return sha1.digest('hex'); } 2.sha256算法

sha256算法是一种更安全的哈希算法,将任意长度的消息压缩成256位的摘要。以下是Python实现sha256算法的示例代码:

import hashlib def sha256(data): sha256 = hashlib.sha256() sha256.update(data.encode('utf-8')) return sha256.hexdigest()

以下是JavaScript实现sha256算法的示例代码:

function sha256(data) { const sha256 = crypto.createHash('sha256'); sha256.update(data); return sha256.digest('hex'); } 3.sha512算法

sha512算法是一种更安全的哈希算法,将任意长度的消息压缩成512位的摘要。以下是Python实现sha512算法的示例代码:

import hashlib def sha512(data): sha512 = hashlib.sha512() sha512.update(data.encode('utf-8')) return sha512.hexdigest()

以下是JavaScript实现sha512算法的示例代码:

function sha512(data) { const sha512 = crypto.createHash('sha512'); sha512.update(data); return sha512.digest('hex'); } 4.md5算法

md5算法是一种较为常用的哈希算法,将任意长度的消息压缩成128位的摘要。以下是Python实现md5算法的示例代码:

import hashlib def md5(data): md5 = hashlib.md5() md5.update(data.encode('utf-8')) return md5.hexdigest()

以下是JavaScript实现md5算法的示例代码:

function md5(data) { const md5 = crypto.createHash('md5'); md5.update(data); return md5.digest('hex'); } 5.hmac算法

hmac算法是一种基于哈希函数和密钥的消息认证码算法,常用于数据完整性校验和数字签名。以下是Python实现hmac算法的示例代码:

import hmac import hashlib def hmac_sha256(key, data): hmac_sha256 = hmac.new(key.encode('utf-8'), data.encode('utf-8'), hashlib.sha256) return hmac_sha256.hexdigest()

以下是JavaScript实现hmac算法的示例代码:

function hmac_sha256(key, data) { const hmac_sha256 = crypto.createHmac('sha256', key); hmac_sha256.update(data); return hmac_sha256.digest('hex'); } 6.Python和JavaScript实现

以下是Python和JavaScript实现sha256算法的示例代码:

Python:

import hashlib def sha256(data): sha256 = hashlib.sha256() sha256.update(data.encode('utf-8')) return sha256.hexdigest()

JavaScript:

javascript function sha256(data) { const sha256 = crypto.createHash('sha256'); sha256.update(data); return sha256.digest('hex'); }

以上是国标哈希算法的介绍,包括sha1算法、sha256算法、sha512算法、md5算法、hmac算法以及Python和JavaScript实现。在实际应用中,需要根据具体需求选择合适的哈希算法。

第三章:国标对称加密

国标对称加密算法是指由中国国家密码管理局发布的加密算法标准,包括DES算法、AES算法等。在JavaScript逆向中,了解这些算法的原理和使用方法是非常重要的。

1.DES算法

DES算法是一种对称加密算法,密钥长度为56位,分为加密和解密两个过程。在JavaScript中,可以使用crypto-js模块进行DES加密和解密操作。

加密示例代码:

var key = CryptoJS.enc.Utf8.parse("1234567890123456"); var iv = CryptoJS.enc.Utf8.parse("1234567890123456"); var encrypted = CryptoJS.DES.encrypt("Hello World", key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); console.log(encrypted.toString());

解密示例代码:

var key = CryptoJS.enc.Utf8.parse("1234567890123456"); var iv = CryptoJS.enc.Utf8.parse("1234567890123456"); var decrypted = CryptoJS.DES.decrypt(encrypted, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); console.log(decrypted.toString(CryptoJS.enc.Utf8)); 2.AES算法

AES算法是一种对称加密算法,密钥长度可以是128位、192位或256位,分为加密和解密两个过程。在JavaScript中,可以使用crypto-js模块进行AES加密和解密操作。

加密示例代码:

var key = CryptoJS.enc.Utf8.parse("12345678901234567890123456789012"); var iv = CryptoJS.enc.Utf8.parse("1234567890123456"); var encrypted = CryptoJS.AES.encrypt("Hello World", key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); console.log(encrypted.toString());

解密示例代码:

var key = CryptoJS.enc.Utf8.parse("12345678901234567890123456789012"); var iv = CryptoJS.enc.Utf8.parse("1234567890123456"); var decrypted = CryptoJS.AES.decrypt(encrypted, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); console.log(decrypted.toString(CryptoJS.enc.Utf8)); 3.crypto-js模块使用

crypto-js是一个JavaScript加密库,支持多种加密算法,包括DES、AES、SHA-1、SHA-256等。在使用之前,需要先引入crypto-js库。

4.pycryptodome

pycryptodome是一个Python加密库,支持多种加密算法,包括DES、AES、SHA-1、SHA-256等。在使用之前,需要先安装pycryptodome库。

pip install pycryptodome

使用示例:

from Crypto.Cipher import AES key = b'1234567890123456' iv = b'1234567890123456' cipher = AES.new(key, AES.MODE_CBC, iv) msg = b'Hello World' encrypted = cipher.encrypt(msg) print(encrypted) cipher = AES.new(key, AES.MODE_CBC, iv) decrypted = cipher.decrypt(encrypted) print(decrypted) 第四章:国标非对称加密 1.RSA算法原理:

RSA算法是一种非对称加密算法,它的安全性基于大数分解的困难性。RSA算法的核心是选择两个大质数p和q,计算它们的乘积n=pq,然后选择一个整数e,使得1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3