博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java执行JavaScript脚本破解encodeInp()加密
阅读量:7057 次
发布时间:2019-06-28

本文共 2034 字,大约阅读时间需要 6 分钟。

一:背景

  • 在模拟登录某网站时遇到了用户名和密码被JS进行加密提交的问题,如图:

这里写图片描述


二:解决方法

  • 1.我们首先需要获得该JS加密函数,一般如下:
  • conwork.js
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function encodeInp(input) {
var output = ""; var chr1, chr2, chr3 = ""; var enc1, enc2, enc3, enc4 = ""; var i = 0; do { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64 } else if (isNaN(chr3)) { enc4 = 64 } output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); chr1 = chr2 = chr3 = ""; enc1 = enc2 = enc3 = enc4 = "" } while (i < input.length); return output}
  • 2.新建一个接口,内部实现和JS函数名相同的抽象方法:
  • Methods.java
public interface Methods {    public String encodeInp(String input);}
  • 3.Java执行JavaScript函数破解加密算法 ;
/**     *  Java执行JavaScript脚本破解加密算法     * @param str     * @return 加密后的字符串     */    public String playJs(String str) {        // 创建一个脚本引擎管理器        ScriptEngineManager manager = new ScriptEngineManager();        // 获取一个指定的名称的脚本引擎        ScriptEngine engine = manager.getEngineByName("js");        try {            // 获取当前类的所在目录的路径(%20是处理空格)            String path = JsoupCookie.class.getResource("/").getPath().replaceAll("%20", " ");            // FileReader的参数为所要执行的js文件的路径(对空格进行处理)            engine.eval(new FileReader(path + "conwork.js"));            if (engine instanceof Invocable) {                Invocable invocable = (Invocable) engine;                // 从脚本引擎中返回一个给定接口的实现                Methods executeMethod = invocable.getInterface(Methods.class);                // 执行指定的js方法                return executeMethod.encodeInp(str);            }        } catch (Exception e) {            // e.printStackTrace();        }        return null;    }

注意:Js文件在实例中默认保存在项目源文件夹下


更多推荐:

转载地址:http://legol.baihongyu.com/

你可能感兴趣的文章
Linux文件系统选择
查看>>
Leetcode 409. Longest PalindromeJAVA语言
查看>>
命令手动创建windows系统服务
查看>>
KMP算法
查看>>
36岁清华毕业 IT男马桶上猝死,好友首次讲述IT内幕!
查看>>
周鸿祎
查看>>
关于人肉神话:真理、智能、哲学的态度及逻辑的来源
查看>>
oracle错误码异常处理
查看>>
NUAGENETWORKS第二代SDN方案推企业云服务
查看>>
PlayFramework1.2.4 一些使用中的记录(前言)
查看>>
redis2.6安装报错解决
查看>>
【资料整理】对linux内存的理解
查看>>
几个查看系统状态的工具简介
查看>>
C# 基础知识系列文章索引
查看>>
深度解析数据库透明加密(一)
查看>>
解决xp下无法通过windows installer服务安装此安装程序包
查看>>
OpenGL常犯错误记录
查看>>
sqlite数据转移到mysqlserver
查看>>
zoj3501
查看>>
iphone4体验ios7系统
查看>>