js逆向之对称加密west交大登录密码

目录

js逆向之对称加密&west交大登录密码

什么是DES?

什么是AES?

实例演示--某大学官网

找加密?

关键字搜索

第一处:

找到其加密码代码

下断点

扣代码

这js代码怎么运行呢?

如何使用node运行js代码?

下载这个加密算法对象库

引用(对象)

传参

联动python

py代码

js代码


免责声明:本文仅供技术交流学习,请勿用于其它违法行为.


对称加密 aes des

什么是DES?

DES(使用密钥加密的块算法)_百度百科

DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。需要注意的是,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA),已与作为标准的DES区分开来。
​
​

什么是AES?

高级加密标准_百度百科

这个标准用来替代原先的DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

对称/分组密码一般分为流加密(如OFB、CFB等)和块加密(如ECB、CBC等)。对于流加密,需要将分组密码转化为模式工作。对于块加密(或称分组加密),如果要加密超过块大小的数据,就需要涉及填充和链加密模式。

是DES的升级版...更安全了.

实例演示--某大学身份认证

找加密?

进入网站界面,需要登录,密码一般都需要密文传输,它不可能直接明文.

我们没有号,那就随便输入账号,密码.(POST)

然后,我们分析数据包吧.

--这里我们一看,很显然,密码进行了加密.

(登录的逆向很多的...)

关键字搜索

这里的login.html很显然就不是了,点进去看,它就是一个标签属性而已.

所以,我们就找login.js里面的:

第一处:

$('.pwd').val('')

这个写法就是jQuery.

jQuery就是js库.


获取标签为pwd的,传空值.

类似于: 标签对象.value=''

类似于:

<input type='password' class='pwd'>

document.getElementByClassName('pwd')[0].value='abc'

$('.pwd').val('') 这里代码为空,所以就是空值.

--不是加密...空空如也...

...找呀找...

最后找到了!

找到其加密码代码

这就是一个优秀的程序员,加密方式都写你脸上了,方便大家,嘿嘿黑~

优秀,我要学习...

下断点

--登录,断住了,那就是此处了.

// 获取公钥--接口
function getPublicKey() { //  2 IE兼容
  var publicKey = '0725@pwdorgopenp';  //定义key
  //密码进行AES加密
  var pwdVal = $('.pwd')[1].value|| $('.pwd')[0].value
  var encrypts = CryptoJS.AES.encrypt(pwdVal, CryptoJS.enc.Utf8.parse(publicKey), {
   mode: CryptoJS.mode.ECB,
   padding: CryptoJS.pad.Pkcs7
  }).toString();
  var  params = {
   'loginType': 1,  //登录方式
   'username': $('.username')[1].value || $('.username')[0].value,
   'pwd':encrypts,
   'jcaptchaCode':$('.text_yan')[1].value || $('.text_yan')[0].value
 };
  login(params);
}

断点挨着走,我们发现这个 pwdVal 就是我们提交的密码的明文.

这个 encrypts 对象出来后就是密文了...

往后看,很显然,这个 params 对象里面的 'pwd':encrypts, 就是我们的密码. (就是从上面加密过来的.)

那就不用往下看了.

AES加密

扣代码

那我们这里直接给它安排扣代码.

function getPublicKey() { //  2 IE兼容
  var publicKey = '0725@pwdorgopenp';  //定义key
  //密码进行AES加密
  var pwdVal = $('.pwd')[1].value|| $('.pwd')[0].value
  var encrypts = CryptoJS.AES.encrypt(pwdVal, CryptoJS.enc.Utf8.parse(publicKey), {
   mode: CryptoJS.mode.ECB,
   padding: CryptoJS.pad.Pkcs7
  }).toString();
  var  params = {
   'loginType': 1,  //登录方式
   'username': $('.username')[1].value || $('.username')[0].value,
   'pwd':encrypts,
   'jcaptchaCode':$('.text_yan')[1].value || $('.text_yan')[0].value
 };
  login(params);
}
这js代码怎么运行呢?
浏览器本身支持js代码运行
单独的js文件没办法使用浏览器运行
安装一个独立运行js文件的工具:node.js
--这个安装工具就不说了吧.(注意设置环境变量)
如何使用node运行js代码?
node 文件路径

--这扣下来的代码,我们只需要关注加密的代码就行了,其它删掉就行.

这里我们运行一下,显然报错了.

