文章目录

    • js常见的加密方式
    • Md5加密
    • DES/AES 加密
    • RSA加密
  • 微信公众号平台js算法改写

js常见的加密方式

  • 常见的加密算法基本分为这几类:

    • 线性散列算法(签名算法) MD5 md2 md4 sha1 sha256 sha512 (取盐)
    • 对称性加密算法 AES DES
    • 非对称性加密算法 RSA

Md5加密

  • MD5 是一种广泛使用的线性散列算法, 可以产生出一个128位的散列值(hash value),MD5加密之后产生的 一般是固定长度 (32位或者16位)的数据
  • 解密:
    • 常规讲 MD5不存在解密的, 但是可以反向暴力破解
      在测试的时候 一般默认密码输入123456 抓包看到加密的如果是e10adc3949ba59abbe56e057f20f883e(32位的)则是md5加密

示例代码:

<!DOCTYPE html>
<html lang="en">
<script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.js"></script>
<script type="text/javascript">var hashCode = md5('i am bobo!');alert(hashCode)
</script>
</html>

注意后续js中出现 md5字样 基本上就是 采用md5加密方式 如果加密的是 16进制 且32位长度 那大概率也是md5加密

DES/AES 加密

  • DES 即数据加密标准, 是一种使用密钥加密的算法。 该算法是一种对称加密方式, 其加密运算、解密运算需要使用同样的密钥( 一组字符串)
  • 注意:
    • 现在用AES这个标准来替代原先的DES。
    • AES和DES的区别:
      • 加密后密文长度的不同:

        • DES 加密后密文长度是8的整数倍
        • AES 加密后密文长度是16发整数倍
      • 应用场景不同:
        • 企业级开发使用DES足够安全
        • 如果要求高 则使用AES
      • DES 和AES 切换只需要修改 CryptoJS.AES <=> CryptoJS.DES
  • 使用DES/AES进行数据交互时要求双方都拥有相同的私钥
  • 破解方法:
    • 暴力破解。
  • DES算法的入口参数有三个:
  • Key、Data、Mode、padding.
    • Key 位7个字节共56位, 是DES算法的工作密钥
    • Data位8个字节64位, 是要被加密或被解密的数据
    • Mode位DES的工作方式
    • padding位填充模式, 如果加密后密文长度如果达不到指定整数倍(8个字节、16个字节)填充对应字节
      示例代码
<!DOCTYPE html>
<html lang="en">
<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.js"></script>
<script type="text/javascript">var aseKey = '12345678';     // 定制密钥, 长度必须为:8/16/32位var message = "i am bobo,who are you ?";// 加密 DES/AES 切换只需要修改 CryptoJS.DES -》 CryptoJS.AESvar encrypt = CryptoJS.DES.encrypt(message, CryptoJS.enc.Utf8.parse(aseKey), {mode: CryptoJS.mode.ECB,        // 这两行固定写法padding: CryptoJS.pad.Pkcs7}).toString();alert(encrypt);// 解密var decrypt = CryptoJS.DES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(aseKey),{mode: CryptoJS.mode.ECB,        // 这两行固定写法padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);alert(decrypt);     // 解密完的密码
</script>
</html>

出现 DES 或者 AES基本上就是该加密方式

RSA加密

公钥加密 私钥解密
在公开密钥加密和电子商业中RSA被广泛使用
``私钥不可随心设置 是根据公钥计算生成的

示例代码

