微信公众平台(md5):https://mp.weixin.qq.com/

发现问题:密码给转换为密钥了

探索如何生成的

解决步骤:

是通过查看请求调用栈 找到加密代码的
  • 抓包 确定加密字段
  • 定位到了加密的大致位置
  • 打断点分析 确定加密的具体位置
  • 拷贝js加密部分的代码 进行调试(vscode中进行的)
  • 调试到js代码没有任何问题之后 我们使用python执行了js代码 生成了加密字段

找到加密和没加密的地方分界线,复制js代码到上面去调试


JS代码


function p(e, t) {var n = (65535 & e) + (65535 & t);return (e >> 16) + (t >> 16) + (n >> 16) << 16 | 65535 & n
}
function a(e, t, n, o, r, i) {return p((t = p(p(t, e), p(o, i))) << r | t >>> 32 - r, n)
}
function l(e, t, n, o, r, i, s) {return a(t & n | ~t & o, e, t, r, i, s)
}
function f(e, t, n, o, r, i, s) {return a(t & o | n & ~o, e, t, r, i, s)
}
function m(e, t, n, o, r, i, s) {return a(t ^ n ^ o, e, t, r, i, s)
}
function g(e, t, n, o, r, i, s) {return a(n ^ (t | ~o), e, t, r, i, s)
}
function s(e, t) {e[t >> 5] |= 128 << t % 32,e[14 + (t + 64 >>> 9 << 4)] = t;for (var n, o, r, d, i = 1732584193, s = -271733879, a = -1732584194, c = 271733878, u = 0; u < e.length; u += 16)i = l(n = i, o = s, r = a, d = c, e[u], 7, -680876936),c = l(c, i, s, a, e[u + 1], 12, -389564586),a = l(a, c, i, s, e[u + 2], 17, 606105819),s = l(s, a, c, i, e[u + 3], 22, -1044525330),i = l(i, s, a, c, e[u + 4], 7, -176418897),c = l(c, i, s, a, e[u + 5], 12, 1200080426),a = l(a, c, i, s, e[u + 6], 17, -1473231341),s = l(s, a, c, i, e[u + 7], 22, -45705983),i = l(i, s, a, c, e[u + 8], 7, 1770035416),c = l(c, i, s, a, e[u + 9], 12, -1958414417),a = l(a, c, i, s, e[u + 10], 17, -42063),s = l(s, a, c, i, e[u + 11], 22, -1990404162),i = l(i, s, a, c, e[u + 12], 7, 1804603682),c = l(c, i, s, a, e[u + 13], 12, -40341101),a = l(a, c, i, s, e[u + 14], 17, -1502002290),i = f(i, s = l(s, a, c, i, e[u + 15], 22, 1236535329), a, c, e[u + 1], 5, -165796510),c = f(c, i, s, a, e[u + 6], 9, -1069501632),a = f(a, c, i, s, e[u + 11], 14, 643717713),s = f(s, a, c, i, e[u], 20, -373897302),i = f(i, s, a, c, e[u + 5], 5, -701558691),c = f(c, i, s, a, e[u + 10], 9, 38016083),a = f(a, c, i, s, e[u + 15], 14, -660478335),s = f(s, a, c, i, e[u + 4], 20, -405537848),i = f(i, s, a, c, e[u + 9], 5, 568446438),c = f(c, i, s, a, e[u + 14], 9, -1019803690),a = f(a, c, i, s, e[u + 3], 14, -187363961),s = f(s, a, c, i, e[u + 8], 20, 1163531501),i = f(i, s, a, c, e[u + 13], 5, -1444681467),c = f(c, i, s, a, e[u + 2], 9, -51403784),a = f(a, c, i, s, e[u + 7], 14, 1735328473),i = m(i, s = f(s, a, c, i, e[u + 12], 20, -1926607734), a, c, e[u + 5], 4, -378558),c = m(c, i, s, a, e[u + 8], 11, -2022574463),a = m(a, c, i, s, e[u + 11], 16, 1839030562),s = m(s, a, c, i, e[u + 14], 23, -35309556),i = m(i, s, a, c, e[u + 1], 4, -1530992060),c = m(c, i, s, a, e[u + 4], 11, 1272893353),a = m(a, c, i, s, e[u + 7], 16, -155497632),s = m(s, a, c, i, e[u + 10], 23, -1094730640),i = m(i, s, a, c, e[u + 13], 4, 681279174),c = m(c, i, s, a, e[u], 11, -358537222),a = m(a, c, i, s, e[u + 3], 16, -722521979),s = m(s, a, c, i, e[u + 6], 23, 76029189),i = m(i, s, a, c, e[u + 9], 4, -640364487),c = m(c, i, s, a, e[u + 12], 11, -421815835),a = m(a, c, i, s, e[u + 15], 16, 530742520),i = g(i, s = m(s, a, c, i, e[u + 2], 23, -995338651), a, c, e[u], 6, -198630844),c = g(c, i, s, a, e[u + 7], 10, 1126891415),a = g(a, c, i, s, e[u + 14], 15, -1416354905),s = g(s, a, c, i, e[u + 5], 21, -57434055),i = g(i, s, a, c, e[u + 12], 6, 1700485571),c = g(c, i, s, a, e[u + 3], 10, -1894986606),a = g(a, c, i, s, e[u + 10], 15, -1051523),s = g(s, a, c, i, e[u + 1], 21, -2054922799),i = g(i, s, a, c, e[u + 8], 6, 1873313359),c = g(c, i, s, a, e[u + 15], 10, -30611744),a = g(a, c, i, s, e[u + 6], 15, -1560198380),s = g(s, a, c, i, e[u + 13], 21, 1309151649),i = g(i, s, a, c, e[u + 4], 6, -145523070),c = g(c, i, s, a, e[u + 11], 10, -1120210379),a = g(a, c, i, s, e[u + 2], 15, 718787259),s = g(s, a, c, i, e[u + 9], 21, -343485551),i = p(i, n),s = p(s, o),a = p(a, r),c = p(c, d);return [i, s, a, c]
}
function c(e) {for (var t = "", n = 0; n < 32 * e.length; n += 8)t += String.fromCharCode(e[n >> 5] >>> n % 32 & 255);return t
}
function u(e) {var t, n = [];for (n[(e.length >> 2) - 1] = void 0,t = 0; t < n.length; t += 1)n[t] = 0;for (t = 0; t < 8 * e.length; t += 8)n[t >> 5] |= (255 & e.charCodeAt(t / 8)) << t % 32;return n
}
function o(e) {for (var t, n = "0123456789abcdef", o = "", r = 0; r < e.length; r += 1)t = e.charCodeAt(r),o += n.charAt(t >>> 4 & 15) + n.charAt(15 & t);return o
}
function d(e) {return unescape(encodeURIComponent(e))
}
function r(e) {return c(s(u(e = d(e)), 8 * e.length))
}
function i(e, t) {var n, e = d(e), t = d(t), o = u(e), r = [], i = [];for (r[15] = i[15] = void 0,16 < o.length && (o = s(o, 8 * e.length)),n = 0; n < 16; n += 1)r[n] = 909522486 ^ o[n],i[n] = 1549556828 ^ o[n];return e = s(r.concat(u(t)), 512 + 8 * t.length),c(s(i.concat(e), 640))
}function wx(e, t, n) {return t ? n ? i(t, e) : o(i(t, e)) : n ? r(e) : o(r(e))
}console.log(wx('123456'));

