自动获取Greenhub激活码:源码分析与脚本编写
前言
本博客所有文章中的代码,若未经博主允许严禁修改!!(若没有给他人使用则无视)
目前已知:
良心之友_LXZY(已和解):将博主代码修改后打包为exe文件,并上传至github。若需要截图证据,可在本站首页右下角找到我的b站空间并且私信我。此人的b站空间 ; 此人的github主页
小学生说电脑:将博主代码原封不动照搬发b站,并且声称“全网首发”“自己研究”。目前,此人视频已被删除。此人的b站空间
啰嗦几句
最近写了个爬虫脚本,是关于获取外网图片的。但是,由于某些花里胡哨的因素,导致我不得不使用变身软件把我转化为撑杆僵尸跳跃某个很长很长的墙。必应上一搜,发现Greenhub,虽然速度不算快,但是它至少每日免费1h。
但是有个大问题,我的脚本获取的图片很多,可Greenhub速度又慢,导致我每天能够下载到的图片少之又少,要不然开通高级用户吧,可高级用户以美元收费,买不起。查找根目录,发现这玩意用elevate写的,如果用7-zip的插件可以将app.asar直接解压,app.asar就是Greenhub的源码。这下简单了!
(以下文章粗体为代码片段,”…”表示省略)
解压源码
首先找到Greenhub根目录,只要在Greenhub的快捷方式上右键点击打开文件所在位置即可
然后找到resources文件夹,可以找到app.asar。我们从这里下载7-zip插件,将下载后得到的压缩包解压,会有两个dll插件,一个32位,一个64位,根据7-zip的位数自己选择,选好后粘贴到7-zip根目录的Formats文件夹中,如果不知道自己的7-zip是几位,就全部粘贴,根目录没有Formats文件夹就创建一个。装好插件,我们直接右键app.asar,点击显示更多选项(Windows 10可以忽略这一步),找到7-zip,点提取到”app\“,此时可能会报个错:Codec Load Error: …,无视它,点确定即可。解压后源码就在app\dist\electron中,将其中的一大坨代码格式化一下(网上随便一搜就有在线格式化的工具),得到人能看的源码。
寻找API与调用API方法
由于本人不太会JavaScript,所以没有办法做到直接修改源码以达到破解高级的目的。那咋办嘞?只好通过自己最会的语言来破解了,我最会的是Python,和JavaScript毛关系都没有(也可能有一点关系),凉凉了。
等等,Python不是脚本语言吗?我用requests库对Greenhub源码的API进行一波爬虫,说不定就能把激活码搞下来。
于是在renderer.js中通过搜索字符串”http”来寻找api,果不其然,找到了!
看看这名字: STRIPE_GET_ACTIVE_CODE ,生怕我不知道这是获取激活码的函数,再看看它的return,说明访问这个api需要一个名为 Authorization 的header,Authorization中的 “Basic “ + btoa(n + “:”) 是个啥?往上看n的定义:
1 | var n = "dev" === process.env.APP_BUILD_TYPE ? "sk_test_..." : "rk_live_..."; |
这好像是个三目运算表达式,换成Python语言则为:
1 | n = "sk_test_..." if "dev" == process.env.APP_BUILD_TYPE else "rk_live_..." |
完了,这process是啥玩意?怪我没学JavaScript。这下咋办, “Basic “ + btoa(n + “:”) 不知道是啥,要不使用 console.log(“Basic “ + btoa(n + “:”)) ?不行,这玩意不是html网页,输出了应该也看不见。
之前,我想到了一个方法: window.confirm(“Basic “ + btoa(n + “:”)) 。实现输错验证码时弹一个窗口,窗口中的内容就是Authorization的值,为了达到这个效果,我添加了以下代码:
1 | STRIPE_GET_ACTIVE_CODE: function(e) { |
并且将调用这个函数的地方改了一下,即可获得到 Authorization 的值。
2024.8.5新方法: 以上方法为博主在4月份发现的方法,当时也没有过多了解JavaScript。经过一段时间的学习,了解了一些相关知识: btoa 函数可以将字符串加密为Base64。我也将上面的三目运算表达式翻译成了Python。
稍加思考后可以发现:只要知道n的值,再调用btoa函数,就可以获得 Authorization 的值。n的值是通过上面的三目表达式获取的,经过分析,我大概理解了表达式中 process.env.APP_BUILD_TYPE 的意思: process.env 对象包含了用户环境的信息,可以不用管,而后面的 APP_BUILD_TYPE 从名字上看就知道,它表示应用的构建类型。
因此,表达式 var n = “dev” === process.env.APP_BUILD_TYPE ? “sk_test_…” : “rk_live_…”; 是检测greenhub是否为dev版,如果是,则使用字符串 sk_test_… ;如果不是,则使用 rk_live_… 。而我们所使用的版本大概率不是dev版,所以字符串应该是以 rk_live 开头的。
接下来再看这个代码: “Basic “ + btoa(n + “:”) ,可以发现, Authorization 的值是去掉Basic之后,将 n+’:’ 进行base64加密后的结果。所以,我们只需要复制sk_test_… ,并在后面加上一个英文冒号(即sk_test_xxxxx: ),然后打开浏览器,随便进一个网页,按下F12打开开发人员工具,再点击控制台。
输入 console.log(“Basic “ + btoa(“sk_test_xxxxx:”)) 即可获得 Authorization 的值。
(TIP:改完代码后,要将代码再次压缩成asar格式,可以直接用7-zip打开app.asar,将改完的js文件拖进去替换就行了)
编写Python脚本获取激活码
拿到了Authorization 的值,之后的工作就简单了,直接看代码:
1 | import requests |
requests库需要先在终端中使用pip install requests安装。
headers是我们找到的,使用requests.get是因为该api通过get调用( STRIPE_GET_ACTIVE_CODE的return告诉了我们:return t({url: “https://…” + e, method: “get”, headers: …}) )。
license_code 将api.stripe.com/v1/customers返回的json代码进行解析后得到。
最后,运行代码,得到激活码,点击付费节点,弹出购买弹窗,再点使用激活码激活,粘贴上爬取的激活码,成功激活Greenhub!
视频教程:
在2024年11月8号,我用C++重写了该python代码,以便无代码基础的朋友们使用,你可以点击这里来下载该C++程序,或使用蓝奏云下载,密码:绿墙
由于很多人反映激活码爆红的问题,但是我这边2.2.0的版本是没任何问题的。所以这边提供了2.2.0版本的安装包,你可以点击这里来下载2.2.0安装包,或使用蓝奏云下载,密码:220
- 标题: 自动获取Greenhub激活码:源码分析与脚本编写
- 作者: 旁白
- 创建于 : 2024-04-05 01:39:50
- 更新于 : 2024-12-12 10:37:50
- 链接: https://xn--vfv958a.com/2024/04/05/自动获取Greenhub激活码:源码分析与脚本编写/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。