<!DOCTYPE html>
<html lang="en">
<script src="https://cdn.bootcss.com/jsencrypt/3.0.0-beta.1/jsencrypt.js"></script>
<script type="text/javascript">// 公钥var PUBLIC_KEY = '-----BEGIN PUBLIC KEY-----' +'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2MHiVKHV2bOwFpg0mZb6B3e/a' +'59nezjIEZmbe24fxVZwQ3p0q2DWtqI0eGQtf0wJ4DD+12nPbZVWOCxUKCk9M+t/T' +'9d0j9MaTUgkBvM0JVNtYzqgstIcok0tlWblvt/1gQes0jXkJLHu9fwR6t7R0eqAC' +'Z4A495mhf6/QbZurZQIDAQAB' +'-----END PUBLIC KEY-----';// 私钥var PRIVATE_KEY = "-----BEGIN PRIVATE KEY-----" +"MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALYweJUodXZs7AWm" +"DSZlvoHd79rn2d7OMgRmZt7bh/FVnBDenSrYNa2ojR4ZC1/TAngMP7Xac9tlVY4L" +"FQoKT0z639P13SP0xpNSCQG8zQlU21jOqCy0hyiTS2VZuW+3/WBB6zSNeQkse71/" +"BHq3tHR6oAJngDj3maF/r9Btm6tlAgMBAAECgYAOpcT8EP2ooMc1CQ2jmaiAXmyL" +"R/qvPBqvWeBJaJL8Zyqd/JfcOvfN13BJDDBq6tcW+b0hjMelyvbe7asqXHvVjJ3d" +"f/ay7LxLLdzx/SxdaD6Llfwzm7g7Uljw/fqF4cd+AY1As4gRHrGO9xA+QR/vg1U7" +"6b/vlsD8yfIcQSwYXQJBAPIdK5m+1CxPIdXYWTsXvOOB6ACpIosFcfa3uQ14OQ5I" +"0NrUXlskVe6Y5sGE5fcwgzHy2iaDu5gT/sK53oiuPTcCQQDAo3WxYJamJ3mK9EXf" +"BlxNAmH1zG7Jp3ZzKzJNWOG4Q1EEG1fJQB3Z6V2unvPEu7A2zxthG+iRrvTBMU6u" +"DopDAkB+gCNBx2UQaaAiHVIx/+sfa8aOYdC8lnG/GKtFkGUvQ3hsfb13HXsQmS8o" +"OYn2J5DEzkCREw83HGtlzruo6nDtAkEAkRsPzlrpX6MghLDX6NVLtZ5z18j0MuX3" +"7Wy+aVDoRfo/Do7iI3AujDSjIqQND0YpyD9dalqxZvuY1eWkVKwTLQJBAK6iIbD+" +"hk6IVIZmqwwqxYL0/q3XHnczewxG5NHg66gGl86GZJITbLXEnju+xnFXHrGdplZB" +"eZJpkUz1wAcaoGc=" +"-----END PRIVATE KEY-----";// 加密 DES/AES 切换只需要修改 CryptoJS.DES -》 CryptoJS.AESvar encrypt = new JSEncrypt();  // 实例化加密对象encrypt.setPublicKey(PUBLIC_KEY);   // 设置公钥var encrypted = encrypt.encrypt('hello bobo!'); // 对指定数据进行加密alert(encrypted);// 使用私钥解密var decrypt = new JSEncrypt();decrypt.setPrivateKey(PRIVATE_KEY);   // 设置私钥var uncrypted = decrypt.decrypt(encrypted); // 解密alert(uncrypted);     // 解密完
</script>
</html>

证书中包含了 公钥和企业相关信息

微信公众号平台js算法改写

  • 先输入错误的邮箱和密码 然后 打开抓包工具 点击登录 看看抓包工具
  • 然后通过 查看该请求调用了那些js文件 判断出最右可能的
  • 在可疑的js文件中 直接ctrl + F 进行搜索 pwd 对可疑的地方都进行断点调试
  • 当程序真的走到这里的时候 可以进行全选 函数 看函数返回的是什么
  • 进入到里面后可以将 那附近相关代码都拷贝到 发条js调试工具中进行改编
  • 要想在pycharm中使用 js代码
    • node.js环境的安装
    • pip install PyExecJs
import execjs
# 1.实例化一个node对象
node = execjs.get()# 2.js源文件编译
ctx = node.compile(open('./Wechat.js', encoding='utf-8').read())# 3.执行js函数
funcName = 'getPwd("{0}")'.format('123456')
pwd = ctx.eval(funcName)
print(pwd)          # e10adc3949ba59abbe56e057f20f883e