var encrypts = CryptoJS.AES.encrypt(pwdVal, CryptoJS.enc.Utf8.parse(publicKey), {

CryptoJS 这是个加密算法库.

下载这个加密算法对象库

不得不说,这个对象(库)的加密算法真多...

它有这个CryptoJS对象,想用哪个加密就用哪个.

那我们没有对象,怎么办呢?

我们自己也可以安装加密算法库.

在node中安装.

node == python

npm == pip

npm install 库名

npm install crypto-js

--这里我们安装后,它会在我们的目录下生三个东西.

第一个文件夹里面就有我们要的. --准备调用.

那就准备导入那个对象了.(^▽^)

引用(对象)

var CryptoJS = require('crypto-js')
​
---------
    ReferenceError: pwdVal is not defined
​

--这里又报错了, pwdVal

传参

这个 pwdVal 眼不眼熟啊!!?,上面我们说过,它的值就是我们输入的明文密码.

这里我们把这个参数pwdVal给函数传参就行了.

var CryptoJS = require('crypto-js')
​
function getPublicKey(pwdVal) { //  2 IE兼容
  var publicKey = '0725@pwdorgopenp';  //定义key
  //密码进行AES加密
  // var pwdVal = $('.pwd')[1].value|| $('.pwd')[0].value
  var encrypts = CryptoJS.AES.encrypt(pwdVal, CryptoJS.enc.Utf8.parse(publicKey), {
   mode: CryptoJS.mode.ECB,
   padding: CryptoJS.pad.Pkcs7
  }).toString();
  return encrypts  //返回加密后的密码值
}
console.log(getPublicKey('123456abc'))
--------------------
YJJAQHE8GE5aErQJ+jCktA==
​

--成功拿下.加密值.

联动python

模拟前端做加密,但是加密之后产生的密文值,需要要python接收.

python中需要调用js代码文件,拿到加密值.

如果想要让python执行某一个js文件,需要安装一个库: pyexecjs

pip install pyexecjs

导入库中的execjs模块

py代码

#py文件
-----------------
import execjs
#加载js代码,返回js对象. execjs.compile(js代码)
# execjs.compile()   #位置参数,有就传.   默认参数:a=1/不传.
​
#js代码怎么来:
#1-直接复制js代码,作为位置实参传入.
#2-读取js文件,把读取的内容作为位置实参.
​
with open('6-西安交大.js', 'r', encoding='utf-8')as f:
    js_code = f.read()  #js_code保存的整个文件的文本内容.(js代码)
#加载js代码
o = execjs.compile(js_code)
#运行js代码,(调用某个加密函数)
#对象.call(js代码中要调用的函数名,调用函数传入的实参)
    #调用函数传入的实参: 有就传;有多个,用逗号隔开;  没有就不传.
print(o.call('getPublicKey', '123456abc'))
​
#call方法,返回的就是js函数的返回值.

js代码

#js文件
-------------------
var CryptoJS = require('crypto-js')
​
function getPublicKey(pwdVal) { //  2 IE兼容
  var publicKey = '0725@pwdorgopenp';  //定义key
  //密码进行AES加密
  // var pwdVal = $('.pwd')[1].value|| $('.pwd')[0].value
  var encrypts = CryptoJS.AES.encrypt(pwdVal, CryptoJS.enc.Utf8.parse(publicKey), {
   mode: CryptoJS.mode.ECB,
   padding: CryptoJS.pad.Pkcs7
  }).toString();
  return encrypts  //返回加密后的密码值
}
console.log(getPublicKey())

--到这我们就拿下了...


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/492611.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rancher介绍

1.什么是Rancher Rancher是一套容器管理平台&#xff0c;专门用于部署和管理容器化应用。以下是关于Rancher的详细介绍&#xff1a; 容器编排与管理&#xff1a;Rancher是一个开源的企业级容器管理平台&#xff0c;它支持Kubernetes作为其容器编排引擎。Rancher可以帮助用户在…

rust中常用cfg属性和cfg!宏的使用说明,实现不同系统的条件编译

cfg有两种使用方式&#xff0c;一种是属性&#xff1a; #[cfg()]&#xff0c;一种是宏&#xff1a;cfg! &#xff0c;这两个都是非常常用的功能。 #[cfg()]是 Rust 中的一个属性 用于根据配置条件来选择性地包含或排除代码。cfg 是 "configuration" 的缩写&#xf…

将markdown文档中的图床外链图片下载到本地文件夹

markdown图床外链图片下载到本地代码 前言 因为文章发到先知或者攻防社区需要本地图片&#xff0c;而我的图片从来都是上传到图床&#xff0c;所以编写了一个脚本实现了把markdown文章中所有含有外链图床的图片转储到本地的文件夹。 然后发布文章时再手动一个个上传图片。 如果…

Set和Map数据结构

Set和Map数据结构理解 Set&#xff1a; 1、es6新的数据结构&#xff0c;类似数组&#xff0c;但成员唯一 2、实例属性&#xff1a;Set.prototype.size返回Set实例的成员总数 3、操作方法&#xff1a;add、delete、has、clear 4、遍历操作&#xff1a;forEach、keys、values、en…

【研发日记】C/C++开发避坑秘籍(一)——CAN接收Buffer溢出Bug

文章目录 背景介绍 问题描述 分析排查 解决方案 总结归纳 背景介绍 在一个嵌入式软件项目中&#xff0c;有一段使用C语言写的嵌入式代码&#xff0c;功能是把CAN总线上的几帧报文接收进来&#xff0c;并解析出数据。示例如下&#xff1a; 乍一看感觉挺简单&#xff0c;想着…

全球前十大交易所KuCoin遭美司法部、CFTC起诉!违反银行保护法、反洗钱!交2200万“保护费”还不够?

昨&#xff08;26&#xff09;日晚间&#xff0c;美国司法部释出重磅消息&#xff0c;全球排名前十的中心化加密货币交易所KuCoin及其创始人Chun Gan和Ke Tang&#xff0c;遭到美国南区纽约地区检察官办公室起诉&#xff0c;理由是KuCoin及其两位创始人违反了美国反洗钱规范和未…

Mysql的高级语句3

目录 一、子查询 注意&#xff1a;子语句可以与主语句所查询的表相同&#xff0c;但是也可以是不同表。 1、select in 1.1 相同表查询 1.2 多表查询 2、not in 取反&#xff0c;就是将子查询结果&#xff0c;进行取反处理 3、insert into in 4、update…

el-table 表格全选

<template><div><el-checkbox v-model"checked" :disabledcheckedDis change"onAllSelectChange">全选</el-checkbox><el-table ref"multipleTable" :data"tableData" tooltip-effect"dark" sel…

面试八股文之JAVA基础

JAVA基础 DNS、CDN&#xff1f;如何实现对象克隆?父子类静态代码块, 非静态代码块, 构造方法执行顺序?String s new String("abc") 创建了几个对象, 分别放到哪里?OSI网络模型七层&#xff1f;应用层协议&#xff1f;http协议和https协议区别&#xff1f;传输层协…

Spring高级面试题-2024

Spring 框架中都用到了哪些设计模式&#xff1f; 1. 简单工厂&#xff1a; ○ BeanFactory&#xff1a;Spring的BeanFactory充当工厂&#xff0c;负责根据配置信息创建Bean实例。它是一种工厂模式的应用&#xff0c;根据指定的类名或ID创建Bean对象。2. 工厂方法&#xff…

插入排序和希尔排序:

插入排序 1. 算法思想&#xff1a; 由数组下标为1 开始的数值作为判断依据&#xff0c;与之前的数据从后往前比较定义tmp 暂存判断的数值&#xff0c;若前面的数据大于tmp&#xff0c;则将前面的数据向后移动 : arr[j1]arr[j]若对比的数据比tmp 大&#xff0c;则往后移&#…

展会邀约 |立仪科技邀您相聚四月

2024深圳国际传感器与应用技术展览会 2024年04月14日盛大开幕&#xff01; 立仪科技作为参展商 诚挚地邀请各地朋友莅临参观交流 2024成都国际工业展览会 2023年04月24-26日盛大开幕&#xff01; 立仪科技作为参展商 诚挚地邀请各地朋友莅临参观交流 深圳立仪科技有限公司…

Ubuntu上安装d4rl数据集

Ubuntu上安装d4rl数据集 D4RL的官方 github: https://github.com/Farama-Foundation/D4RL 一、安装Mujoco 1.1 官网下载mujoco210文件 如果装过可以跳过这步 链接&#xff1a;https://github.com/deepmind/mujoco/releases/tag/2.1.0 下载第一个文件即可。我这里是在windo…

拥抱C++的深度和复杂性,挖掘更多可能 !——《C++20高级编程(第5版)》

&#xff0c;C难以掌握&#xff0c;但其广泛的功能使其成为游戏和商业软件应用程序中最常用的语言。即使是有经验的用户通常也不熟悉许多高级特性&#xff0c;但C20的发布提供了探索该语言全部功能的绝佳机会。《C20高级编程(第5版)》为C的必要内容提供了一个代码密集型、面向解…

TF卡系统备份与还原

本文介绍一种用备份还原方法&#xff0c;快速实现TF启动卡制作&#xff0c;使用方便&#xff0c;无需安装linux系统&#xff0c;需要使用Diskgnius软件。 安装Diskgnius&#xff0c;64位绿色版本&#xff0c;无需安装&#xff0c;直接运行即可。运行Diskgnius软件&#xff0c;将…

【感悟《剑指offer》典型编程题的极练之路】02字符串篇!

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章所属专栏&#xff1a;《剑指offer》典型编程题的极练之路 ​​​​​​ 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c…

可怜的百度人

可怜的百度股民 注意&#xff0c;这里说的是持有百度股票的股民&#xff0c;不是百度&#xff0c;百度没啥好可怜的。 前天&#xff08;3月25日&#xff09;中午&#xff0c;财联社爆料百度和 Apple 达成合作&#xff0c;百度将为苹果今年发布的 iPhone16、Mac 系统和 iOS18 提…

【SpringSecurity】基础入门

目录 权限管理什么是权限管理认证授权权限管理解决方案Shiro开发者自定义Spring Security Spring Security特性Spring、Spring Boot 和 Spring Security 三者的关系整体架构1.认证AuthenticationManagerAuthenticationSecurityContextHolder 2.授权AccessDecisionManagerAccess…

JRT菜单

上一章搭建了登录界面的雏形和抽取了登录接口。给多组使用登录和菜单功能提供预留&#xff0c;做到不强行入侵别人业务。任何产品只需要按自己表实现登录接口后配置到容器即可共用登录界面和菜单部分。最后自己的用户关联到JRT角色表即可。 登录效果 这次构建菜单体系 首先用…