调试没有报错且成功后,利用python运行

tool.py

import execjsdef get_js(file_name, func_name, func_arges=None):"""通过python来执行js代码的方法:param file_name:js文件的名字:param func_name:要执行的函数名字:param func_arges:方法传参:return:js运行的内容"""with open(file_name, 'r', encoding='utf-8') as f:js_code = f.read()# 1、编译JS文件cjs = execjs.compile(js_code)# 2、执行js代码# print(cjs.call('demo', 'world'))return cjs.call(func_name, func_arges)

wx.login.py

from tool import get_js# 密码生成的密钥
new_pwd = get_js('wechat_public.js','wx','123456')
print(new_pwd)

成功运行:

对比,是一样的,就成功了  

微信公众号密码转换的密钥相关推荐

  1. html微信定位转高德定位,JS微信公众号定位坐标转高德定位坐标,微信公众号定位精度转换高德精度,微信腾讯地图坐标转高德地图坐标

    前言 微信公众号获取的用户当前位置直接放到高德地图api上会偏差非常大,所以需要校正. 如下我分为三步调用:获取当前用户位置->转换成高德坐标->再初始化地图或者设置地图标点 实现 微信定 ...

  2. 微信公众号文章信息(阅读量、在看、点赞数)获取

      实现这一个功能主要用到了selenium.mitmproxy和wechatarticles,利用selenium可以实现脚本模拟浏览器访问,mitmproxy配合wechatarticles获取文 ...

  3. python爬取微信公众号文章(包含文章内容和图片)

    之前虽然做过网页爬取,但微信爬取一直没做过,因为我一直不知道网页可以进微信公众平台,只用过微信客户端进微信公众号.既然可以通过网页进微信公众平台,那么爬取微信公众号文章就流程上就没太多难度了. 自己在 ...

  4. 微信公众号怎么做html,微信公众号怎么做页面模板?

    有没有小伙伴还不知道微信公众号怎么做页面模板?针对这一类问题,小编马上要来为大家进行全面的分析,详细的解说.如果你正有这方面的困扰,也可以来阅读下面的内容!希望对你有帮助! 1.微信公众号怎么做页面模 ...

  5. 微信公众号鸿蒙盾额度认证为什么要交钱,微信公众号收费标准是什么?认证流程介绍!...

    做过公众号的人都知道,在认证的时候需要交纳年费,不然不能完成认证.可能有的人觉得没什么用,那就真的要看什么平台了,有的平台就是需要通过认证来获取一些功能,便于公众号的运营,所以不得不交认证费. 微信公 ...

  6. 微信公众号html怎么做,微信公众号怎么做页面模板?

    有没有小伙伴还不知道微信公众号怎么做页面模板?针对这一类问题,小编马上要来为大家进行全面的分析,详细的解说.如果你正有这方面的困扰,也可以来阅读下面的内容!希望对你有帮助! 1.微信公众号怎么做页面模 ...

  7. Thinkphp 微信公众号开发3-微信登录源码

    Thinkphp 微信公众号开发3-微信登录源码 微信官方的开发文档 微信官方开发文档传送门 官方提供的方式 那我们要做的流程如下 虽然官方写了一堆文字看的一脸懵 但是我们只需要清楚流程就可以了 获取 ...

  8. MarkDown/Html在线转换(支持代码高亮,可复制到微信公众号、今日头条)

    MarkDown/Html在线转换能够将md渲染成html并且能保持代码高亮,可以方便的复制待格式的html粘贴到微信公众号,CSDN,简书,博客园,开源中国等. 扫码体验在线助手小程序 我是java ...

  9. 微信公众号获取用户地理位置,转换百度坐标

    开发微信公众号,首先要先成为开发者.请自行百度. 在微信公众平台开启接口权限--接口权限-网页服务-地理位置-开启 JSSDK使用步骤 步骤一:绑定域名 先登录微信公众平台进入"公众号设置& ...