js逆向常用加密 + 微信公众号平台试练相关推荐

  1. java 微信公众号js接入_SpringCloud : 接入 微信公众号平台(三)、获取JsSDK配置参数...

    JsSDK配置参数获取Demo //用于JS调试 var vConsole = new VConsole(); //初始化 --> name= name.replace(/[]/,"\ ...

  2. 公众号第三方平台和微信公众号平台的区别与开发步骤

    我们知道通过微信公众号平台的开放API可以实现用户个性制定制的功能,我们又知道使用开放API时必须知道AppID(应用ID)和AppSecret(应用密钥),而且还要配置URL(服务器地址).Toke ...

  3. 微信公众号对接PHP电影网站,wxapi 微信公众号平台与电影类网站对接源码 wxapi 联合开发网 - pudn.com...

    wxapi 所属分类:微信小程序 开发工具:Java 文件大小:3KB 下载次数:0 上传日期:2019-02-16 23:41:01 上 传 者:lziccard 说明:  微信公众号平台与电影类网 ...

  4. 公众号管理系统 html,微信公众号平台管理后台.html

     微信公众号平台管理后台 $axure.utils.getTransparentGifPath = function() { return 'resources/images/transparent ...

  5. 微信公众号平台登陆-你已授权登陆过XXXX

    上周开始开发微信 从微信公众号点击按钮去我们的服务器 结果除了第一次点击按钮确认授权以外,以后每次都会出现这个页面 加班研究了好几天 终于解决了 原来参考微信公众号平台文档 文档告诉我,state这个 ...

  6. 第三方网站不能调用微信公众平台里的图片了 显示此图片来自微信公众号平台未经允许不可引用...

    下午ytkah在自己小博客搜索时看到有几篇文章图片显示不了,再访问一些网站时发现有些图片无法显示出来,显示"此图片来自微信公众号平台未经允许不可引用",如下图所示,这个应该是最近微 ...

  7. 微信公众号平台如何批量给粉丝自动打标签分组

    关于微信公众号平台批量给粉丝自动打标签分组功能,第三方工具微号帮提供了功能粉丝分组批量转移实现,可以在线给公众号所有粉丝自动分组打标签,公众号粉丝批量打标签分组,与公众号平台后台用户管理功能数据同步, ...

  8. 微信公众平人数多服务器会崩溃吗,微信公众号平台推新功能 再也不怕文章崩溃...

    昨日微信公众平台进行了相关更新,现在平台上的所有帐号都可以在图文编辑查看图文历史版本.这一改动为公众号运营者带来了极大的便利,在多人同时操作.多个电脑同时浏览时,再也不用担心素材内容一刷新就没了.不过 ...

  9. 微信公众号平台的现状及发展前景的分析(十八)

    一.基本信息 标题:微信公众号平台的现状及发展前景的分析 时间:2018 出版源:传媒论坛 文件分类:文献笔记 二.研究背景  随着移动互联网科技的飞速发展和日趋成熟,新媒体越来越受到人们的关注.新媒 ...

最新文章

  1. (原创)按照一定的格式生成一定数量的随机数的例子
  2. antd中的form表单 initialValue导致数据不更新问题
  3. android 短信时间排序,仿iphone中短信以及通话记录的时间显示
  4. java基础(六章)
  5. python request.post 字典参数以json_Python requests.post方法中data与json参数区别详解
  6. Android学习笔记(一)——控件布局常用属性
  7. 甲骨文公司总部Oracle技术沙龙《Hadoop》邀请函-2013.8.31(周六)
  8. 关于短信猫死机的问题程序要如何解决
  9. 【代码复现问题】apex安装不上+win10分布式训练出问题
  10. Foreign Language_english_补语
  11. Go语言实现企业微信sdk,集成了第三方应用sdk和自建应用代开发的sdk,支持一键生成新sdk
  12. 人工智能基础——什么是人工智能
  13. Android开发—简单的图片浏览器
  14. 5个优质开玩笑代码脚本
  15. Python 实现office单个文件或整个文件夹(word,ppt,excel)转换成PDF文件,并获取PDF文件页数
  16. ArcGIS提取斜坡单元
  17. LegendShop教您,电商系统选型要注意什么!
  18. [转载]Ajax的错误处理机制探讨
  19. 哈夫曼树--数据结构
  20. 一招教你怎么注册/登陆芒果xo悠闲社区网

热门文章

  1. 如何将优酷KUX格式转换为MP4格式?
  2. opengl入门基础-画正方形
  3. Xshell如何配置并远程连接Linux服务器详解
  4. csv文件和excel文件
  5. pt, px, DPI: 关于长度单位的误解
  6. 如何将图片放大不改变清晰度?
  7. 信托资金将分辨用于向邢台依林山庄食物有限公司、唐山国泰纸业有限公司、唐山蓝猫饮品团体有限公司发放流动资金贷款1亿、1.5亿、1亿
  8. 维峰电子深交所上市:市值64亿 李文化家族色彩浓厚
  9. 最短路:迪杰斯特拉算法
  10. 实验管理系统java_实验报告管理系统