看我如何用云函数撸一个PC小程序代码包在线解密工具

这篇具有很好参考价值的文章主要介绍了看我如何用云函数撸一个PC小程序代码包在线解密工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前一段时间突发奇想,想白嫖腾讯云云函数的能力来实现无服务模式下 PC 端小程序包的在线解密(注意这里仅仅是做解密)。

因为业余时间以捣鼓有意思的东西作为娱乐活动,对于小程序技术这块本身理解也是比较深刻了,所以碰到相关需求都会首先去想:这 gie 能不能用云函数实现?

于是碰上这种有意思的功能自然想尝试用云函数去搞一下了,顺便积累下云开发经验,看看无服务器云函数到底可以做到什么程度。

开发前准备

开发之前我们是肯定有一套理论指导的,而且这个算法也是开源的。

主要内容如下:

  • 文件特征:文件起始为 V1MMWX
  • 文件加密方法:
    • 首先 pbkdf2 生成 AES 的 key。利用微信小程序 id 字符串为 pass,salt 为 saltiest 迭代次数为 1000。调用 pbkdf2 生成一个 32 位的 key
    • 取原始的 wxapkg 的包得前 1023 个字节通过 AES 通过 1 生成的 key 和 iv(the iv: 16 bytes),进行加密
    • 利用微信小程序 id 字符串的倒数第 2 个字符为 xor key,依次异或 1023 字节后的所有数据,如果微信小程序 id 小于 2 位,则 xorkey 为 0x66
    • 把 AES 加密后的数据(1024 字节)和 xor 后的数据一起写入文件,并在文件头部添加 V1MMWX 标识

有这个理论知识只要专注实现就可以了,而且已经有大佬实现了相应算法,我们只要拿来测试改一改就可以了。

本地调试

这里调试分别使用了 go 语言版本与 nodejs 版本,go 版本是没有问题的,node 版需要稍微改动一下。

调试环境

  • MacOS Catalina 10.15.7
  • Nodejs 14.17.0
  • go 1.17.2 darwin/amd64

本地验证运行 go 及 nodejs 版本都没有问题,然后就是如何迁移到云函数环境了。

云端开发

这里并没有纠结于具体使用什么版本的 node,所以一开始就默认用了 10.15,在腾讯云的云开发控制台创建应用时如果选择 koa 应用就默认是这个版本。

然后就是一顿操作了:

  1. 注册处理路由;
  2. 增加文件上传功能(小文件可以用云函数直接接收,大的就不行了会报请求体大小超限错误),上传文件至云存储;

看我如何用云函数撸一个PC小程序代码包在线解密工具

  1. 触发解密操作后从云存储下载文件;
  2. 调用 node 脚本去执行解密操作;
  3. 将解密后文件上传至云存储后提供下载链接。

文件上传这块有个小插曲,因为不支持大文件直传,所以专门问了云函数产品页面上的客服,说云函数的使用遇到了问题,结果告诉我说这块不归他们管,需要找云开发团队,然后我就懵了,云函数不是云开发下面的产品吗??咋还不归他们管??这是什么合作关系??不过最后为了解决问题我就加了客服微信,然后客服把云开发的技术大佬们拉了一个外部群,群内有十几个人之多,这阵势可让我是受宠若惊啊。不过最后还是解决了,技术大佬给了个方案,扔了几个文档链接让我自己捣鼓,就是看个文档手撸代码嘛,没啥难的,我就"好的"然后自己捣鼓去了。

看我如何用云函数撸一个PC小程序代码包在线解密工具

具体方案就是:

  1. 前端上传文件
  2. 服务端获取文件或者获取文件链接

并且额度方面也是够用的:
看我如何用云函数撸一个PC小程序代码包在线解密工具

所以我就按着大佬给的提示继续往下尝试了,编写初始版本。

完事之后我们要进行调试。

云函数调试

这里要区分下大小文件的情况,大文件倒是 OK 的,可以正常获取解密后的文件。

看我如何用云函数撸一个PC小程序代码包在线解密工具

小文件(主要 5M 以内)的情况下测试了很多遍,无一例外都失败了,而且错误原因是(这个和是否使用云存储无关):

{
  "library": "digital envelope routines",
  "function": "EVP_DecryptFinal_ex",
  "reason": "bad decrypt",
  "code": "ERR_OSSL_EVP_BAD_DECRYPT"
}

个人感觉是云端 nodejs 运行时带来的版本兼容问题,因为 10.15 是有些低了,所以将函数下载到了本地并把运行时改为了相对较新的 12.16 看看有没有救。

修改 cloudbaserc.json 里面的 runtime 运行时配置:

{
  "envId": "xxx",
  "functionRoot": "functions",
  "functions": [
    {
      "name": "koa-decrypt",
      "timeout": 50,
      "runtime": "Nodejs12.16",
      "installDependency": true,
      "handler": "tcbindex.main"
    }
  ]
}