最新文章

  1. 【ZooKeeper】集群安装与配置
  2. 数据中心规划设计中值得注意的八个问题
  3. python3 分离路径 目录 文件名 后缀
  4. file_get_contents高級用法
  5. ML之Hierarchical clustering:利用层次聚类算法来把100张图片自动分成红绿蓝三种色调
  6. pycharm shadows name 'xxxx' from outer scope 警告
  7. caffe 中的一些参数介绍
  8. 【渝粤题库】国家开放大学2021春1253C语言程序设计题目
  9. 安装linux无驱动黑屏,ubuntu16.04安装黑屏与显卡安装笔记
  10. vue 实现横向时间轴
  11. 如何设置的单位为m_如何将视频设置为网页背景
  12. dotnet-cli命令小结
  13. linux下使用select实现精确定时器
  14. java1.7数据库access_Java 8读取Access数据库报错的问题——用32位Java 7
  15. ubuntu安装maven_Linux操作系统下将项目发布到Maven中央仓库图文教程
  16. Android Studio下载、安装和配置+SDK+tools下载(无敌超级详细版本)
  17. 这可能是知乎中,最好的项目管理书单!
  18. DirectX修复工具使用
  19. 杀戮尖塔是用java_杀戮尖塔修改class文件图文教程
  20. Centos 图形界面与Dos界面切换

热门文章

  1. ply补全为立方体_PLY文件格式及其解析 | 学步园
  2. 分布式事务(6)-分布式事务处理技术之RocketMQ
  3. 03 Transformation 变换
  4. 如何检查计算机上安装的DirectX版本?
  5. Linux基础 之 curl 命令
  6. Unity:看不到Flash未来 终止支持Flash
  7. 拉里 埃里森_拉里·埃里森(Larry Ellison)的宝座
  8. 6年主导3个项目,我终于成了别人眼中的大神
  9. 为什么刹车热了会失灵_急!我的刹车为什么突然不管用了?
  10. 七牛图片上传的使用心得[PHP篇]