本文主要是介绍ja-netfilter的前世今生和非对称加密的欺骗原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- ja-netfilter
- 起源
- 官网
- 插件
- 插件配置文件
- 插件的综合应用
- 更多用法
- 非对称加密欺骗原理
- 非对称加密和数字证书
- 激活过程和欺骗手段分析
- 代码示例
- 第一步:生成自签名证书脚本
- 第二步:使用自签名证书对产品激活信息进行签名
- 样例数据
- 样例激活码(注:用于代码演示,直接粘贴到JetBrains 家 IDE 中无法完成激活!不用试,肯定提示无效,无法激活!!)
- 样例power.conf(配合ja-netfilter使用,使得上述的激活码从无效变为有效可用状态)
ja-netfilter
起源
ja-netfilter是 Neo 搞的一个开源项目。
Neo 之前搞得开源项目IDE Eval Resetter,是通过无限试用的方式来使用 JetBrains
全家桶,该项目在2021.2.2及以下版本很好用;2021.3以下(不含)堪堪能用,需要配合一些手法;2021.3版本开始正式失效。Neo 也已经弃坑,放弃了该项目。
接着搞了 ja-netfilter 项目,它是基于java agent技术的工具,通过编写插件的方式,依靠java agent技术进行AOP(Aspect-Oriented Programming,面向切面编程),可以对Java程序(也仅对Java程序才能使用)基于规则进行拦截和修改。但实际上,主要还是用于 JetBrains 家 IDE。
官网
Neo的个人博客是 知了,可以参见其个人博客的详情介绍:ja-netfilter。
ja-netfilter 是开源项目,源码仓:https://gitee.com/ja-netfilter/ja-netfilter,码云还能用。不过,作者的GitHub已被封禁,原GitHub项目 ja-netfilter 已经成为历史。
其他,ja-netfilter的fork版本到处都是,推荐:
- v-JiangNan/ja-netfilter-modified
- qianyu1009/ja-netfilter
- pippo1980/ja-netfilter-all
- zfkun/ja-netfilter-mymap-plugin
插件
- url:这个插件用于禁止http(s)请求。如果待请求的URL和配置文件相匹配,则会抛出SocketTimeoutException。
- dns:这个插件用于禁止指定域名的DNS解析。如果域名匹配,则会抛出UnknownHostException。
- hideme:这个插件的功能是让别人不知道当前jvm存在ja-netfilter。
- mymap:这个插件实现比较粗糙,仅是在调用Map.put时,如果key符合配置文件,那么就把待put的value替换为配置文件中对应的value。这种做法很暴力,容易造成冲突,不过,目前这个插件也已经被废弃掉了。
- power:最核心的插件。这个插件hook了oddModPow函数,让这个函数返回自己想要的值。因为非对称加密常常使用这个函数,所以使用恰当的值来hook这个函数就能瞒天过海。其中ArgsFilter用来修改入参,ResultFilter用来修改返回结果。更多实例参见作者文章: Power插件应用:搞定YouTrack和Upsource、Power插件应用:搞定tinyMediaManager。
插件配置文件
插件目录里的配置目录里的插件、配置文件是一一对应关系。各个插件对应的配置文件为config目录中的${lower plugin name}.conf
文件。
可以通过javaagent参数来指定目录,例如:-javaagent:/path/to/ja-netfilter.jar=appName
的配置、日志和插件目录将是config-appname
、logs-appname
和plugins-appname
。
如果没有指定javaagent参数,目录默认为config、logs和plugins。
插件的综合应用
作者提到的热心大佬,主要是指:jetbra。
具体的应用举例:
- https://ipfs.infura-ipfs.io/ipfs/bafybeih65no5dklpqfe346wyeiak6wzemv5d7z2ya7nssdgwdz4xrmdu6i/
更多用法
比如 ja-netfilter.jar 除了最常见的作为java命令的参数(或添加到JVM Options file)的用法,还支持 attach mode。
具体参见开源代码仓库:ja-netfilter/ja-netfilter。
非对称加密欺骗原理
非对称加密和数字证书
非对称加密技术简而言之就是使用私钥加密或签名,公钥验证签名或解密。数字证书则是公钥、私钥的封装形式。
非对称加密和数字证书相关详细内容,不再赘述,如有需要可查看:数字证书的制作和格式转换。
激活过程和欺骗手段分析
激活过程实际上就是使用公钥验证签名的过程。包含两个核心步骤:
- 验证公钥证书的可信性:确保公钥证书是由受信任的证书颁发机构(CA)签发,并且未被篡改或撤销。
- 使用公钥证书验证签名:利用证书中的公钥来确认签名的有效性,从而验证数据的完整性和来源的真实性。
欺骗手段分析:
- 验证公钥证书的可信性:使用ja-netfilter完成,通过java agent方式拦截验证函数,将
x.modpow(y,z)
的返回值改为fakeResult
,这里即对应了power插件的配置文件power.conf
里的配置内容:EQUAL,x,y,z->fakeResult
。 - 使用公钥证书验证签名:生成自签名证书,然后使用自签名证书对自定义的信息(即产品激活信息)进行签名。签名是真实有效的,就是证书不是官方证书。
代码示例
第一步:生成自签名证书脚本
generate_cert.py
完成自签名证书的生成:
import datetimefrom cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.x509.oid import NameOIDone_day = datetime.timedelta(days=1)
ten_day = datetime.timedelta(days=3650)
today = datetime.datetime.today()
yesterday = today - one_day
tomorrow = today + ten_dayprivate_key = rsa.generate_private_key(public_exponent=65537,key_size=4096,backend=default_backend()
)
public_key = private_key.public_key()
builder = x509.CertificateBuilder()builder = builder.subject_name(x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, 'MoYuno-from-2022-07-25'),
]))
builder = builder.issuer_name(x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, 'JetProfile CA'),
]))
builder = builder.not_valid_before(yesterday)
builder = builder.not_valid_after(tomorrow)
builder = builder.serial_number(x509.random_serial_number())
builder = builder.public_key(public_key)certificate = builder.sign(private_key=private_key, algorithm=hashes.SHA256(),backend=default_backend()
)
private_bytes = private_key.private_bytes(encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.TraditionalOpenSSL,encryption_algorithm=serialization.NoEncryption())
public_bytes = certificate.public_bytes(encoding=serialization.Encoding.PEM)
with open("ca.key", "wb") as fout:fout.write(private_bytes)
with open("ca.crt", "wb") as fout:fout.write(public_bytes)
第二步:使用自签名证书对产品激活信息进行签名
generate_key.py
完成对自定义的信息(即产品激活信息)进行签名。并按照 power.conf 和激活码的格式组织和输出相关内容。
import base64from Crypto.Hash import SHA1, SHA256
from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
from Crypto.Util.asn1 import DerSequence, DerObjectId, DerNull, DerOctetString
from Crypto.Util.number import ceil_div
from cryptography import x509
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding# noinspection PyTypeChecker
def pkcs15_encode(msg_hash, emLen, with_hash_parameters=True):"""Implement the ``EMSA-PKCS1-V1_5-ENCODE`` function, as defined:param msg_hash: hash object:param emLen: int:param with_hash_parameters: bool:return: An ``emLen`` byte long string that encodes the hash."""digestAlgo = DerSequence([DerObjectId(msg_hash.oid).encode()])if with_hash_parameters:digestAlgo.append(DerNull().encode())digest = DerOctetString(msg_hash.digest())digestInfo = DerSequence([digestAlgo.encode(),digest.encode()]).encode()# We need at least 11 bytes for the remaining data: 3 fixed bytes and# at least 8 bytes of padding).if emLen < len(digestInfo) + 11:raise TypeError("Selected hash algorithm has a too long digest (%d bytes)." % len(digest))PS = b'\xFF' * (emLen - len(digestInfo) - 3)return b'\x00\x01' + PS + b'\x00' + digestInfo# 用于存储证书内容的字符串
certificate_content = ""# 用于标记是否已经开始读取证书内容
reading_certificate = False# 打开源文件并逐行读取
with open('ca.crt', 'r', encoding='utf-8') as file:for line in file:# 去掉行尾的换行符line = line.strip()# 检查是否是证书开始标记if line == "-----BEGIN CERTIFICATE-----":reading_certificate = Truecontinue# 检查是否是证书结束标记if line == "-----END CERTIFICATE-----":reading_certificate = Falsebreak# 如果已经在读取证书内容if reading_certificate:certificate_content += line# 输出结果
#print(certificate_content)certBase64 = certificate_contentcert = x509.load_der_x509_certificate(base64.b64decode(certBase64))
public_key = cert.public_key()
sign = int.from_bytes(cert.signature, byteorder="big", )
#print(f"sign:{sign}")modBits = public_key.key_size
digest_cert = SHA256.new(cert.tbs_certificate_bytes)
r = int.from_bytes(pkcs15_encode(digest_cert, ceil_div(modBits, 8)), byteorder='big', signed=False)
#print(f"result:{r}")# 模幂运算指数
modIndex = '65537'# jetbrains内置root证书的公钥的模
rootCertVersion1 = '860106576952879101192782278876319243486072481962999610484027161162448933268423045647258145695082284265933019120714643752088997312766689988016808929265129401027490891810902278465065056686129972085119605237470899952751915070244375173428976413406363879128531449407795115913715863867259163957682164040613505040314747660800424242248055421184038777878268502955477482203711835548014501087778959157112423823275878824729132393281517778742463067583320091009916141454657614089600126948087954465055321987012989937065785013284988096504657892738536613208311013047138019418152103262155848541574327484510025594166239784429845180875774012229784878903603491426732347994359380330103328705981064044872334790365894924494923595382470094461546336020961505275530597716457288511366082299255537762891238136381924520749228412559219346777184174219999640906007205260040707839706131662149325151230558316068068139406816080119906833578907759960298749494098180107991752250725928647349597506532778539709852254478061194098069801549845163358315116260915270480057699929968468068015735162890213859113563672040630687357054902747438421559817252127187138838514773245413540030800888215961904267348727206110582505606182944023582459006406137831940959195566364811905585377246353'
rootCertVersion2 = '24156627931985958051017183040835577271803742470193804806479316178045088981962804168393398987646446251087541768081971475544151551235525470790716604369379805327668466429966167642117961353233058515180243264560201783520956161510523416923017697354365782825500659342029196527776056976223174394946371372849906309277537461992299774200098515526818746947230488275456663264920440977381968978227273889068919338259949793686590492904029279861913225794809675826299753284990778166519152326723946780528965868736869495336993456735232755342913885746267768375682771655854436236934171901662660193080235109535758464079136573948168636773471'# 通用参数替换
commonArgsStr = 'EQUAL,65537,24773058818499217187577663886010908531303294206336895556072197892590450942803807164562754911175164262596715237551312004078542654996496301487027034803410086499747369353221485073240039340641397198525027728751956658900801359887190562885573922317930300068615009483578963467556425525328780085523172495307229112069939166202511721671904748968934606589702999279663332403655662225374084460291376706916679151764149324177444374590606643838366605181996272409014933080082205048098737253668016260658830645459388519595314928290853199112791333551144805347785109465401055719331231478162870216035573012645710763533896540021550083104281->3,24773058818499217187577663886010908531303294206336895556072197892590450942803807164562754911175164262596715237551312004078542654996496301487027034803410086499747369353221485073240039340641397198525027728751956658900801359887190562885573922317930300068615009483578963467556425525328780085523172495307229112069939166202511721671904748968934606589702999279663332403655662225374084460291376706916679151764149324177444374590606643838366605181996272409014933080082205048098737253668016260658830645459388519595314928290853199112791333551144805347785109465401055719331231478162870216035573012645710763533896540021550083104281'power = '[Result]' + "\n" + '; Suit 230914' + "\n"
power += 'EQUAL,' + str(sign) + ',' + modIndex + ',' + rootCertVersion1 + '->' + str(r) + "\n"
power += 'EQUAL,' + str(sign) + ',' + modIndex + ',' + rootCertVersion2 + '->' + str(r) + "\n"
power += "\n"
power += '[Args]' + "\n"
power += commonArgsStr
print(power)# 打开文件
with open('power.conf', 'w', encoding='utf-8') as file:# 写入字符串file.write(power)print("已写入文件 power.conf")licenseId = 'FV8EM46DQYC5AW9'
licensePart = '{"licenseId":"FV8EM46DQYC5AW9","licenseeName":"lixiaobai","licenseeType":"PERSONAL","assigneeName":"","assigneeEmail":"","licenseRestriction":"","checkConcurrentUse":false,"products":[{"code":"GO","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"RS0","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"DM","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"CL","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"RSU","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"RSC","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":true},{"code":"PC","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"DS","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"RD","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"RC","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"RSF","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":true},{"code":"RM","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"II","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"DPN","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"DB","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"DC","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"PS","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"RSV","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":true},{"code":"WS","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":false},{"code":"PSI","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":true},{"code":"PCWMP","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":true},{"code":"RS","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":true},{"code":"DP","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":true},{"code":"PDB","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":true},{"code":"PRR","fallbackDate":"2026-09-14","paidUpTo":"2026-09-14","extended":true}],"metadata":"0220240702PSAX000005X","hash":"12345678/0-541816629","gracePeriodDays":7,"autoProlongated":false,"isAutoProlongated":false,"trial":false,"aiAllowed":true}'digest = SHA1.new(licensePart.encode('utf-8'))with open('ca.key') as prifile:private_key = RSA.import_key(prifile.read())# 使用私钥对HASH值进行签名signature = pkcs1_15.new(private_key).sign(digest)sig_results = base64.b64encode(signature)licensePartBase64 = base64.b64encode(bytes(licensePart.encode('utf-8')))public_key.verify(base64.b64decode(sig_results),base64.b64decode(licensePartBase64),padding=padding.PKCS1v15(),algorithm=hashes.SHA1(),)result = licenseId + "-" + licensePartBase64.decode('utf-8') + "-" + sig_results.decode('utf-8') + "-" + certBase64print(result)# 打开文件
with open('activeCode.txt', 'w', encoding='utf-8') as file:# 写入字符串file.write(result)print("已写入文件 activeCode.txt")
样例数据
样例激活码(注:用于代码演示,直接粘贴到JetBrains 家 IDE 中无法完成激活!不用试,肯定提示无效,无法激活!!)
cat activeCode.txt
:
FV8EM46DQYC5AW9-eyJsaWNlbnNlSWQiOiJGVjhFTTQ2RFFZQzVBVzkiLCJsaWNlbnNlZU5hbWUiOiJsaXhpYW9iYWkiLCJsaWNlbnNlZVR5cGUiOiJQRVJTT05BTCIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiIiLCJjaGVja0NvbmN1cnJlbnRVc2UiOmZhbHNlLCJwcm9kdWN0cyI6W3siY29kZSI6IkdPIiwiZmFsbGJhY2tEYXRlIjoiMjAyNi0wOS0xNCIsInBhaWRVcFRvIjoiMjAyNi0wOS0xNCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUlMwIiwiZmFsbGJhY2tEYXRlIjoiMjAyNi0wOS0xNCIsInBhaWRVcFRvIjoiMjAyNi0wOS0xNCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiRE0iLCJmYWxsYmFja0RhdGUiOiIyMDI2LTA5LTE0IiwicGFpZFVwVG8iOiIyMDI2LTA5LTE0IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJDTCIsImZhbGxiYWNrRGF0ZSI6IjIwMjYtMDktMTQiLCJwYWlkVXBUbyI6IjIwMjYtMDktMTQiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTVSIsImZhbGxiYWNrRGF0ZSI6IjIwMjYtMDktMTQiLCJwYWlkVXBUbyI6IjIwMjYtMDktMTQiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJTQyIsImZhbGxiYWNrRGF0ZSI6IjIwMjYtMDktMTQiLCJwYWlkVXBUbyI6IjIwMjYtMDktMTQiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUEMiLCJmYWxsYmFja0RhdGUiOiIyMDI2LTA5LTE0IiwicGFpZFVwVG8iOiIyMDI2LTA5LTE0IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJEUyIsImZhbGxiYWNrRGF0ZSI6IjIwMjYtMDktMTQiLCJwYWlkVXBUbyI6IjIwMjYtMDktMTQiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IlJEIiwiZmFsbGJhY2tEYXRlIjoiMjAyNi0wOS0xNCIsInBhaWRVcFRvIjoiMjAyNi0wOS0xNCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUkMiLCJmYWxsYmFja0RhdGUiOiIyMDI2LTA5LTE0IiwicGFpZFVwVG8iOiIyMDI2LTA5LTE0IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSU0YiLCJmYWxsYmFja0RhdGUiOiIyMDI2LTA5LTE0IiwicGFpZFVwVG8iOiIyMDI2LTA5LTE0IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlJNIiwiZmFsbGJhY2tEYXRlIjoiMjAyNi0wOS0xNCIsInBhaWRVcFRvIjoiMjAyNi0wOS0xNCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiSUkiLCJmYWxsYmFja0RhdGUiOiIyMDI2LTA5LTE0IiwicGFpZFVwVG8iOiIyMDI2LTA5LTE0IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJEUE4iLCJmYWxsYmFja0RhdGUiOiIyMDI2LTA5LTE0IiwicGFpZFVwVG8iOiIyMDI2LTA5LTE0IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJEQiIsImZhbGxiYWNrRGF0ZSI6IjIwMjYtMDktMTQiLCJwYWlkVXBUbyI6IjIwMjYtMDktMTQiLCJleHRlbmRlZCI6ZmFsc2V9LHsiY29kZSI6IkRDIiwiZmFsbGJhY2tEYXRlIjoiMjAyNi0wOS0xNCIsInBhaWRVcFRvIjoiMjAyNi0wOS0xNCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUFMiLCJmYWxsYmFja0RhdGUiOiIyMDI2LTA5LTE0IiwicGFpZFVwVG8iOiIyMDI2LTA5LTE0IiwiZXh0ZW5kZWQiOmZhbHNlfSx7ImNvZGUiOiJSU1YiLCJmYWxsYmFja0RhdGUiOiIyMDI2LTA5LTE0IiwicGFpZFVwVG8iOiIyMDI2LTA5LTE0IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IldTIiwiZmFsbGJhY2tEYXRlIjoiMjAyNi0wOS0xNCIsInBhaWRVcFRvIjoiMjAyNi0wOS0xNCIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUFNJIiwiZmFsbGJhY2tEYXRlIjoiMjAyNi0wOS0xNCIsInBhaWRVcFRvIjoiMjAyNi0wOS0xNCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQQ1dNUCIsImZhbGxiYWNrRGF0ZSI6IjIwMjYtMDktMTQiLCJwYWlkVXBUbyI6IjIwMjYtMDktMTQiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUlMiLCJmYWxsYmFja0RhdGUiOiIyMDI2LTA5LTE0IiwicGFpZFVwVG8iOiIyMDI2LTA5LTE0IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IkRQIiwiZmFsbGJhY2tEYXRlIjoiMjAyNi0wOS0xNCIsInBhaWRVcFRvIjoiMjAyNi0wOS0xNCIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQREIiLCJmYWxsYmFja0RhdGUiOiIyMDI2LTA5LTE0IiwicGFpZFVwVG8iOiIyMDI2LTA5LTE0IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBSUiIsImZhbGxiYWNrRGF0ZSI6IjIwMjYtMDktMTQiLCJwYWlkVXBUbyI6IjIwMjYtMDktMTQiLCJleHRlbmRlZCI6dHJ1ZX1dLCJtZXRhZGF0YSI6IjAyMjAyNDA3MDJQU0FYMDAwMDA1WCIsImhhc2giOiIxMjM0NTY3OC8wLTU0MTgxNjYyOSIsImdyYWNlUGVyaW9kRGF5cyI6NywiYXV0b1Byb2xvbmdhdGVkIjpmYWxzZSwiaXNBdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJ0cmlhbCI6ZmFsc2UsImFpQWxsb3dlZCI6dHJ1ZX0=-CxBboTr/RToiStkK85rwyDLAPlEu1TVOBMY3qjdPUwYzOYeKurq6gmU/DDOdE7T3uyg3cW9R1kQO/Ix+tDylfJ5beSj3oBM0wfhEUyHSAXudV97C1iieui8C9281oWTsKAddmn7OeMW7TUj89pU06tPqTo87BxtUIsa0ynxqK+AyxmsJzDeGtqApR/V0VsB2Vr6M9Jb16pIYmE65q6xBLJzEL0i+G1H6nhyub7ZoEA7vMIfJ+icPlg3k7m8XN9F9tM+GXCIP+sUM9jd4MjAxJTi8s4jL7OL0HV9kFbACdc7rWbnEezqdPkPbryjgP/kNa9sbD51P0aSTHjDMHIm4n9AFMTU+ChCEWv1dJy5McTWKIpaBHG8DCk9fdcmUGlzp9sjZkBI8SOnzvb5kCDHgmlxYv6e4KlRAQ40dZHW4r2tju2TMb9732GCSjUO2BsFr4bJ3S0YGiNM3cCVzkV8gRsAuren8D1/9u4m0pM+QVPGRa9/uyxhGV8IA4FKnfiqjbv2V2mrXLJdf8hBALNav66NMdu/fIvbO1XO4Svigxd60QNV+l9a0hPI3lOIMPlB88DIuiqMBqnx+ogqqJwvXTca0zLnzUNML5DwXPRvg6aD80CCDLsZqxUI4/EEuraL+hUnH1+gj8QujsBBszBJel9wfR1iPmiFzWVAJwTceCz0=-MIIExTCCAq2gAwIBAgIUBs+4guJBU9l/V2106XwNv6iXjKQwDQYJKoZIhvcNAQELBQAwGDEWMBQGA1UEAwwNSmV0UHJvZmlsZSBDQTAeFw0yNDA5MDIxNjI0MjVaFw0zNDA5MDExNjI0MjVaMCExHzAdBgNVBAMMFk1vWXVuby1mcm9tLTIwMjItMDctMjUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCWBnjmAIP7ydXqWdoQBy64eCcLTx+6l6mPLoz1VlE4pT8Jb0T28NQCEhYLqMyDttmN3VP0rLsIS33rppX7u7vcz0IAv8wECs6tYJZ6DE1HcAovgvrF4OFcOj396vnOUsEIZ152yTa3/sOsTtkVlguJwvslP2RfbOh9jScvYSfsgGsItgFByB0HM/ks3OI5nCaEwogExH4/7+ftvxEdKp++IXF+z/4deD0qhjtmtgup6tsqkO1BGzq7+CmkmUCmes2+81hWm/ke6wWgBjjQx5ir5uitdpm/WTyZb5STmp3UxjvptaB26PexR3nTL8yUXewcKF7S6oekxqYqUcUDxItr4M675D4ri5jYOQmN/138AuImISMz4ZhvphnlYrJHwsUYZDQJph7hjk2SdT8KYzNutE3t22fP0prDMEE77LhiqzsehdPlw36fF4hSiQM3gUt9zSTeNISAMWnOSqfGw/JUR7ajpSJ/hyv9ZrKhzVoTQMW07M7E9ehn/JQvfSvmNvP5u3TSpPBIfhqH2Y+INpm22D9V2SMu9fqIqEdqxYbPJDusrdUBdSuz6KA3DmGEhPV7AuzFXg3ElNBeKMjHYZUkbSP54lDF1m79bFKcZK2ls7XjwohVaekdDQg0bosH9WuDKzpe7mpoy0IOfRvnkkI4X7yV10dkCGRlZ4WpC4/ldwIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQB1YYemhs7q941wKYPLJCu2vsKft+T/WnJ+r7QGe0pCQwfJDtvuLHtO+T/6DqylbQjAJlOOXMRjDPGzf/2S1UggQwNYy+c2syqtC0k6kN9Ja1soZQEO0E34GcztID+N7SSaxmTiUnzAucmZQpfP9sDIqFrBdBwovfypXLDcw9GrsfQIknrBMaVcEeaDxtviY2bkTmU/c5HnEPsnVa2XHmF8rwPqYU63cqsT8qtxm9w8LxPlwZqM4Jmv29KG5pZiooq1AN0nMHouYdJDgp+iQXFKo2w7VXzcysyzIEa4tdzqycEvXfXRRDUHftsyriYzynqWaC9XquY5C8L6B5OY4RTJlBXlgj9UP3CeAChfBpTy1NqeX4Zo8hJ5KlrfvEHIFcXtfxjIj+YzBIFONw0Lc+PPZOFsFidGgZaA6RcmUv1g+tPjsSKc7+vzNSUfN8MojjzZb3yDyJ6dG2kgBO4jEAXWSBnWah1l9kI18sPD5Vp2Zj/eNajdY7jcAqqtWqbJo7DjfbUC0AEtYkfr94APZPx9h5nvld340JbwDX1VqhDLIspnrKf58tIR2V1V8YgzwNnUB4vgVdkSa5DcwLK/gLi3cs8J1ONBqPQN9e2s9Iq+xqiGB7A9/lUaVYaBP9sMJZwDyXU3kvEkSJ8aXlAfaGe6Z4xr/UuDHvez+gQY4mpttw==
样例power.conf(配合ja-netfilter使用,使得上述的激活码从无效变为有效可用状态)
该配置文件仅针对上述的激活码的特征进行匹配生效,并修改公钥证书返回值为自定义证书值,从而,可见效果:使得上述的激活码从无效变为有效可用状态。
根据Base64解码其激活信息可知:其适用于 JetBrains 全家桶,并且fallbackDate设置为2026-09-14,这意味着拥有所使用版本的永久回退许可。这指的是在某些特定条件下,比如当订阅或许可服务过期或出现问题时,仍然有权继续使用该软件的一个永久许可版本作为备用方案。换言之,即使在到期之后,仍然可以正常使用该软件到期日期前的最新版本,只是不能接收软件更新和使用软件新版本了。
cat power.conf
:
[Result]
; Suit 230914
EQUAL,478872602894883353672665988376265439992743923062550654710440347521963438695342878296302849820798027411923838144378757355524835351430687175017111976969540278813906397983473000489580719117654512258063922927212911761341055453386052338720120347611768639665360231158010929669757330371301496841705365455394317353737083038494533745854656861466179231476371398359059893319611384162397706771896316842051974946682307732438850527967679271631967825907072313381435175797230816995713545425149027065534801254917043442295018099090871148236882805803542027308103867260722355817427842686220752175462409821585653882319804239010301551935453545151529737765863223285999802584548168783205638165907957953679169959773327693215769081651652928195200971448521235147926809539944428157223473473293519189074500653563102862536923545902858812521387229036425932785214194712344530514638167350996754546086665081426374529733973340000022168788004264744528011327169476238263159983640095928301171060400515065090021354103722791412774090121459056211586987722294362447255745738728359754250314974464371914043996512723322528482675463254224459989418045745190830880234630913335965894140128377150418751804984201788654709089831591851652220814025534543194091641411727334496704488172983,65537,860106576952879101192782278876319243486072481962999610484027161162448933268423045647258145695082284265933019120714643752088997312766689988016808929265129401027490891810902278465065056686129972085119605237470899952751915070244375173428976413406363879128531449407795115913715863867259163957682164040613505040314747660800424242248055421184038777878268502955477482203711835548014501087778959157112423823275878824729132393281517778742463067583320091009916141454657614089600126948087954465055321987012989937065785013284988096504657892738536613208311013047138019418152103262155848541574327484510025594166239784429845180875774012229784878903603491426732347994359380330103328705981064044872334790365894924494923595382470094461546336020961505275530597716457288511366082299255537762891238136381924520749228412559219346777184174219999640906007205260040707839706131662149325151230558316068068139406816080119906833578907759960298749494098180107991752250725928647349597506532778539709852254478061194098069801549845163358315116260915270480057699929968468068015735162890213859113563672040630687357054902747438421559817252127187138838514773245413540030800888215961904267348727206110582505606182944023582459006406137831940959195566364811905585377246353->31872219281407242025505148642475109331663948030010491344733687844358944945421064967310388547820970408352359213697487269225694990179009814674781374751323403257628081559561462351695605167675284372388551941279783515209238245831229026662363729380633136520288327292047232179909791526492877475417113579821717193807584807644097527647305469671333646868883650312280989663788656507661713409911267085806708237966730821529702498972114194166091819277582149433578383639532136271637219758962252614390071122773223025154710411681628917523557526099053858210363406122853294409830276270946292893988830514538950951686480580886602618927728470029090747400687617046511462665469446846624685614084264191213318074804549715573780408305977947238915527798680393538207482620648181504876534152430149355791756374642327623133843473947861771150672096834149014464956451480803326284417202116346454345929350148770746553056995922154382822307758515805142704373984019252210715650875853634697920708113806880196144197384637328982263167395073688501517286678083973976140696077590122053014085412828620051470085033364773099146103525313018873319293728800442101520384088109603555959893639842091339193881650827793131163609825731838418267337700459500477583810421422394603927462721
EQUAL,478872602894883353672665988376265439992743923062550654710440347521963438695342878296302849820798027411923838144378757355524835351430687175017111976969540278813906397983473000489580719117654512258063922927212911761341055453386052338720120347611768639665360231158010929669757330371301496841705365455394317353737083038494533745854656861466179231476371398359059893319611384162397706771896316842051974946682307732438850527967679271631967825907072313381435175797230816995713545425149027065534801254917043442295018099090871148236882805803542027308103867260722355817427842686220752175462409821585653882319804239010301551935453545151529737765863223285999802584548168783205638165907957953679169959773327693215769081651652928195200971448521235147926809539944428157223473473293519189074500653563102862536923545902858812521387229036425932785214194712344530514638167350996754546086665081426374529733973340000022168788004264744528011327169476238263159983640095928301171060400515065090021354103722791412774090121459056211586987722294362447255745738728359754250314974464371914043996512723322528482675463254224459989418045745190830880234630913335965894140128377150418751804984201788654709089831591851652220814025534543194091641411727334496704488172983,65537,24156627931985958051017183040835577271803742470193804806479316178045088981962804168393398987646446251087541768081971475544151551235525470790716604369379805327668466429966167642117961353233058515180243264560201783520956161510523416923017697354365782825500659342029196527776056976223174394946371372849906309277537461992299774200098515526818746947230488275456663264920440977381968978227273889068919338259949793686590492904029279861913225794809675826299753284990778166519152326723946780528965868736869495336993456735232755342913885746267768375682771655854436236934171901662660193080235109535758464079136573948168636773471->31872219281407242025505148642475109331663948030010491344733687844358944945421064967310388547820970408352359213697487269225694990179009814674781374751323403257628081559561462351695605167675284372388551941279783515209238245831229026662363729380633136520288327292047232179909791526492877475417113579821717193807584807644097527647305469671333646868883650312280989663788656507661713409911267085806708237966730821529702498972114194166091819277582149433578383639532136271637219758962252614390071122773223025154710411681628917523557526099053858210363406122853294409830276270946292893988830514538950951686480580886602618927728470029090747400687617046511462665469446846624685614084264191213318074804549715573780408305977947238915527798680393538207482620648181504876534152430149355791756374642327623133843473947861771150672096834149014464956451480803326284417202116346454345929350148770746553056995922154382822307758515805142704373984019252210715650875853634697920708113806880196144197384637328982263167395073688501517286678083973976140696077590122053014085412828620051470085033364773099146103525313018873319293728800442101520384088109603555959893639842091339193881650827793131163609825731838418267337700459500477583810421422394603927462721[Args]
EQUAL,65537,24773058818499217187577663886010908531303294206336895556072197892590450942803807164562754911175164262596715237551312004078542654996496301487027034803410086499747369353221485073240039340641397198525027728751956658900801359887190562885573922317930300068615009483578963467556425525328780085523172495307229112069939166202511721671904748968934606589702999279663332403655662225374084460291376706916679151764149324177444374590606643838366605181996272409014933080082205048098737253668016260658830645459388519595314928290853199112791333551144805347785109465401055719331231478162870216035573012645710763533896540021550083104281->3,24773058818499217187577663886010908531303294206336895556072197892590450942803807164562754911175164262596715237551312004078542654996496301487027034803410086499747369353221485073240039340641397198525027728751956658900801359887190562885573922317930300068615009483578963467556425525328780085523172495307229112069939166202511721671904748968934606589702999279663332403655662225374084460291376706916679151764149324177444374590606643838366605181996272409014933080082205048098737253668016260658830645459388519595314928290853199112791333551144805347785109465401055719331231478162870216035573012645710763533896540021550083104281
这篇关于ja-netfilter的前世今生和非对称加密的欺骗原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!