涛之雨 发表于 2021-11-22 16:20

【vscode插件】quokka pro 激活码

本帖最后由 涛之雨 于 2021-11-22 16:30 编辑

# 前言

似乎是本地算法。。。(我也挺莫名其妙。。。)
首先是看一下注册成功后的效果:



上图左边正常使用`pro`,右边显示正常“注册”,有时候会弹出过期(如下图)或者试用的窗口(如上图右下角)



> PS:
> 虽然右下角每次都会弹窗(有时候是试用,有时候是升级pro,有时候是过期)
> 但是能用就好不是。。。
> 当然,改`js`也不是不行。。。但是每次更新都要改就挺烦的,
> 能“正规注册”为什么要改代码(笑~)

# VSCODE

## 恢复未激活的状态

> 删除用户文件夹下的`.wallaby`和`.quokka`文件夹即可
> 注:会导致`vscode`中的该插件个性化配置丢失

`vscode`中不是很会调试插件(需要插件的`debug`模式,但是因为是打包的,不会进),
但是我们可以通过一些特征找到相关的判断(和算法)|
根据前辈的[相关教程](https://www.cnblogs.com/liuxianan/p/vscode-plugin-overview.html),可以找到`vscode`的控制台和该插件的目录

|                        `vscode`控制台                        |                        插件目录                         |
| :----------------------------------------------------------: | :-----------------------------------------------------: |
|||

## 找判断

点开quokka的欢迎、说明、激活、新功能介绍多合一页,一顿搜索,发现了是本地进行判断的



而且看到文件名就是`main.js`,格式化、搜索、翻看、猜,
一顿操作猛如虎,看到赋值的地方



很好,没混淆,可以省不少事情。

## 分析算法

又是根据node地常识和相关说明文档[[官方](https://code.visualstudio.com/api)&[中译](http://liik.gitee.io/vs-code-extension-doc-zh/#/)],
找到相关的`package.json`配置,
并且根据关键词:`licenseDetails`
在文件夹里搜索,
即可在`dist`文件夹中找到相关的函数:

(因为相关代码过长,不方便直接查看,因此这里我放上截图可能会好点([【本截图生成的网站】](https://carbon.now.sh/),感觉效果还不错)



跟着代码走,因为是插件,哪里不知道还可以打一个`log`,比如`t`应该是时间戳,`i`就是构建的一个验证相关的对象,但是`n.quokkaConfigPath`这个路径是什么这里没有,而我也不想全局搜索,完全可以通过日志打印出来

> 注:目前本人只知道字符串,数字布尔等基础类型可以直接通过log打印,
> 但是因为插件并非调试模式,因此无法打印object或者是下`debugger`断点
> 如果有大佬们知道如何调试非调试模式的`vscode`插件
> 还希望能不吝赐教

比如:

```javascript
console.log(`n.quokkaConfigPath:${n.quokkaConfigPath},n.olp${n.olp}`);
```

**重新加载**插件,即可获得相关的数据



最终的逻辑大概是:

1. `L43`-读取`.qlc`文件
2. `L57`-`base64`解码后以`\n`分割,第二行`s`以`,`分割
3. 分割后的内容:
   第一行是用户名(注册人),(`s`)
   第二行第一字段为邮箱(`a`)
   第二行第二字段为授权方式(`o`,`company`“企业”和`enterprise`“商业”,这两种授权无“更新链接”)
   第二行的第三四字段此处未读取,未知;
   第二行第五字段为代{过}{滤}理商(`r`)
   第二行第六字段为试用标识(`l`,`1`表示试用)
   第三行是日期,以`/`分割,`日/月/年`的顺序

由此我们拼接出我们想要的注册码:

```
5rab5LmL6ZuoQOWQvueIseegtOinowpjcmFja2VkIGJ5IHRhb3poaXl1LGVudGVycHJpc2UsLCwKMzAvMTIvMjk5OQ==
```

## 激活失败

此时我们还不知道有没有强制的服务器验证,
不过就算如果有的话就再改好了

>因为需要确保能正常更新,所以我们甚至有可能会写个尝试写个`vscode`插件,
>加载的时候去动态修改代码,然后重新加载,以达到自动绕过验证的问题

结果很突兀地:



注册失败了。

## 找其它位置

不清楚什么原因,但是肯定方向是没错的,要不就是服务器验证,要不就是找错地方了。

继续找&搜索



通过进一步的搜索和查找,在黄框处看到了`activateLicense`函数。

文件夹里搜索后,果然发现了有相关代码:

```javascript
_activateLicense({ email: e, key: t }) {
if (!c.controller)
    return void this._panel.webview.postMessage({
      command: "activationError",
      message: "VS Code has not finished loading, please try and activate again later.",
    });
const i = new Date();
let s = !1;
c.controller.processLicenseChange(e || t, (e) => {
      if (!s) {
      s = !0;
      const t = new Date() - i,
          a = (e) => (t < 500 ? setTimeout(e, 500 - t) : e());
      "notification" === e.type && (e = e.text),
          "info" === e.type || "warning" === e.type ?
          a(() =>
            this._panel.webview.postMessage({
            command: "activationSuccess",
            message: e.text,
            licenseDetails: c.getLicenseDetails(),
            })
          ) :
          a(() =>
            this._panel.webview.postMessage({
            command: "activationError",
            message: e.text,
            })
          );
      }
    }),
    e &&
    setTimeout(() => {
      s ||
      ((s = !0),
          this._panel.webview.postMessage({
            command: "activationError",
            message: "A timeout occurred while attempting to validate your email address.",
          }));
    }, 25e3);
}
```

根据上述代码找到了`processLicenseChange`的定义和其中的`_parseLicenseKey`(驼峰好评,方便他人方便自己):



继续分析,发现跟之前的代码差不多,在`L103`获取解析的`key`,
在`L111`判断改成了是否以`Wallaby.js + Quokka.js`开始,

因此我们得到了新的注册码:

```
5rab5LmL6ZuoQOWQvueIseegtOinowpjcmFja2VkIGJ5IHRhb3poaXl1LFdhbGxhYnkuanMgKyBRdW9ra2EuanMgZW50ZXJwcmlzZSwsLDAKMzAvMTIvMjk5OQ==
```

> written&generated BY: 涛之雨@吾爱破解
>
> website:www.52pojie.cn

## 成功激活

似乎可以,录一个GIF吧,没有修改任何插件,直接输入注册码即可



不幸的是,插件的确有服务器验证,但是只有弹窗,关掉就好
(自然有可能以后会修复,但是至少现在是可以用的)

顺便说一下,如果真的那天有服务器验证了,除了每次修改代码之外,或许可以自己写个插件,然后自动判断有没有更新,如果更新了或者未对该插件代码进行修改的话就根据特征码修改这个插件然后重载(或者按照规范应该弹窗说明需要重启以重载)

PS:

价格好贵。。



# sublime

等一下,似乎还支持多款软件?



*JetBrains*我只装了`PyCharm`,应该不实用这个,又不想装了,第三个没听说过(我这里直连的话连其官网都打不开)

那我测试一下`sublime`吧



可恶,难道不通用?!

打开插件目录看一下



`zlib`和`base64`双重编码么。直接把exec改成print输出一下



拿出来稍微替换转义符、格式化一下就得到“源码”了

> 甚至因为python没有“打包”概念的关系,因此解码后就是源码。

搜索注册错误提示的内容,并且找调用和判断,最终找到`LicenseManager`,相关代码如下:



简要的看了一下,其实和之前分析的是一样的。不过`L27`的地方多了一个判断,似乎要求是四行?但是没有其它什么特殊的要求,因此我们修改一下,重新尝试注册:

```
5rab5LmL6ZuoQOWQvueIseegtOinowpjcmFja2VkIGJ5IHRhb3poaXl1LFdhbGxhYnkuanMgKyBRdW9ra2EuanMgZW50ZXJwcmlzZSwsLCwwCjMwLzEyLzI5OTkK
```

> written&generated BY: 涛之雨@吾爱破解
>
> website:www.52pojie.cn

成功注册,并且`vscode`和`sublime`很贴心的同步注册上了。



回合结束。(正经人谁用`sublime`撸码)



# Idea测试

反正通过了,感谢 [@正己](https://www.52pojie.cn/home.php?mod=space&uid=1109458)百忙中抽空帮我测试



(似乎不支持中文用户名,不过问题不大)

反正没人会看

# 注册码成品分享

自己想

# 吐槽一下

这个插件更新好快。。。



wanglin124 发表于 2021-12-30 11:57

踮起脚尖过日子 发表于 2021-11-22 16:35
四楼热屁股,衰

悬赏区看到你说地址换头的回复,冒昧的过来请教下大佬,我其实已经下载成功了,但是不明白其中的转换关系:
某鹅通提取地址:
https://encrypt-k-vod.xet.tech/9764a7a5vodtransgzp1252524126/a9404b645285890816016705044/drm/v.f421220.ts?start=241333664&end=241821535&type=mpegts&exper=0&sign=f309a43a4fe7eba1eb3f12f4d0f9c3da&t=6185fd53&us=w4GcgBkXOE1D&whref=%2A.xiaoe-tech.com%2C%2A.xiaoeknow.com
转换之后:
http://1252524126.vod2.myqcloud.com/9764a7a5vodtransgzp1252524126/a9404b645285890816016705044/drm/v.f421220.m3u8
这是相当于把ts文件的地址转成了m3u8吗?我也按这个格式自己修改了ts地址,果然就能下载了。
但是不知道其中道理,不知大佬可否指点一二。

涛之雨 发表于 2021-11-28 17:44

不苦小和尚 发表于 2021-11-28 15:41
还有个问题,就是用了10分钟,quokka进程就退出了,变成普通js了,是不是有暗装

emmmm我没遇到过这种情况,也可能是我没使用这么长时间吧。。
我连那个什么show都没注释掉
有空尝试写个插件去打补丁吧
反正就是想尽量能做到优雅修改,

涛之雨 发表于 2021-11-22 16:21

自古楼主坐沙发

正己 发表于 2021-11-22 16:24

工具人坐二楼

guogms1022 发表于 2021-11-22 16:31

无名小卒只配坐三楼{:301_1009:}

踮起脚尖过日子 发表于 2021-11-22 16:35

四楼热屁股,衰

先有我后有天 发表于 2021-11-22 16:37

扰乱他们的阵型

monk3435 发表于 2021-11-22 16:43

下来看看,感谢楼主

xp233 发表于 2021-11-22 16:49

感谢楼主分享

longker 发表于 2021-11-22 16:58

优秀啊!学习了

qtfreet00 发表于 2021-11-22 17:15

前排给老板打call
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 【vscode插件】quokka pro 激活码