跳到主要内容

简单重置JetBrains试用

· 阅读需 4 分钟

前言

JetBrains公司的IDE十分好用,如Idea、Pycharm等。以前的各种激活方式被相继封杀,现在主要的白嫖方式是通过无限重置试用来实现的。(其实还是有永久激活的,关键词:FineAgent

那么,无限重置试用是怎么做的呢?有没有不装插件一键全部重置试用的方式呢?

原理

JetBrains的重置试用来自Jetbrains系列产品重置试用方法 | 知了,主要是需要安装IDE Eval Reset插件,插件源码:ide-eval-resetter: Reset your IDE eval information.

自JetBrains 2020版本,IDE的试用key保存在用户目录下的 AppData\Roaming\JetBrains<IDE名称>\eval 目录下,以.evaluation.key结尾。这是个非常小的文件,只有8字节,内容如下:

> xxd .\CLion212.evaluation.key
00000000: ffff fe83 76f7 f9b6 ....v...

16进制的ffff fe83 76f7 f9b6经过转为二进制,再取反,再转成十进制,其实就是试用时的时间戳(毫秒为单位),转换过程如下:

16进制         ffff fe83 76f7 f9b6
==> 二进制 1111111111111111111111101000001101110110111101111111100000000000
==> 取反 0000000000000000000000010111110010001001000010000000011111111111
==> 转成十进制 1634386577407
==> 转成时间 2021-10-16 20:16:17

那么,对于重置试用,只需要把新的值按照上面的转换规则写到key文件即可。

实现

在了解上面的原理后,实现起来其实不难,只要把新的时间戳按位取反再以二进制写到key文件即可。

考虑到用Golang写能直接编译成可执行文件,同时为了练习,这里给出个Golang实现的版本,方便Windows编译成exe,通过其它方式实现也是非常简单的。

package main

import (
"bytes"
"encoding/binary"
"os"
"path/filepath"
"time"
)

func main() {
home := os.Getenv("userprofile")
pattern := filepath.Join(home, "AppData", "Roaming", "JetBrains", "*", "eval", "*.evaluation.key")
evalKey, _ := filepath.Glob(pattern)
var fp *os.File
defer fp.Close()
for _, key := range evalKey {
buf := new(bytes.Buffer)
fp, _ = os.Create(key)
target := ^uint64(time.Now().UnixNano() / 1e6)
binary.Write(buf, binary.BigEndian, target)
fp.Write(buf.Bytes())
}
}

为了方便在MacOS上使用,再给出一个Python实现的版本:

#!/usr/bin/python3
import os
from glob import glob
from struct import pack
from time import time

home = os.environ["HOME"]
pattern = os.path.join(home, "Library", "Application Support", "JetBrains", "*", "eval", "*.evaluation.key")
for key in glob(pattern):
with open(key, 'wb') as f:
target = -int(time() * 1000)
f.write(pack('>q', target))

自动执行

如果手动执行的话自然还是比较麻烦的,所以可以新建一个任务计划自动执行。打开任务计划程序,新建一个任务计划,操作选择上面编译出来的可执行文件,至于触发器,考虑到我一般0点的时候开着电脑,这里选择每天0点执行。

配置好后,就能每天定时自动重置JetBrains试用了,并且不需要一个个IDE去安装IDE Eval Reset插件,也不需要重启IDE:试用到期后,选择“Add New License”再选择试用,即可让IDE重新加载key文件。