然后使用命令行覆盖上传云函数即可更改云端运行时。

不过遗憾的是并没有作用,错误依旧。

总结

使用最新的无服务模式实现 PC 端代码包解密功能上云,听起来有意思但是实际上做的时候并没有那么美丽,一番体验下来感觉就是坑好多啊。不过还好大文件的解密是执行成功的,算是成功了一半,要啥 🚲。

体验地址

工具地址:PC 代码包在线解密

AppId:wxd968ed6b8bb866da

测试包:.wxapkg文章来源地址https://www.toymoban.com/news/detail-437113.html

参考资料

  • 前端上传文件
  • 服务端获取文件
  • 获取文件链接

到了这里,关于看我如何用云函数撸一个PC小程序代码包在线解密工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何用 python 设计一个兑奖程序?

    💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 设计一个兑奖程序通常需要考虑很多方面,包括奖品种类、兑奖规则、输入输出

    2024年02月02日
    浏览(37)
  • 如何用python搭建一个小程序

    要用 Python 搭建小程序,首先需要了解小程序的基本框架和构建方式。 一种常用的方法是使用微信小程序框架,如微信小程序框架(mpvue)。这种框架可以使用 Vue.js 的语法来构建小程序,并使用 Python 编写后端逻辑。 步骤如下: 安装 Node.js 和 Vue CLI。 使用 Vue CLI 创建一个新项目

    2024年02月12日
    浏览(36)
  • python简单的病毒编程代码,如何用python写一个病毒

    大家好,本文将围绕python简单的病毒编程代码展开说明,如何用python做恶搞病毒是一个很多人都想弄明白的事情,想搞清楚如何用python写一个病毒需要先了解以下几个事情。 国家计算机病毒应急处理中心通过对互联网的监测发现,一种利用python语言编写的恶意木马程序出现。

    2024年02月09日
    浏览(45)
  • 如何用unity做一个合成图片的程序

    最近一直在做抗原检测,然后几个室友的图片需要合成一张然后传到大群里,每次都用ps来处理感觉一直在做重复动作,有点麻烦,于是就想能不能用我所学的知识来优化这个过程,减少重复劳动呢。 答案是肯定的,好歹也干了这么多年的客户端,这么点需求都不能实现,那

    2023年04月16日
    浏览(38)
  • 如何用python做一个小程序,怎么用python做一个app

    这篇文章主要介绍了如何用python做一个小程序,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 大家好,本文将围绕如何用python写小工具展开说明,python开发小工具项目是一个很多人都想弄明白的事情,

    2024年01月17日
    浏览(28)
  • 用python编写一个小程序,如何用python编写软件

    大家好,给大家分享一下用python编写一个小程序,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 我想有人曲解意思了,人家说用python开发渣蔽一个手机app,不是说用手机敲写python代码,当然可以啊,只不过在电脑上开发的应用软件要进行打包什么的,才能

    2024年02月07日
    浏览(44)
  • 如何用Python做一个聊天程序(1)(没废话,超实用!)

    以前我用过编程猫的Coco编辑器做过一个聊天App,但感觉不是很爽,处处都要受到限制。于是我按照我在编程猫上的思路,用Python制作了一个聊天程序。 下载一个MySQL数据库,并做好处理。这个数据库相当于整个程序的服务端。 客户端使用tkinter的GUI制作,主要功能包括:收信

    2024年02月05日
    浏览(40)
  • Vue + JS + tauri 开发一个简单的PC端桌面应用程序

    Tauri 1 是一款应用构建工具包,让您能够为使用 Web 技术的所有主流桌面操作系统构建软件。tauri 框架与 electron 非常相似。 tauri electron 体积 10MB 100MB 打包速度 2s 17s Tauri 由一个可搭配任何前端来构建桌面应用的框架和 Rust 核心构成。 创建窗口并向其提供原生功能支持的 Rust 二

    2024年01月17日
    浏览(56)
  • 如何用go写一个基于事件驱动的SSE的程序

    SSE(Serversentevents)是浏览器向服务器发送请求并保持长连接的技术,服务器通过长连接将数据推送到浏览器。SSE通常用于实时更新网页内容或获得服务器推送的通知。 下面是实现一个基于事件驱动的SSE程序的步骤: 创建一个HTTP服务器。 注册一个路由处理程序,用于处理SSE请求

    2024年02月08日
    浏览(39)
  • 如何用Hbuilder创建一个微信小程序的前端界面

    目录 1.下载Hbuuilder软件https://www.dcloud.io/hbuilderx.html 2.打开软件 3.选择默认模板 4.创建项目成功 5.获取APPid 6.立即注册小程序 7.注册完成之后,登录小程序 8.复制Appid到微信小程序发行 9.在目录manifest.json配置中,配置Uni-app的(AppID) 10.点击发行 11.下载微信开发者工具 12.假如遇到报

    2024年04月17日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包