├── README.md ├── poetry.lock ├── pyproject.toml └── src └── crack ├── __init__.py ├── atlassian ├── __init__.py └── atlassian.py ├── base.py ├── dbeaver ├── __init__.py ├── dbeaver-ee-public.key ├── dbeaver-ue-public.key └── dbeaver.py ├── finalshell ├── __init__.py └── finalshell.py ├── gitlab ├── __init__.py └── gitlab.py ├── jetbrains ├── __init__.py ├── jetbrains.py ├── licenses.json ├── licenses_base.json ├── plugins.json ├── plugins.py └── server.py └── xmind ├── __init__.py ├── crack ├── hook.js └── hook │ ├── crypto.js │ └── electron.js ├── old.pem └── xmind.py /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qy527145/crack/433badbeaa5a96457bd77699ef1af181c9923ef7/README.md -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "crack" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["wmymz "] 6 | readme = "README.md" 7 | 8 | [tool.poetry.dependencies] 9 | python = ">=3.12" 10 | crypto-plus = "*" 11 | asarpy = "*" 12 | requests = "^2.31.0" 13 | pysocks = "^1.7.1" 14 | grequests = "^0.7.0" 15 | lxml = "^5.1.1" 16 | websockets = "^12.0" 17 | fastapi = "^0.110.2" 18 | uvicorn = "^0.29.0" 19 | starlette = "^0.37.2" 20 | pydantic = "^2.7.0" 21 | typing-extensions = "^4.11.0" 22 | pydantic-core = "^2.18.2" 23 | annotated-types = "^0.6.0" 24 | click = "^8.1.7" 25 | h11 = "^0.14.0" 26 | 27 | [build-system] 28 | requires = ["poetry-core"] 29 | build-backend = "poetry.core.masonry.api" 30 | 31 | [[tool.poetry.source]] 32 | name = "tsinghua" 33 | url = "https://pypi.tuna.tsinghua.edu.cn/simple" 34 | priority = "default" 35 | -------------------------------------------------------------------------------- /src/crack/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qy527145/crack/433badbeaa5a96457bd77699ef1af181c9923ef7/src/crack/__init__.py -------------------------------------------------------------------------------- /src/crack/atlassian/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qy527145/crack/433badbeaa5a96457bd77699ef1af181c9923ef7/src/crack/atlassian/__init__.py -------------------------------------------------------------------------------- /src/crack/atlassian/atlassian.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import textwrap 3 | import zlib 4 | 5 | from crypto_plus import CryptoPlus 6 | 7 | key = "MIIBSwIBADCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoEFgIUNYsbkapILzW8VhfGrU4eHo6/Dqw=" 8 | 9 | template_license_data = """ 10 | #Thu Dec 21 16:52:17 CST 2023 11 | CreationDate=2023-12-21 12 | Evaluation=false 13 | Description=Unlimited license by https://zhile.io 14 | Organisation=dsa 15 | conf.active=true 16 | ContactEMail=asd 17 | licenseHash=MCwCFDtJo7HY9ptqFsplyRvDIXQPBYqKAhQvSzL+nA2Us6Y6qZ6oo88eoXLpqA== 18 | conf.Starter=false 19 | conf.LicenseTypeName=COMMERCIAL 20 | MaintenanceExpiryDate=2089-07-07 21 | LicenseID=LIDSEN-L1703148737131 22 | ServerID=123456 23 | conf.DataCenter=true 24 | keyVersion=1600708331 25 | LicenseExpiryDate=2089-07-07 26 | PurchaseDate=2023-12-21 27 | licenseVersion=2 28 | Subscription=true 29 | conf.NumberOfUsers=-1 30 | SEN=SEN-L1703148737131 31 | ContactName=asd 32 | """ 33 | 34 | 35 | def baseN(num, b, numerals="0123456789abcdefghijklmnopqrstuvwxyz"): # noqa 36 | return ((num == 0) and numerals[0]) or ( 37 | baseN(num // b, b, numerals).lstrip(numerals[0]) + numerals[num % b] 38 | ) 39 | 40 | 41 | def parse(code): 42 | code = code.strip().replace("\n", "") 43 | sig_index = code.rfind("X02") 44 | assert sig_index != -1, "无效激活码" 45 | code_len = int(code[sig_index + 3:], 31) 46 | code = code[:sig_index] 47 | code_bytes = base64.b64decode(code) 48 | assert len(base64.b64encode(code_bytes)) == code_len, "无效激活码" 49 | i = int.from_bytes(code_bytes[:4]) + 4 50 | text_bytes = code_bytes[4:i] 51 | hash_bytes = code_bytes[i:] 52 | 53 | dsa = CryptoPlus.loads(key) 54 | assert dsa.verify(text_bytes, hash_bytes, "SHA1"), "无效激活码" 55 | print(zlib.decompress(text_bytes[5:]).decode()) 56 | 57 | 58 | def generate(): 59 | prefix = b"\x0d\x0e\x0c\x0a\x0f" 60 | zip_bytes = zlib.compress(template_license_data.strip().encode()) 61 | message = prefix + zip_bytes 62 | message_head = len(message).to_bytes(4) 63 | dsa = CryptoPlus.loads(key) 64 | signature = dsa.sign(message, "SHA1") 65 | code_bytes = message_head + message + signature 66 | 67 | code_tail = "X02" + baseN(len(base64.b64encode(code_bytes)), 31) 68 | code = base64.b64encode(code_bytes).decode() + code_tail 69 | code = "\n".join(textwrap.wrap(code, 76)) 70 | print(code) 71 | return code 72 | 73 | 74 | if __name__ == "__main__": 75 | # zip_buf = zlib.compress(b'asd', wbits=16 + zlib.MAX_WBITS) 76 | # source = zlib.decompress(zip_buf, 16 + zlib.MAX_WBITS) 77 | # print(source) 78 | act_code = """ 79 | AAABfg0ODAoPeJxtUVFPszAUfe+vIPEZR4uwuaQPEzDOwPgUZtS3rtxJI+tYW+aHv96OYUyMSe9D7 80 | 23POfeci7LunBi4Q7CDp/MgmOPAiYrSIR7xUaSAGbGXMTNATx0XE5dglBxZ0w0TumWNBhSD5kq0Q 81 | 2ctG7ETBiqnERykBmfTO7UxrZ5PJp+1aOBS7FGu3pgU+gxSaYb4Xm4vGTfiCNSoDlC0l8bek4yJh 82 | jJdoRHujumaZpEX3Saln04Ok4/2pqrI21KsOI6zW/FxeE0X9XohZgkPfW4evfDQ9S91uS6e8929+ 83 | Mwf6JmuMEwZUOMSQys9k5R9Cyu2AxrlWZY8RstFiqwQaUAyySH53wrVj7bMrl1vag8a/y5jmi7jI 84 | lm5KZ56Pg5IYCu8QgWoIyg7xsS/CsIzoQVhEciTjGHtd+ifQOmTLTj0vKk38338Df03779O8Zpp+ 85 | B3TaNg3HEFFt/nJaWAbJKy63QZUvl1r+5K6GFnt9A/9YyKDLzaQL1JnulowLAIUXNWpxJYDbAba+ 86 | IH9vOa4CE9mebMCFEw1VlpaALNRy6rw78w3wotUn3SKX02ii 87 | """ 88 | parse(act_code) 89 | code2 = generate() 90 | parse(code2) 91 | -------------------------------------------------------------------------------- /src/crack/base.py: -------------------------------------------------------------------------------- 1 | from abc import ABCMeta 2 | from abc import abstractmethod 3 | 4 | 5 | class KeyGen(metaclass=ABCMeta): 6 | 7 | @abstractmethod 8 | def generate(self): 9 | pass 10 | 11 | @abstractmethod 12 | def parse(self, licenses): 13 | pass 14 | 15 | @abstractmethod 16 | def patch(self): 17 | return "" 18 | 19 | def run(self, patch=True): 20 | ciphertext_licenses = self.generate() 21 | print(f"ciphertext_licenses: \n{ciphertext_licenses}") 22 | if patch: 23 | patch_info = self.patch() 24 | if patch_info: 25 | print(f"patch: \n{patch_info}") 26 | plaintext_licenses = self.parse(ciphertext_licenses) 27 | print(f'plaintext_licenses: \n{plaintext_licenses}') 28 | -------------------------------------------------------------------------------- /src/crack/dbeaver/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qy527145/crack/433badbeaa5a96457bd77699ef1af181c9923ef7/src/crack/dbeaver/__init__.py -------------------------------------------------------------------------------- /src/crack/dbeaver/dbeaver-ee-public.key: -------------------------------------------------------------------------------- 1 | --- PUBLIC KEY --- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk7ciFU/aUCIgH5flBbGD0t7B3KOmfL0l 3 | BMf2ENuLA0w/T8A1RvteUYk2EQo3UrZ7kMZ8rK93nmDjituN7jlv/bsxGyAox87BbKYSs9oH5f9P 4 | hYHAiTE0PxoMODnl4NgR+Bpc+Ath8wDLHMC+BzYkOy4JQo8EX/ff58TT9UYP8eoDeGdSxQmW3FJC 5 | i82UiC5zIk75dx20Al9ql0fdxnzo31q/2MbnNCAfSchsqrKtzBtheex4JvvqZjxn98wk5Te1QgZz 6 | Caz4ay9dkLVjSt79QYm5hKb8Jt3O5SxSUsrjmYVeG+k2bQlidw8dENwLZmvJkIJi8kb94yEwY/dq 7 | lENDkQIDAQAB -------------------------------------------------------------------------------- /src/crack/dbeaver/dbeaver-ue-public.key: -------------------------------------------------------------------------------- 1 | --- PUBLIC KEY --- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk7ciFU/aUCIgH5flBbGD0t7B3KOmfL0l 3 | BMf2ENuLA0w/T8A1RvteUYk2EQo3UrZ7kMZ8rK93nmDjituN7jlv/bsxGyAox87BbKYSs9oH5f9P 4 | hYHAiTE0PxoMODnl4NgR+Bpc+Ath8wDLHMC+BzYkOy4JQo8EX/ff58TT9UYP8eoDeGdSxQmW3FJC 5 | i82UiC5zIk75dx20Al9ql0fdxnzo31q/2MbnNCAfSchsqrKtzBtheex4JvvqZjxn98wk5Te1QgZz 6 | Caz4ay9dkLVjSt79QYm5hKb8Jt3O5SxSUsrjmYVeG+k2bQlidw8dENwLZmvJkIJi8kb94yEwY/dq 7 | lENDkQIDAQAB -------------------------------------------------------------------------------- /src/crack/dbeaver/dbeaver.py: -------------------------------------------------------------------------------- 1 | import base64 2 | 3 | from crypto_plus import CryptoPlus 4 | 5 | from crack.base import KeyGen 6 | 7 | # power[Args] 模板 8 | power_args_template = 'EQUAL,65537,{old_n}->65537,{new_n}' 9 | 10 | 11 | class LicenseItem: 12 | def __init__(self, value, size): 13 | self.value = value 14 | self.size = size 15 | 16 | def __bytes__(self): 17 | if isinstance(self.value, str): 18 | return self.value.encode() + b'\x20' * (self.size - len(self.value)) 19 | if isinstance(self.value, int): 20 | return self.value.to_bytes(self.size) 21 | if isinstance(self.value, bytes): 22 | return self.value 23 | 24 | def __or__(self, other): 25 | if isinstance(other, LicenseItem): 26 | return LicenseItem(bytes(self) + bytes(other), self.size + other.size) 27 | 28 | 29 | class License: 30 | def __init__(self): 31 | self.format = LicenseItem(1, 1) 32 | self.license_id = LicenseItem('DB-1Y1MTZFU-ZHGR', 16) 33 | self.license_type = LicenseItem(b'U'[0], 1) 34 | self.license_issue_time = LicenseItem(1713004787391, 8) 35 | self.license_start_time = LicenseItem(1713004787391, 8) 36 | self.license_end_time = LicenseItem(0, 8) 37 | self.flags = LicenseItem(1024, 8) 38 | self.product_id = LicenseItem("dbeaver-ue", 16) 39 | self.product_version = LicenseItem("24.0", 8) 40 | self.owner_id = LicenseItem("10000", 16) 41 | self.owner_company = LicenseItem("void", 64) 42 | self.owner_name = LicenseItem("wmymz", 32) 43 | self.owner_email = LicenseItem("wmymz@icloud.com", 48) 44 | self.years_number = LicenseItem(1, 1) 45 | self.reserved1 = LicenseItem(0, 1) 46 | self.users_number = LicenseItem(1, 2) 47 | 48 | def __bytes__(self): 49 | return bytes( 50 | self.format | \ 51 | self.license_id | \ 52 | self.license_type | \ 53 | self.license_issue_time | \ 54 | self.license_start_time | \ 55 | self.license_end_time | \ 56 | self.flags | \ 57 | self.product_id | \ 58 | self.product_version | \ 59 | self.owner_id | \ 60 | self.owner_company | \ 61 | self.owner_name | \ 62 | self.owner_email | \ 63 | self.years_number | \ 64 | self.reserved1 | \ 65 | self.users_number 66 | ) 67 | 68 | 69 | class DBeaverKeyGen(KeyGen): 70 | def __init__(self): 71 | try: 72 | obj = CryptoPlus.load() 73 | except Exception: # noqa 74 | obj = CryptoPlus.generate_rsa(2048) 75 | obj.dump() 76 | self.crypto_plus = obj 77 | 78 | def generate(self): 79 | license_info = bytes(License()) 80 | return base64.b64encode(self.crypto_plus.encrypt_by_private_key(license_info)).decode() 81 | 82 | def parse(self, licenses): 83 | return self.crypto_plus.decrypt_by_public_key(base64.b64decode(licenses)) 84 | 85 | def patch(self): 86 | with open("dbeaver-ue-public.key", 'r') as f: 87 | old_n = CryptoPlus.loads(''.join(f.readlines()[1:])).public_key.n 88 | return power_args_template.format(old_n=old_n, new_n=self.crypto_plus.public_key.n) 89 | 90 | 91 | if __name__ == '__main__': 92 | DBeaverKeyGen().run() 93 | -------------------------------------------------------------------------------- /src/crack/finalshell/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qy527145/crack/433badbeaa5a96457bd77699ef1af181c9923ef7/src/crack/finalshell/__init__.py -------------------------------------------------------------------------------- /src/crack/finalshell/finalshell.py: -------------------------------------------------------------------------------- 1 | from Crypto.Hash import keccak 2 | from Crypto.Hash import MD5 3 | 4 | 5 | def md5(msg): 6 | hash_obj = MD5.new(msg) 7 | return hash_obj.hexdigest() 8 | 9 | 10 | def keccak384(msg): 11 | hash_obj = keccak.new(data=msg, digest_bits=384) 12 | return hash_obj.hexdigest() 13 | 14 | 15 | if __name__ == '__main__': 16 | code = input('输入机器码: ') 17 | print('版本号 < 3.9.6 (旧版)') 18 | print('高级版:', md5(f'61305{code}8552'.encode())[8:24]) 19 | print('专业版:', md5(f'2356{code}13593'.encode())[8:24]) 20 | print('版本号 >= 3.9.6 (新版)') 21 | print('高级版:', keccak384(f'{code}hSf(78cvVlS5E'.encode())[12:28]) 22 | print('专业版:', keccak384(f'{code}FF3Go(*Xvbb5s2'.encode())[12:28]) 23 | -------------------------------------------------------------------------------- /src/crack/gitlab/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qy527145/crack/433badbeaa5a96457bd77699ef1af181c9923ef7/src/crack/gitlab/__init__.py -------------------------------------------------------------------------------- /src/crack/gitlab/gitlab.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import json 3 | import os 4 | 5 | from Crypto.Cipher import AES 6 | from crypto_plus import CryptoPlus 7 | 8 | from crack.base import KeyGen 9 | 10 | template_license_data = { 11 | "version": 1, 12 | "licensee": {"Name": "null", "Company": "null", "Email": "null@null.com"}, 13 | "issued_at": "2023-01-01", 14 | "expires_at": "2100-12-31", 15 | "notify_admins_at": "2100-12-01", 16 | "notify_users_at": "2100-12-01", 17 | "block_changes_at": "2100-12-10", 18 | "cloud_licensing_enabled": False, 19 | "offline_cloud_licensing_enabled": False, 20 | "auto_renew_enabled": False, 21 | "seat_reconciliation_enabled": False, 22 | "operational_metrics_enabled": False, 23 | "generated_from_customers_dot": False, 24 | "restrictions": {"active_user_count": 99999, "plan": "ultimate"}, 25 | } 26 | 27 | 28 | class GitlabKeyGen(KeyGen): 29 | def __init__(self): 30 | self.license_data = template_license_data 31 | try: 32 | rsa = CryptoPlus.load() 33 | except Exception: # noqa 34 | rsa = CryptoPlus.generate_rsa(2048) 35 | rsa.dump(pub_key_path=".license_encryption_key.pub") 36 | self.crypto_plus = rsa 37 | 38 | def generate(self): 39 | aes_key = os.urandom(16) 40 | aes_iv = os.urandom(16) 41 | license_plaintext = json.dumps(self.license_data).encode() 42 | if len(license_plaintext) % 16 > 0: 43 | pad = 16 - len(license_plaintext) % 16 44 | license_plaintext = license_plaintext + pad.to_bytes(1) * pad 45 | encrypt_data = AES.new(aes_key, AES.MODE_CBC, aes_iv).encrypt( 46 | license_plaintext 47 | ) 48 | # 原则上不应该使用私钥加密,尽管CryptoPlus支持私钥加密 49 | encrypt_key = self.crypto_plus.encrypt_by_private_key(aes_key) 50 | encrypt_license = { 51 | "data": base64.b64encode(encrypt_data).decode(), 52 | "key": base64.b64encode(encrypt_key).decode(), 53 | "iv": base64.b64encode(aes_iv).decode(), 54 | } 55 | encrypt_license = json.dumps(encrypt_license).encode() 56 | encrypt_license = base64.b64encode(encrypt_license) 57 | with open("GitLabEE.gitlab-license", "wb") as f: 58 | f.write(encrypt_license) 59 | return encrypt_license.decode() 60 | 61 | def parse(self, licenses): 62 | encrypt_license = base64.b64decode(licenses) 63 | encrypt_license = json.loads(encrypt_license.decode()) 64 | encrypt_data = base64.b64decode( 65 | encrypt_license["data"].replace("\n", "") 66 | ) 67 | encrypt_key = base64.b64decode(encrypt_license["key"].replace("\n", "")) 68 | iv = base64.b64decode(encrypt_license["iv"]) 69 | # 原则上不应该使用公钥解密,尽管CryptoPlus支持公钥解密 70 | key = self.crypto_plus.decrypt_by_public_key(encrypt_key) 71 | data = AES.new(key, AES.MODE_CBC, iv).decrypt(encrypt_data) 72 | if data[-1] != 125: 73 | # 不以}结尾 74 | data = data[: -data[-1]] 75 | # print(json.dumps(json.loads(data.decode()), indent=2)) 76 | return json.dumps(json.loads(data.decode()), indent=2) 77 | 78 | def patch(self): 79 | return "" 80 | 81 | 82 | if __name__ == "__main__": 83 | GitlabKeyGen().run() 84 | -------------------------------------------------------------------------------- /src/crack/jetbrains/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qy527145/crack/433badbeaa5a96457bd77699ef1af181c9923ef7/src/crack/jetbrains/__init__.py -------------------------------------------------------------------------------- /src/crack/jetbrains/jetbrains.py: -------------------------------------------------------------------------------- 1 | import json 2 | import pathlib 3 | import sys 4 | from base64 import b64encode, b64decode 5 | 6 | from crypto_plus import CryptoPlus 7 | 8 | sys.path.append(str(pathlib.Path(__file__).parent.parent.parent)) 9 | from crack.base import KeyGen 10 | 11 | # power[Result] 模板 12 | power_result_template = 'EQUAL,{arg},65537,860106576952879101192782278876319243486072481962999610484027161162448933268423045647258145695082284265933019120714643752088997312766689988016808929265129401027490891810902278465065056686129972085119605237470899952751915070244375173428976413406363879128531449407795115913715863867259163957682164040613505040314747660800424242248055421184038777878268502955477482203711835548014501087778959157112423823275878824729132393281517778742463067583320091009916141454657614089600126948087954465055321987012989937065785013284988096504657892738536613208311013047138019418152103262155848541574327484510025594166239784429845180875774012229784878903603491426732347994359380330103328705981064044872334790365894924494923595382470094461546336020961505275530597716457288511366082299255537762891238136381924520749228412559219346777184174219999640906007205260040707839706131662149325151230558316068068139406816080119906833578907759960298749494098180107991752250725928647349597506532778539709852254478061194098069801549845163358315116260915270480057699929968468068015735162890213859113563672040630687357054902747438421559817252127187138838514773245413540030800888215961904267348727206110582505606182944023582459006406137831940959195566364811905585377246353->{result}' 13 | 14 | 15 | class JetbrainsKeyGen(KeyGen): 16 | 17 | def __init__(self): 18 | try: 19 | obj = CryptoPlus.load() 20 | except Exception: # noqa 21 | obj = CryptoPlus.generate_rsa() 22 | obj.dump() 23 | obj.dump_cert(subject_name='Crack', issuer_name='JetProfile CA') 24 | self.crypto_plus = obj 25 | self.certificate_text = "".join(open('cert.crt').read().split(chr(10))[1:-2]) 26 | self.certificate = CryptoPlus.loads(self.certificate_text).key 27 | self.license_data = json.load(open('licenses.json')) 28 | 29 | def generate(self, license_id=None, license_name=None): 30 | license_data = self.license_data.copy() 31 | if license_id: 32 | license_data['licenseId'] = license_id 33 | if license_name: 34 | license_data['licenseeName'] = license_name 35 | # 激活码组成 36 | license_id = license_data['licenseId'] 37 | license_info = json.dumps(license_data, separators=(',', ':')) 38 | signature = self.crypto_plus.sign(license_info.encode(), "SHA1") 39 | activation_code = ( 40 | f'{license_id}-' 41 | f'{b64encode(license_info.encode()).decode()}' 42 | f'-{b64encode(signature).decode()}-' 43 | f'{self.certificate_text}' 44 | ) 45 | return activation_code 46 | 47 | def parse(self, licenses): 48 | license_id, license_info, signature, cert = licenses.split('-') 49 | license_info = b64decode(license_info) 50 | signature = b64decode(signature) 51 | certificate = CryptoPlus.loads(cert) 52 | assert certificate.verify(license_info, signature, "SHA1") 53 | license_info = json.loads(license_info.decode()) 54 | assert license_id == license_info['licenseId'] 55 | return license_info 56 | 57 | def patch(self): 58 | arg = int.from_bytes(self.certificate.signature, 'big') 59 | result = pow(arg, 65537, self.crypto_plus.public_key.n) 60 | return power_result_template.format(arg=arg, result=result) 61 | 62 | 63 | if __name__ == '__main__': 64 | from plugins import JetBrainPlugin 65 | 66 | JetBrainPlugin().update().make_licenses() 67 | JetbrainsKeyGen().run() 68 | -------------------------------------------------------------------------------- /src/crack/jetbrains/licenses.json: -------------------------------------------------------------------------------- 1 | { 2 | "licenseId": "JETBRAINS", 3 | "licenseeName": "crack", 4 | "assigneeName": "", 5 | "assigneeEmail": "", 6 | "licenseRestriction": "", 7 | "checkConcurrentUse": false, 8 | "products": [ 9 | { 10 | "code": "II", 11 | "fallbackDate": "9999-12-31", 12 | "paidUpTo": "9999-12-31", 13 | "extended": true 14 | }, 15 | { 16 | "code": "PS", 17 | "fallbackDate": "9999-12-31", 18 | "paidUpTo": "9999-12-31", 19 | "extended": true 20 | }, 21 | { 22 | "code": "AC", 23 | "fallbackDate": "9999-12-31", 24 | "paidUpTo": "9999-12-31", 25 | "extended": true 26 | }, 27 | { 28 | "code": "DB", 29 | "fallbackDate": "9999-12-31", 30 | "paidUpTo": "9999-12-31", 31 | "extended": true 32 | }, 33 | { 34 | "code": "RM", 35 | "fallbackDate": "9999-12-31", 36 | "paidUpTo": "9999-12-31", 37 | "extended": true 38 | }, 39 | { 40 | "code": "WS", 41 | "fallbackDate": "9999-12-31", 42 | "paidUpTo": "9999-12-31", 43 | "extended": true 44 | }, 45 | { 46 | "code": "RD", 47 | "fallbackDate": "9999-12-31", 48 | "paidUpTo": "9999-12-31", 49 | "extended": true 50 | }, 51 | { 52 | "code": "CL", 53 | "fallbackDate": "9999-12-31", 54 | "paidUpTo": "9999-12-31", 55 | "extended": true 56 | }, 57 | { 58 | "code": "PC", 59 | "fallbackDate": "9999-12-31", 60 | "paidUpTo": "9999-12-31", 61 | "extended": true 62 | }, 63 | { 64 | "code": "GO", 65 | "fallbackDate": "9999-12-31", 66 | "paidUpTo": "9999-12-31", 67 | "extended": true 68 | }, 69 | { 70 | "code": "DS", 71 | "fallbackDate": "9999-12-31", 72 | "paidUpTo": "9999-12-31", 73 | "extended": true 74 | }, 75 | { 76 | "code": "DC", 77 | "fallbackDate": "9999-12-31", 78 | "paidUpTo": "9999-12-31", 79 | "extended": true 80 | }, 81 | { 82 | "code": "DPN", 83 | "fallbackDate": "9999-12-31", 84 | "paidUpTo": "9999-12-31", 85 | "extended": true 86 | }, 87 | { 88 | "code": "DM", 89 | "fallbackDate": "9999-12-31", 90 | "paidUpTo": "9999-12-31", 91 | "extended": true 92 | }, 93 | { 94 | "code": "PRAINBOWBRACKET", 95 | "fallbackDate": "9999-12-31", 96 | "paidUpTo": "9999-12-31", 97 | "extended": true 98 | }, 99 | { 100 | "code": "PGITSCOPE", 101 | "fallbackDate": "9999-12-31", 102 | "paidUpTo": "9999-12-31", 103 | "extended": true 104 | }, 105 | { 106 | "code": "PVLOG", 107 | "fallbackDate": "9999-12-31", 108 | "paidUpTo": "9999-12-31", 109 | "extended": true 110 | }, 111 | { 112 | "code": "PCODEMRBASE", 113 | "fallbackDate": "9999-12-31", 114 | "paidUpTo": "9999-12-31", 115 | "extended": true 116 | }, 117 | { 118 | "code": "PJDCLEANREAD", 119 | "fallbackDate": "9999-12-31", 120 | "paidUpTo": "9999-12-31", 121 | "extended": true 122 | }, 123 | { 124 | "code": "PBRWJV", 125 | "fallbackDate": "9999-12-31", 126 | "paidUpTo": "9999-12-31", 127 | "extended": true 128 | }, 129 | { 130 | "code": "PDB", 131 | "fallbackDate": "9999-12-31", 132 | "paidUpTo": "9999-12-31", 133 | "extended": true 134 | }, 135 | { 136 | "code": "PEXTRAICONS", 137 | "fallbackDate": "9999-12-31", 138 | "paidUpTo": "9999-12-31", 139 | "extended": true 140 | }, 141 | { 142 | "code": "DC", 143 | "fallbackDate": "9999-12-31", 144 | "paidUpTo": "9999-12-31", 145 | "extended": true 146 | }, 147 | { 148 | "code": "DPN", 149 | "fallbackDate": "9999-12-31", 150 | "paidUpTo": "9999-12-31", 151 | "extended": true 152 | }, 153 | { 154 | "code": "PBISJ", 155 | "fallbackDate": "9999-12-31", 156 | "paidUpTo": "9999-12-31", 157 | "extended": true 158 | }, 159 | { 160 | "code": "PSCIPIO", 161 | "fallbackDate": "9999-12-31", 162 | "paidUpTo": "9999-12-31", 163 | "extended": true 164 | }, 165 | { 166 | "code": "PBISAA", 167 | "fallbackDate": "9999-12-31", 168 | "paidUpTo": "9999-12-31", 169 | "extended": true 170 | }, 171 | { 172 | "code": "PZENUML", 173 | "fallbackDate": "9999-12-31", 174 | "paidUpTo": "9999-12-31", 175 | "extended": true 176 | }, 177 | { 178 | "code": "PJFORMDESIGNER", 179 | "fallbackDate": "9999-12-31", 180 | "paidUpTo": "9999-12-31", 181 | "extended": true 182 | }, 183 | { 184 | "code": "PORCHIDE", 185 | "fallbackDate": "9999-12-31", 186 | "paidUpTo": "9999-12-31", 187 | "extended": true 188 | }, 189 | { 190 | "code": "PIEDIS", 191 | "fallbackDate": "9999-12-31", 192 | "paidUpTo": "9999-12-31", 193 | "extended": true 194 | }, 195 | { 196 | "code": "PREDIS", 197 | "fallbackDate": "9999-12-31", 198 | "paidUpTo": "9999-12-31", 199 | "extended": true 200 | }, 201 | { 202 | "code": "PCMAKEPLUS", 203 | "fallbackDate": "9999-12-31", 204 | "paidUpTo": "9999-12-31", 205 | "extended": true 206 | }, 207 | { 208 | "code": "POPENAPI", 209 | "fallbackDate": "9999-12-31", 210 | "paidUpTo": "9999-12-31", 211 | "extended": true 212 | }, 213 | { 214 | "code": "PBETTERHIGHLIGH", 215 | "fallbackDate": "9999-12-31", 216 | "paidUpTo": "9999-12-31", 217 | "extended": true 218 | }, 219 | { 220 | "code": "PATOMONEDARK", 221 | "fallbackDate": "9999-12-31", 222 | "paidUpTo": "9999-12-31", 223 | "extended": true 224 | }, 225 | { 226 | "code": "PGDOC", 227 | "fallbackDate": "9999-12-31", 228 | "paidUpTo": "9999-12-31", 229 | "extended": true 230 | }, 231 | { 232 | "code": "POFFICEFLOOR", 233 | "fallbackDate": "9999-12-31", 234 | "paidUpTo": "9999-12-31", 235 | "extended": true 236 | }, 237 | { 238 | "code": "PWIFIADB", 239 | "fallbackDate": "9999-12-31", 240 | "paidUpTo": "9999-12-31", 241 | "extended": true 242 | }, 243 | { 244 | "code": "PLARAVEL", 245 | "fallbackDate": "9999-12-31", 246 | "paidUpTo": "9999-12-31", 247 | "extended": true 248 | }, 249 | { 250 | "code": "PODOO", 251 | "fallbackDate": "9999-12-31", 252 | "paidUpTo": "9999-12-31", 253 | "extended": true 254 | }, 255 | { 256 | "code": "PCREVIEW", 257 | "fallbackDate": "9999-12-31", 258 | "paidUpTo": "9999-12-31", 259 | "extended": true 260 | }, 261 | { 262 | "code": "PMRINTEGEE", 263 | "fallbackDate": "9999-12-31", 264 | "paidUpTo": "9999-12-31", 265 | "extended": true 266 | }, 267 | { 268 | "code": "PSFCC", 269 | "fallbackDate": "9999-12-31", 270 | "paidUpTo": "9999-12-31", 271 | "extended": true 272 | }, 273 | { 274 | "code": "PMINBATIS", 275 | "fallbackDate": "9999-12-31", 276 | "paidUpTo": "9999-12-31", 277 | "extended": true 278 | }, 279 | { 280 | "code": "PPOJOTOJSONSCH", 281 | "fallbackDate": "9999-12-31", 282 | "paidUpTo": "9999-12-31", 283 | "extended": true 284 | }, 285 | { 286 | "code": "PRDFANDSPARQL", 287 | "fallbackDate": "9999-12-31", 288 | "paidUpTo": "9999-12-31", 289 | "extended": true 290 | }, 291 | { 292 | "code": "PBASHSUPPORTPRO", 293 | "fallbackDate": "9999-12-31", 294 | "paidUpTo": "9999-12-31", 295 | "extended": true 296 | }, 297 | { 298 | "code": "PMYBATISLOG", 299 | "fallbackDate": "9999-12-31", 300 | "paidUpTo": "9999-12-31", 301 | "extended": true 302 | }, 303 | { 304 | "code": "PSMARTJUMP", 305 | "fallbackDate": "9999-12-31", 306 | "paidUpTo": "9999-12-31", 307 | "extended": true 308 | }, 309 | { 310 | "code": "PGITFLOWPLUS", 311 | "fallbackDate": "9999-12-31", 312 | "paidUpTo": "9999-12-31", 313 | "extended": true 314 | }, 315 | { 316 | "code": "PJAVACODESUGG", 317 | "fallbackDate": "9999-12-31", 318 | "paidUpTo": "9999-12-31", 319 | "extended": true 320 | }, 321 | { 322 | "code": "PGOLANGCODESUGG", 323 | "fallbackDate": "9999-12-31", 324 | "paidUpTo": "9999-12-31", 325 | "extended": true 326 | }, 327 | { 328 | "code": "PRUBYCODESUGG", 329 | "fallbackDate": "9999-12-31", 330 | "paidUpTo": "9999-12-31", 331 | "extended": true 332 | }, 333 | { 334 | "code": "PVCS", 335 | "fallbackDate": "9999-12-31", 336 | "paidUpTo": "9999-12-31", 337 | "extended": true 338 | }, 339 | { 340 | "code": "PJSCODESUGG", 341 | "fallbackDate": "9999-12-31", 342 | "paidUpTo": "9999-12-31", 343 | "extended": true 344 | }, 345 | { 346 | "code": "PPHPCODESUGG", 347 | "fallbackDate": "9999-12-31", 348 | "paidUpTo": "9999-12-31", 349 | "extended": true 350 | }, 351 | { 352 | "code": "PSVERILOG", 353 | "fallbackDate": "9999-12-31", 354 | "paidUpTo": "9999-12-31", 355 | "extended": true 356 | }, 357 | { 358 | "code": "PSPARQL", 359 | "fallbackDate": "9999-12-31", 360 | "paidUpTo": "9999-12-31", 361 | "extended": true 362 | }, 363 | { 364 | "code": "PIMAGEVIEWER", 365 | "fallbackDate": "9999-12-31", 366 | "paidUpTo": "9999-12-31", 367 | "extended": true 368 | }, 369 | { 370 | "code": "PTOOLSET", 371 | "fallbackDate": "9999-12-31", 372 | "paidUpTo": "9999-12-31", 373 | "extended": true 374 | }, 375 | { 376 | "code": "PJSONTOTS", 377 | "fallbackDate": "9999-12-31", 378 | "paidUpTo": "9999-12-31", 379 | "extended": true 380 | }, 381 | { 382 | "code": "PQMLEDITOR", 383 | "fallbackDate": "9999-12-31", 384 | "paidUpTo": "9999-12-31", 385 | "extended": true 386 | }, 387 | { 388 | "code": "PSI", 389 | "fallbackDate": "9999-12-31", 390 | "paidUpTo": "9999-12-31", 391 | "extended": true 392 | }, 393 | { 394 | "code": "PSTRKER", 395 | "fallbackDate": "9999-12-31", 396 | "paidUpTo": "9999-12-31", 397 | "extended": true 398 | }, 399 | { 400 | "code": "PELASTICSEARCH", 401 | "fallbackDate": "9999-12-31", 402 | "paidUpTo": "9999-12-31", 403 | "extended": true 404 | }, 405 | { 406 | "code": "PMYBATISHELPER", 407 | "fallbackDate": "9999-12-31", 408 | "paidUpTo": "9999-12-31", 409 | "extended": true 410 | }, 411 | { 412 | "code": "PVISUALGC", 413 | "fallbackDate": "9999-12-31", 414 | "paidUpTo": "9999-12-31", 415 | "extended": true 416 | }, 417 | { 418 | "code": "PPYCODESUGG", 419 | "fallbackDate": "9999-12-31", 420 | "paidUpTo": "9999-12-31", 421 | "extended": true 422 | }, 423 | { 424 | "code": "PFLUTTER", 425 | "fallbackDate": "9999-12-31", 426 | "paidUpTo": "9999-12-31", 427 | "extended": true 428 | }, 429 | { 430 | "code": "PRESTKIT", 431 | "fallbackDate": "9999-12-31", 432 | "paidUpTo": "9999-12-31", 433 | "extended": true 434 | }, 435 | { 436 | "code": "PAWSLAMBDADEPLR", 437 | "fallbackDate": "9999-12-31", 438 | "paidUpTo": "9999-12-31", 439 | "extended": true 440 | }, 441 | { 442 | "code": "PPUMLSTUDIO", 443 | "fallbackDate": "9999-12-31", 444 | "paidUpTo": "9999-12-31", 445 | "extended": true 446 | }, 447 | { 448 | "code": "PCWMP", 449 | "fallbackDate": "9999-12-31", 450 | "paidUpTo": "9999-12-31", 451 | "extended": true 452 | }, 453 | { 454 | "code": "PFIREHIGHLIGHT", 455 | "fallbackDate": "9999-12-31", 456 | "paidUpTo": "9999-12-31", 457 | "extended": true 458 | }, 459 | { 460 | "code": "PJPASQL", 461 | "fallbackDate": "9999-12-31", 462 | "paidUpTo": "9999-12-31", 463 | "extended": true 464 | }, 465 | { 466 | "code": "PGODRUNNER", 467 | "fallbackDate": "9999-12-31", 468 | "paidUpTo": "9999-12-31", 469 | "extended": true 470 | }, 471 | { 472 | "code": "PLEDGER", 473 | "fallbackDate": "9999-12-31", 474 | "paidUpTo": "9999-12-31", 475 | "extended": true 476 | }, 477 | { 478 | "code": "PREGEXTOOL", 479 | "fallbackDate": "9999-12-31", 480 | "paidUpTo": "9999-12-31", 481 | "extended": true 482 | }, 483 | { 484 | "code": "PAPH", 485 | "fallbackDate": "9999-12-31", 486 | "paidUpTo": "9999-12-31", 487 | "extended": true 488 | }, 489 | { 490 | "code": "PGITLABCI", 491 | "fallbackDate": "9999-12-31", 492 | "paidUpTo": "9999-12-31", 493 | "extended": true 494 | }, 495 | { 496 | "code": "PCIRCLECI", 497 | "fallbackDate": "9999-12-31", 498 | "paidUpTo": "9999-12-31", 499 | "extended": true 500 | }, 501 | { 502 | "code": "PHEROKU", 503 | "fallbackDate": "9999-12-31", 504 | "paidUpTo": "9999-12-31", 505 | "extended": true 506 | }, 507 | { 508 | "code": "PFLYINSKYZJBZ", 509 | "fallbackDate": "9999-12-31", 510 | "paidUpTo": "9999-12-31", 511 | "extended": true 512 | }, 513 | { 514 | "code": "PREDISMANAGER", 515 | "fallbackDate": "9999-12-31", 516 | "paidUpTo": "9999-12-31", 517 | "extended": true 518 | }, 519 | { 520 | "code": "PZEROCODE", 521 | "fallbackDate": "9999-12-31", 522 | "paidUpTo": "9999-12-31", 523 | "extended": true 524 | }, 525 | { 526 | "code": "PSTORMSECTIONS", 527 | "fallbackDate": "9999-12-31", 528 | "paidUpTo": "9999-12-31", 529 | "extended": true 530 | }, 531 | { 532 | "code": "PSENTRYINTEG", 533 | "fallbackDate": "9999-12-31", 534 | "paidUpTo": "9999-12-31", 535 | "extended": true 536 | }, 537 | { 538 | "code": "PREDISTOOLS", 539 | "fallbackDate": "9999-12-31", 540 | "paidUpTo": "9999-12-31", 541 | "extended": true 542 | }, 543 | { 544 | "code": "PFUZYFIPC", 545 | "fallbackDate": "9999-12-31", 546 | "paidUpTo": "9999-12-31", 547 | "extended": true 548 | }, 549 | { 550 | "code": "PBITRISECI", 551 | "fallbackDate": "9999-12-31", 552 | "paidUpTo": "9999-12-31", 553 | "extended": true 554 | }, 555 | { 556 | "code": "PQTSQSSEDITOR", 557 | "fallbackDate": "9999-12-31", 558 | "paidUpTo": "9999-12-31", 559 | "extended": true 560 | }, 561 | { 562 | "code": "PAPPLETRUNNER", 563 | "fallbackDate": "9999-12-31", 564 | "paidUpTo": "9999-12-31", 565 | "extended": true 566 | }, 567 | { 568 | "code": "PDATABASE", 569 | "fallbackDate": "9999-12-31", 570 | "paidUpTo": "9999-12-31", 571 | "extended": true 572 | }, 573 | { 574 | "code": "PHPEAPLUGIN", 575 | "fallbackDate": "9999-12-31", 576 | "paidUpTo": "9999-12-31", 577 | "extended": true 578 | }, 579 | { 580 | "code": "PFASTREQUEST", 581 | "fallbackDate": "9999-12-31", 582 | "paidUpTo": "9999-12-31", 583 | "extended": true 584 | }, 585 | { 586 | "code": "PLEP", 587 | "fallbackDate": "9999-12-31", 588 | "paidUpTo": "9999-12-31", 589 | "extended": true 590 | }, 591 | { 592 | "code": "PHPBUILDER", 593 | "fallbackDate": "9999-12-31", 594 | "paidUpTo": "9999-12-31", 595 | "extended": true 596 | }, 597 | { 598 | "code": "PMATERIALHC", 599 | "fallbackDate": "9999-12-31", 600 | "paidUpTo": "9999-12-31", 601 | "extended": true 602 | }, 603 | { 604 | "code": "PCDMQTTCLIENT", 605 | "fallbackDate": "9999-12-31", 606 | "paidUpTo": "9999-12-31", 607 | "extended": true 608 | }, 609 | { 610 | "code": "PISCRATCH", 611 | "fallbackDate": "9999-12-31", 612 | "paidUpTo": "9999-12-31", 613 | "extended": true 614 | }, 615 | { 616 | "code": "PRSMGNL", 617 | "fallbackDate": "9999-12-31", 618 | "paidUpTo": "9999-12-31", 619 | "extended": true 620 | }, 621 | { 622 | "code": "PCAPELASTIC", 623 | "fallbackDate": "9999-12-31", 624 | "paidUpTo": "9999-12-31", 625 | "extended": true 626 | }, 627 | { 628 | "code": "PASTOCK", 629 | "fallbackDate": "9999-12-31", 630 | "paidUpTo": "9999-12-31", 631 | "extended": true 632 | }, 633 | { 634 | "code": "PCAPREDIS", 635 | "fallbackDate": "9999-12-31", 636 | "paidUpTo": "9999-12-31", 637 | "extended": true 638 | }, 639 | { 640 | "code": "PBEANCONVERTER", 641 | "fallbackDate": "9999-12-31", 642 | "paidUpTo": "9999-12-31", 643 | "extended": true 644 | }, 645 | { 646 | "code": "PELSA", 647 | "fallbackDate": "9999-12-31", 648 | "paidUpTo": "9999-12-31", 649 | "extended": true 650 | }, 651 | { 652 | "code": "PDJANGOTPLPEP", 653 | "fallbackDate": "9999-12-31", 654 | "paidUpTo": "9999-12-31", 655 | "extended": true 656 | }, 657 | { 658 | "code": "PQUERYFLAG", 659 | "fallbackDate": "9999-12-31", 660 | "paidUpTo": "9999-12-31", 661 | "extended": true 662 | }, 663 | { 664 | "code": "PNGINX", 665 | "fallbackDate": "9999-12-31", 666 | "paidUpTo": "9999-12-31", 667 | "extended": true 668 | }, 669 | { 670 | "code": "PKSEXPLORER", 671 | "fallbackDate": "9999-12-31", 672 | "paidUpTo": "9999-12-31", 673 | "extended": true 674 | }, 675 | { 676 | "code": "PZKA", 677 | "fallbackDate": "9999-12-31", 678 | "paidUpTo": "9999-12-31", 679 | "extended": true 680 | }, 681 | { 682 | "code": "PCDAPIRUNNER", 683 | "fallbackDate": "9999-12-31", 684 | "paidUpTo": "9999-12-31", 685 | "extended": true 686 | }, 687 | { 688 | "code": "PNEONPRO", 689 | "fallbackDate": "9999-12-31", 690 | "paidUpTo": "9999-12-31", 691 | "extended": true 692 | }, 693 | { 694 | "code": "PMBCODEHELPPRO", 695 | "fallbackDate": "9999-12-31", 696 | "paidUpTo": "9999-12-31", 697 | "extended": true 698 | }, 699 | { 700 | "code": "PCODEREFACTORAI", 701 | "fallbackDate": "9999-12-31", 702 | "paidUpTo": "9999-12-31", 703 | "extended": true 704 | }, 705 | { 706 | "code": "PXSDVISUALIZER", 707 | "fallbackDate": "9999-12-31", 708 | "paidUpTo": "9999-12-31", 709 | "extended": true 710 | }, 711 | { 712 | "code": "PSPRINGBOOTIDEA", 713 | "fallbackDate": "9999-12-31", 714 | "paidUpTo": "9999-12-31", 715 | "extended": true 716 | }, 717 | { 718 | "code": "PEXCELEDITOR", 719 | "fallbackDate": "9999-12-31", 720 | "paidUpTo": "9999-12-31", 721 | "extended": true 722 | }, 723 | { 724 | "code": "PGITLAB", 725 | "fallbackDate": "9999-12-31", 726 | "paidUpTo": "9999-12-31", 727 | "extended": true 728 | }, 729 | { 730 | "code": "PTERMINAL", 731 | "fallbackDate": "9999-12-31", 732 | "paidUpTo": "9999-12-31", 733 | "extended": true 734 | }, 735 | { 736 | "code": "PWIREMOCHA", 737 | "fallbackDate": "9999-12-31", 738 | "paidUpTo": "9999-12-31", 739 | "extended": true 740 | }, 741 | { 742 | "code": "PDYNAMODB", 743 | "fallbackDate": "9999-12-31", 744 | "paidUpTo": "9999-12-31", 745 | "extended": true 746 | }, 747 | { 748 | "code": "PFASTSHELL", 749 | "fallbackDate": "9999-12-31", 750 | "paidUpTo": "9999-12-31", 751 | "extended": true 752 | }, 753 | { 754 | "code": "PJSONNETEMLSUP", 755 | "fallbackDate": "9999-12-31", 756 | "paidUpTo": "9999-12-31", 757 | "extended": true 758 | }, 759 | { 760 | "code": "PPHPHOUDINI", 761 | "fallbackDate": "9999-12-31", 762 | "paidUpTo": "9999-12-31", 763 | "extended": true 764 | }, 765 | { 766 | "code": "POXYXSDJSONSCH", 767 | "fallbackDate": "9999-12-31", 768 | "paidUpTo": "9999-12-31", 769 | "extended": true 770 | }, 771 | { 772 | "code": "PQUARKUSHELPER", 773 | "fallbackDate": "9999-12-31", 774 | "paidUpTo": "9999-12-31", 775 | "extended": true 776 | }, 777 | { 778 | "code": "PWGCODECREATOR", 779 | "fallbackDate": "9999-12-31", 780 | "paidUpTo": "9999-12-31", 781 | "extended": true 782 | }, 783 | { 784 | "code": "PCIINTG", 785 | "fallbackDate": "9999-12-31", 786 | "paidUpTo": "9999-12-31", 787 | "extended": true 788 | }, 789 | { 790 | "code": "PDBDATABASETOOL", 791 | "fallbackDate": "9999-12-31", 792 | "paidUpTo": "9999-12-31", 793 | "extended": true 794 | }, 795 | { 796 | "code": "PNGROK", 797 | "fallbackDate": "9999-12-31", 798 | "paidUpTo": "9999-12-31", 799 | "extended": true 800 | }, 801 | { 802 | "code": "PMATERIALEXTRAS", 803 | "fallbackDate": "9999-12-31", 804 | "paidUpTo": "9999-12-31", 805 | "extended": true 806 | }, 807 | { 808 | "code": "PJSONTOANYLANGU", 809 | "fallbackDate": "9999-12-31", 810 | "paidUpTo": "9999-12-31", 811 | "extended": true 812 | }, 813 | { 814 | "code": "PMATERIALCUSTOM", 815 | "fallbackDate": "9999-12-31", 816 | "paidUpTo": "9999-12-31", 817 | "extended": true 818 | }, 819 | { 820 | "code": "PMATERIALLANG", 821 | "fallbackDate": "9999-12-31", 822 | "paidUpTo": "9999-12-31", 823 | "extended": true 824 | }, 825 | { 826 | "code": "PMATERIALFRAME", 827 | "fallbackDate": "9999-12-31", 828 | "paidUpTo": "9999-12-31", 829 | "extended": true 830 | }, 831 | { 832 | "code": "PRANCHER", 833 | "fallbackDate": "9999-12-31", 834 | "paidUpTo": "9999-12-31", 835 | "extended": true 836 | }, 837 | { 838 | "code": "PREDISCLIHELPER", 839 | "fallbackDate": "9999-12-31", 840 | "paidUpTo": "9999-12-31", 841 | "extended": true 842 | }, 843 | { 844 | "code": "PSCREENCODEPRO", 845 | "fallbackDate": "9999-12-31", 846 | "paidUpTo": "9999-12-31", 847 | "extended": true 848 | }, 849 | { 850 | "code": "PCODEKITS", 851 | "fallbackDate": "9999-12-31", 852 | "paidUpTo": "9999-12-31", 853 | "extended": true 854 | }, 855 | { 856 | "code": "PREDISS", 857 | "fallbackDate": "9999-12-31", 858 | "paidUpTo": "9999-12-31", 859 | "extended": true 860 | }, 861 | { 862 | "code": "PAWSQLADVISOR", 863 | "fallbackDate": "9999-12-31", 864 | "paidUpTo": "9999-12-31", 865 | "extended": true 866 | }, 867 | { 868 | "code": "PLATTEPRO", 869 | "fallbackDate": "9999-12-31", 870 | "paidUpTo": "9999-12-31", 871 | "extended": true 872 | }, 873 | { 874 | "code": "PGERRYTHEMESPRO", 875 | "fallbackDate": "9999-12-31", 876 | "paidUpTo": "9999-12-31", 877 | "extended": true 878 | }, 879 | { 880 | "code": "PUNIAPPSUPPORT", 881 | "fallbackDate": "9999-12-31", 882 | "paidUpTo": "9999-12-31", 883 | "extended": true 884 | }, 885 | { 886 | "code": "POPENAPICRUDWIZ", 887 | "fallbackDate": "9999-12-31", 888 | "paidUpTo": "9999-12-31", 889 | "extended": true 890 | }, 891 | { 892 | "code": "PGOPARSER", 893 | "fallbackDate": "9999-12-31", 894 | "paidUpTo": "9999-12-31", 895 | "extended": true 896 | }, 897 | { 898 | "code": "PNEXTSKETCH", 899 | "fallbackDate": "9999-12-31", 900 | "paidUpTo": "9999-12-31", 901 | "extended": true 902 | }, 903 | { 904 | "code": "PNETLIFY", 905 | "fallbackDate": "9999-12-31", 906 | "paidUpTo": "9999-12-31", 907 | "extended": true 908 | }, 909 | { 910 | "code": "PGERRYCYBERPUNK", 911 | "fallbackDate": "9999-12-31", 912 | "paidUpTo": "9999-12-31", 913 | "extended": true 914 | }, 915 | { 916 | "code": "PTLDRAI", 917 | "fallbackDate": "9999-12-31", 918 | "paidUpTo": "9999-12-31", 919 | "extended": true 920 | }, 921 | { 922 | "code": "PBREWBUNDLE", 923 | "fallbackDate": "9999-12-31", 924 | "paidUpTo": "9999-12-31", 925 | "extended": true 926 | }, 927 | { 928 | "code": "PGERRYSPACE", 929 | "fallbackDate": "9999-12-31", 930 | "paidUpTo": "9999-12-31", 931 | "extended": true 932 | }, 933 | { 934 | "code": "PKAFKAIDE", 935 | "fallbackDate": "9999-12-31", 936 | "paidUpTo": "9999-12-31", 937 | "extended": true 938 | }, 939 | { 940 | "code": "PGITHUBCI", 941 | "fallbackDate": "9999-12-31", 942 | "paidUpTo": "9999-12-31", 943 | "extended": true 944 | }, 945 | { 946 | "code": "PGERRYNATURE", 947 | "fallbackDate": "9999-12-31", 948 | "paidUpTo": "9999-12-31", 949 | "extended": true 950 | }, 951 | { 952 | "code": "PEXTENSION", 953 | "fallbackDate": "9999-12-31", 954 | "paidUpTo": "9999-12-31", 955 | "extended": true 956 | }, 957 | { 958 | "code": "PSKOL", 959 | "fallbackDate": "9999-12-31", 960 | "paidUpTo": "9999-12-31", 961 | "extended": true 962 | }, 963 | { 964 | "code": "PGERRYCHERRY", 965 | "fallbackDate": "9999-12-31", 966 | "paidUpTo": "9999-12-31", 967 | "extended": true 968 | }, 969 | { 970 | "code": "PGERRYCOFFEE", 971 | "fallbackDate": "9999-12-31", 972 | "paidUpTo": "9999-12-31", 973 | "extended": true 974 | }, 975 | { 976 | "code": "PCONNECTUI", 977 | "fallbackDate": "9999-12-31", 978 | "paidUpTo": "9999-12-31", 979 | "extended": true 980 | }, 981 | { 982 | "code": "POXYJSONCONVERT", 983 | "fallbackDate": "9999-12-31", 984 | "paidUpTo": "9999-12-31", 985 | "extended": true 986 | }, 987 | { 988 | "code": "PGERRYAURORA", 989 | "fallbackDate": "9999-12-31", 990 | "paidUpTo": "9999-12-31", 991 | "extended": true 992 | }, 993 | { 994 | "code": "PWXUFQYRHZCRSEO", 995 | "fallbackDate": "9999-12-31", 996 | "paidUpTo": "9999-12-31", 997 | "extended": true 998 | }, 999 | { 1000 | "code": "PWAUFKYVHQCRXEO", 1001 | "fallbackDate": "9999-12-31", 1002 | "paidUpTo": "9999-12-31", 1003 | "extended": true 1004 | }, 1005 | { 1006 | "code": "PSQLFLUFFLINTER", 1007 | "fallbackDate": "9999-12-31", 1008 | "paidUpTo": "9999-12-31", 1009 | "extended": true 1010 | }, 1011 | { 1012 | "code": "PMAGE", 1013 | "fallbackDate": "9999-12-31", 1014 | "paidUpTo": "9999-12-31", 1015 | "extended": true 1016 | }, 1017 | { 1018 | "code": "PTAILWINDTOOLS", 1019 | "fallbackDate": "9999-12-31", 1020 | "paidUpTo": "9999-12-31", 1021 | "extended": true 1022 | }, 1023 | { 1024 | "code": "PTRAVISCI", 1025 | "fallbackDate": "9999-12-31", 1026 | "paidUpTo": "9999-12-31", 1027 | "extended": true 1028 | }, 1029 | { 1030 | "code": "PMONGOEXPERT", 1031 | "fallbackDate": "9999-12-31", 1032 | "paidUpTo": "9999-12-31", 1033 | "extended": true 1034 | }, 1035 | { 1036 | "code": "PNEXTSKETCHTWO", 1037 | "fallbackDate": "9999-12-31", 1038 | "paidUpTo": "9999-12-31", 1039 | "extended": true 1040 | }, 1041 | { 1042 | "code": "PWXUQQYVOXCRSEO", 1043 | "fallbackDate": "9999-12-31", 1044 | "paidUpTo": "9999-12-31", 1045 | "extended": true 1046 | }, 1047 | { 1048 | "code": "PBUILDMON", 1049 | "fallbackDate": "9999-12-31", 1050 | "paidUpTo": "9999-12-31", 1051 | "extended": true 1052 | }, 1053 | { 1054 | "code": "PJETCLIENT", 1055 | "fallbackDate": "9999-12-31", 1056 | "paidUpTo": "9999-12-31", 1057 | "extended": true 1058 | }, 1059 | { 1060 | "code": "PAICODING", 1061 | "fallbackDate": "9999-12-31", 1062 | "paidUpTo": "9999-12-31", 1063 | "extended": true 1064 | }, 1065 | { 1066 | "code": "PCAICOMMITAPP", 1067 | "fallbackDate": "9999-12-31", 1068 | "paidUpTo": "9999-12-31", 1069 | "extended": true 1070 | }, 1071 | { 1072 | "code": "PCHATGPTCODING", 1073 | "fallbackDate": "9999-12-31", 1074 | "paidUpTo": "9999-12-31", 1075 | "extended": true 1076 | }, 1077 | { 1078 | "code": "POLYBPMNGDNEXT", 1079 | "fallbackDate": "9999-12-31", 1080 | "paidUpTo": "9999-12-31", 1081 | "extended": true 1082 | }, 1083 | { 1084 | "code": "PARMADILLO", 1085 | "fallbackDate": "9999-12-31", 1086 | "paidUpTo": "9999-12-31", 1087 | "extended": true 1088 | }, 1089 | { 1090 | "code": "PVERILOGLANGUAG", 1091 | "fallbackDate": "9999-12-31", 1092 | "paidUpTo": "9999-12-31", 1093 | "extended": true 1094 | }, 1095 | { 1096 | "code": "PNOSQLNAVMDB", 1097 | "fallbackDate": "9999-12-31", 1098 | "paidUpTo": "9999-12-31", 1099 | "extended": true 1100 | }, 1101 | { 1102 | "code": "PCUEFY", 1103 | "fallbackDate": "9999-12-31", 1104 | "paidUpTo": "9999-12-31", 1105 | "extended": true 1106 | }, 1107 | { 1108 | "code": "PGPTASSISTANT", 1109 | "fallbackDate": "9999-12-31", 1110 | "paidUpTo": "9999-12-31", 1111 | "extended": true 1112 | }, 1113 | { 1114 | "code": "PNPMPACKAGEJSON", 1115 | "fallbackDate": "9999-12-31", 1116 | "paidUpTo": "9999-12-31", 1117 | "extended": true 1118 | }, 1119 | { 1120 | "code": "PAZURECODING", 1121 | "fallbackDate": "9999-12-31", 1122 | "paidUpTo": "9999-12-31", 1123 | "extended": true 1124 | }, 1125 | { 1126 | "code": "PGITLABCICD", 1127 | "fallbackDate": "9999-12-31", 1128 | "paidUpTo": "9999-12-31", 1129 | "extended": true 1130 | }, 1131 | { 1132 | "code": "PLOCALSTACK", 1133 | "fallbackDate": "9999-12-31", 1134 | "paidUpTo": "9999-12-31", 1135 | "extended": true 1136 | }, 1137 | { 1138 | "code": "PSENTRY", 1139 | "fallbackDate": "9999-12-31", 1140 | "paidUpTo": "9999-12-31", 1141 | "extended": true 1142 | }, 1143 | { 1144 | "code": "AIP", 1145 | "fallbackDate": "9999-12-31", 1146 | "paidUpTo": "9999-12-31", 1147 | "extended": true 1148 | }, 1149 | { 1150 | "code": "PKAFKA", 1151 | "fallbackDate": "9999-12-31", 1152 | "paidUpTo": "9999-12-31", 1153 | "extended": true 1154 | }, 1155 | { 1156 | "code": "PSRCODEGEN", 1157 | "fallbackDate": "9999-12-31", 1158 | "paidUpTo": "9999-12-31", 1159 | "extended": true 1160 | }, 1161 | { 1162 | "code": "PSOURCESYNCPRO", 1163 | "fallbackDate": "9999-12-31", 1164 | "paidUpTo": "9999-12-31", 1165 | "extended": true 1166 | }, 1167 | { 1168 | "code": "PAZD", 1169 | "fallbackDate": "9999-12-31", 1170 | "paidUpTo": "9999-12-31", 1171 | "extended": true 1172 | }, 1173 | { 1174 | "code": "PWXUQRYTOXCRSEO", 1175 | "fallbackDate": "9999-12-31", 1176 | "paidUpTo": "9999-12-31", 1177 | "extended": true 1178 | }, 1179 | { 1180 | "code": "PPOLARISTOMCATS", 1181 | "fallbackDate": "9999-12-31", 1182 | "paidUpTo": "9999-12-31", 1183 | "extended": true 1184 | }, 1185 | { 1186 | "code": "PIMAGETOVECTOR", 1187 | "fallbackDate": "9999-12-31", 1188 | "paidUpTo": "9999-12-31", 1189 | "extended": true 1190 | }, 1191 | { 1192 | "code": "PDATAGRAPH", 1193 | "fallbackDate": "9999-12-31", 1194 | "paidUpTo": "9999-12-31", 1195 | "extended": true 1196 | }, 1197 | { 1198 | "code": "POXYJSONSCHGEN", 1199 | "fallbackDate": "9999-12-31", 1200 | "paidUpTo": "9999-12-31", 1201 | "extended": true 1202 | }, 1203 | { 1204 | "code": "PSPEECHTOTEXT", 1205 | "fallbackDate": "9999-12-31", 1206 | "paidUpTo": "9999-12-31", 1207 | "extended": true 1208 | }, 1209 | { 1210 | "code": "PMYSQLPROXY", 1211 | "fallbackDate": "9999-12-31", 1212 | "paidUpTo": "9999-12-31", 1213 | "extended": true 1214 | }, 1215 | { 1216 | "code": "PNEKOCAT", 1217 | "fallbackDate": "9999-12-31", 1218 | "paidUpTo": "9999-12-31", 1219 | "extended": true 1220 | }, 1221 | { 1222 | "code": "PDBSSH", 1223 | "fallbackDate": "9999-12-31", 1224 | "paidUpTo": "9999-12-31", 1225 | "extended": true 1226 | }, 1227 | { 1228 | "code": "PRETROFITASSIT", 1229 | "fallbackDate": "9999-12-31", 1230 | "paidUpTo": "9999-12-31", 1231 | "extended": true 1232 | }, 1233 | { 1234 | "code": "PSQLFORMATTER", 1235 | "fallbackDate": "9999-12-31", 1236 | "paidUpTo": "9999-12-31", 1237 | "extended": true 1238 | }, 1239 | { 1240 | "code": "PSCHEMAREGVIEW", 1241 | "fallbackDate": "9999-12-31", 1242 | "paidUpTo": "9999-12-31", 1243 | "extended": true 1244 | }, 1245 | { 1246 | "code": "PCITRIC", 1247 | "fallbackDate": "9999-12-31", 1248 | "paidUpTo": "9999-12-31", 1249 | "extended": true 1250 | }, 1251 | { 1252 | "code": "PGENSETANDSET", 1253 | "fallbackDate": "9999-12-31", 1254 | "paidUpTo": "9999-12-31", 1255 | "extended": true 1256 | }, 1257 | { 1258 | "code": "PVOQAL", 1259 | "fallbackDate": "9999-12-31", 1260 | "paidUpTo": "9999-12-31", 1261 | "extended": true 1262 | }, 1263 | { 1264 | "code": "PSEQDIAORG", 1265 | "fallbackDate": "9999-12-31", 1266 | "paidUpTo": "9999-12-31", 1267 | "extended": true 1268 | }, 1269 | { 1270 | "code": "PFEIGNHELPER", 1271 | "fallbackDate": "9999-12-31", 1272 | "paidUpTo": "9999-12-31", 1273 | "extended": true 1274 | }, 1275 | { 1276 | "code": "PJQEXPRESS", 1277 | "fallbackDate": "9999-12-31", 1278 | "paidUpTo": "9999-12-31", 1279 | "extended": true 1280 | }, 1281 | { 1282 | "code": "PSWISSKITCONVER", 1283 | "fallbackDate": "9999-12-31", 1284 | "paidUpTo": "9999-12-31", 1285 | "extended": true 1286 | }, 1287 | { 1288 | "code": "PMYBATISCODE", 1289 | "fallbackDate": "9999-12-31", 1290 | "paidUpTo": "9999-12-31", 1291 | "extended": true 1292 | }, 1293 | { 1294 | "code": "POXYJSONDIAGRAM", 1295 | "fallbackDate": "9999-12-31", 1296 | "paidUpTo": "9999-12-31", 1297 | "extended": true 1298 | }, 1299 | { 1300 | "code": "PSCIPIOMGNL", 1301 | "fallbackDate": "9999-12-31", 1302 | "paidUpTo": "9999-12-31", 1303 | "extended": true 1304 | }, 1305 | { 1306 | "code": "PDATABASEBUDDY", 1307 | "fallbackDate": "9999-12-31", 1308 | "paidUpTo": "9999-12-31", 1309 | "extended": true 1310 | }, 1311 | { 1312 | "code": "PAUTOLOG", 1313 | "fallbackDate": "9999-12-31", 1314 | "paidUpTo": "9999-12-31", 1315 | "extended": true 1316 | }, 1317 | { 1318 | "code": "PFIREBASE", 1319 | "fallbackDate": "9999-12-31", 1320 | "paidUpTo": "9999-12-31", 1321 | "extended": true 1322 | }, 1323 | { 1324 | "code": "PSCIPIOFTL", 1325 | "fallbackDate": "9999-12-31", 1326 | "paidUpTo": "9999-12-31", 1327 | "extended": true 1328 | }, 1329 | { 1330 | "code": "PMICRONAUTLAUNC", 1331 | "fallbackDate": "9999-12-31", 1332 | "paidUpTo": "9999-12-31", 1333 | "extended": true 1334 | }, 1335 | { 1336 | "code": "PYIIFRAMEWORK", 1337 | "fallbackDate": "9999-12-31", 1338 | "paidUpTo": "9999-12-31", 1339 | "extended": true 1340 | }, 1341 | { 1342 | "code": "PSOTERISECURITY", 1343 | "fallbackDate": "9999-12-31", 1344 | "paidUpTo": "9999-12-31", 1345 | "extended": true 1346 | }, 1347 | { 1348 | "code": "PNFLUTTER", 1349 | "fallbackDate": "9999-12-31", 1350 | "paidUpTo": "9999-12-31", 1351 | "extended": true 1352 | }, 1353 | { 1354 | "code": "PJMETERPLUGINSM", 1355 | "fallbackDate": "9999-12-31", 1356 | "paidUpTo": "9999-12-31", 1357 | "extended": true 1358 | }, 1359 | { 1360 | "code": "PGITWORKTREE", 1361 | "fallbackDate": "9999-12-31", 1362 | "paidUpTo": "9999-12-31", 1363 | "extended": true 1364 | }, 1365 | { 1366 | "code": "PJMETERRUNNER", 1367 | "fallbackDate": "9999-12-31", 1368 | "paidUpTo": "9999-12-31", 1369 | "extended": true 1370 | }, 1371 | { 1372 | "code": "PINTELLIPHP", 1373 | "fallbackDate": "9999-12-31", 1374 | "paidUpTo": "9999-12-31", 1375 | "extended": true 1376 | }, 1377 | { 1378 | "code": "PPKXCODEGENERAT", 1379 | "fallbackDate": "9999-12-31", 1380 | "paidUpTo": "9999-12-31", 1381 | "extended": true 1382 | }, 1383 | { 1384 | "code": "PCLAI", 1385 | "fallbackDate": "9999-12-31", 1386 | "paidUpTo": "9999-12-31", 1387 | "extended": true 1388 | }, 1389 | { 1390 | "code": "PEXTRAIDETWEAKS", 1391 | "fallbackDate": "9999-12-31", 1392 | "paidUpTo": "9999-12-31", 1393 | "extended": true 1394 | }, 1395 | { 1396 | "code": "PMONGODB", 1397 | "fallbackDate": "9999-12-31", 1398 | "paidUpTo": "9999-12-31", 1399 | "extended": true 1400 | }, 1401 | { 1402 | "code": "PMAVENSEARCHER", 1403 | "fallbackDate": "9999-12-31", 1404 | "paidUpTo": "9999-12-31", 1405 | "extended": true 1406 | }, 1407 | { 1408 | "code": "PSYMFONYPLUGIN", 1409 | "fallbackDate": "9999-12-31", 1410 | "paidUpTo": "9999-12-31", 1411 | "extended": true 1412 | }, 1413 | { 1414 | "code": "PWLANG", 1415 | "fallbackDate": "9999-12-31", 1416 | "paidUpTo": "9999-12-31", 1417 | "extended": true 1418 | }, 1419 | { 1420 | "code": "PSWPLUGIN", 1421 | "fallbackDate": "9999-12-31", 1422 | "paidUpTo": "9999-12-31", 1423 | "extended": true 1424 | }, 1425 | { 1426 | "code": "PGITTOOLBOX", 1427 | "fallbackDate": "9999-12-31", 1428 | "paidUpTo": "9999-12-31", 1429 | "extended": true 1430 | }, 1431 | { 1432 | "code": "PHYBRISCOMMERCE", 1433 | "fallbackDate": "9999-12-31", 1434 | "paidUpTo": "9999-12-31", 1435 | "extended": true 1436 | }, 1437 | { 1438 | "code": "PMATERIALUI", 1439 | "fallbackDate": "9999-12-31", 1440 | "paidUpTo": "9999-12-31", 1441 | "extended": true 1442 | }, 1443 | { 1444 | "code": "PSEQUENCEDIAGRA", 1445 | "fallbackDate": "9999-12-31", 1446 | "paidUpTo": "9999-12-31", 1447 | "extended": true 1448 | }, 1449 | { 1450 | "code": "PJETFORCER", 1451 | "fallbackDate": "9999-12-31", 1452 | "paidUpTo": "9999-12-31", 1453 | "extended": true 1454 | }, 1455 | { 1456 | "code": "PAEMIDE", 1457 | "fallbackDate": "9999-12-31", 1458 | "paidUpTo": "9999-12-31", 1459 | "extended": true 1460 | }, 1461 | { 1462 | "code": "PRNCONSOLE", 1463 | "fallbackDate": "9999-12-31", 1464 | "paidUpTo": "9999-12-31", 1465 | "extended": true 1466 | }, 1467 | { 1468 | "code": "PANSIHIGHLIGHT", 1469 | "fallbackDate": "9999-12-31", 1470 | "paidUpTo": "9999-12-31", 1471 | "extended": true 1472 | }, 1473 | { 1474 | "code": "PYAOQIANGBPMN", 1475 | "fallbackDate": "9999-12-31", 1476 | "paidUpTo": "9999-12-31", 1477 | "extended": true 1478 | }, 1479 | { 1480 | "code": "PAEM", 1481 | "fallbackDate": "9999-12-31", 1482 | "paidUpTo": "9999-12-31", 1483 | "extended": true 1484 | }, 1485 | { 1486 | "code": "PPLUGDEVKITM", 1487 | "fallbackDate": "9999-12-31", 1488 | "paidUpTo": "9999-12-31", 1489 | "extended": true 1490 | } 1491 | ], 1492 | "metadata": "0120230915PSAN000005", 1493 | "hash": "55800413/0:-1619552804", 1494 | "gracePeriodDays": 7, 1495 | "autoProlongated": false, 1496 | "isAutoProlongated": false 1497 | } -------------------------------------------------------------------------------- /src/crack/jetbrains/licenses_base.json: -------------------------------------------------------------------------------- 1 | { 2 | "licenseId": "JETBRAINS", 3 | "licenseeName": "crack", 4 | "assigneeName": "", 5 | "assigneeEmail": "", 6 | "licenseRestriction": "", 7 | "checkConcurrentUse": false, 8 | "products": [ 9 | { 10 | "code": "II", 11 | "fallbackDate": "9999-12-31", 12 | "paidUpTo": "9999-12-31", 13 | "extended": true 14 | }, 15 | { 16 | "code": "PS", 17 | "fallbackDate": "9999-12-31", 18 | "paidUpTo": "9999-12-31", 19 | "extended": true 20 | }, 21 | { 22 | "code": "AC", 23 | "fallbackDate": "9999-12-31", 24 | "paidUpTo": "9999-12-31", 25 | "extended": true 26 | }, 27 | { 28 | "code": "DB", 29 | "fallbackDate": "9999-12-31", 30 | "paidUpTo": "9999-12-31", 31 | "extended": true 32 | }, 33 | { 34 | "code": "RM", 35 | "fallbackDate": "9999-12-31", 36 | "paidUpTo": "9999-12-31", 37 | "extended": true 38 | }, 39 | { 40 | "code": "WS", 41 | "fallbackDate": "9999-12-31", 42 | "paidUpTo": "9999-12-31", 43 | "extended": true 44 | }, 45 | { 46 | "code": "RD", 47 | "fallbackDate": "9999-12-31", 48 | "paidUpTo": "9999-12-31", 49 | "extended": true 50 | }, 51 | { 52 | "code": "CL", 53 | "fallbackDate": "9999-12-31", 54 | "paidUpTo": "9999-12-31", 55 | "extended": true 56 | }, 57 | { 58 | "code": "PC", 59 | "fallbackDate": "9999-12-31", 60 | "paidUpTo": "9999-12-31", 61 | "extended": true 62 | }, 63 | { 64 | "code": "GO", 65 | "fallbackDate": "9999-12-31", 66 | "paidUpTo": "9999-12-31", 67 | "extended": true 68 | }, 69 | { 70 | "code": "DS", 71 | "fallbackDate": "9999-12-31", 72 | "paidUpTo": "9999-12-31", 73 | "extended": true 74 | }, 75 | { 76 | "code": "DC", 77 | "fallbackDate": "9999-12-31", 78 | "paidUpTo": "9999-12-31", 79 | "extended": true 80 | }, 81 | { 82 | "code": "DPN", 83 | "fallbackDate": "9999-12-31", 84 | "paidUpTo": "9999-12-31", 85 | "extended": true 86 | }, 87 | { 88 | "code": "DM", 89 | "fallbackDate": "9999-12-31", 90 | "paidUpTo": "9999-12-31", 91 | "extended": true 92 | } 93 | ], 94 | "metadata": "0120230915PSAN000005", 95 | "hash": "55800413/0:-1619552804", 96 | "gracePeriodDays": 7, 97 | "autoProlongated": false, 98 | "isAutoProlongated": false 99 | } -------------------------------------------------------------------------------- /src/crack/jetbrains/plugins.json: -------------------------------------------------------------------------------- 1 | { 2 | "10080": { 3 | "code": "PRAINBOWBRACKET", 4 | "extended": true, 5 | "name": "Rainbow Brackets" 6 | }, 7 | "10083": { 8 | "code": "PGITSCOPE", 9 | "extended": true, 10 | "name": "Git Scope" 11 | }, 12 | "10695": { 13 | "code": "PVLOG", 14 | "extended": true, 15 | "name": "SystemVerilog" 16 | }, 17 | "10811": { 18 | "code": "PCODEMRBASE", 19 | "extended": true, 20 | "name": "CodeMR" 21 | }, 22 | "10828": { 23 | "code": "PJDCLEANREAD", 24 | "extended": true, 25 | "name": "JavaDoc Clean Read" 26 | }, 27 | "10904": { 28 | "code": "PBRWJV", 29 | "extended": true, 30 | "name": "AutoCode for Java" 31 | }, 32 | "10925": { 33 | "code": "PDB", 34 | "extended": true, 35 | "name": "Database Tools and SQL for WebStorm" 36 | }, 37 | "11058": { 38 | "code": "PEXTRAICONS", 39 | "extended": true, 40 | "name": "Extra Icons" 41 | }, 42 | "11461": { 43 | "code": "DC", 44 | "extended": true, 45 | "name": "dotCover" 46 | }, 47 | "11462": { 48 | "code": "DPN", 49 | "extended": true, 50 | "name": "dotTrace" 51 | }, 52 | "11560": { 53 | "code": "PBISJ", 54 | "extended": true, 55 | "name": "Java Antidecompiler" 56 | }, 57 | "12108": { 58 | "code": "PSCIPIO", 59 | "extended": true, 60 | "name": "Scipio ERP Integration" 61 | }, 62 | "12408": { 63 | "code": "PBISAA", 64 | "extended": true, 65 | "name": "Android Antidecompiler" 66 | }, 67 | "12437": { 68 | "code": "PZENUML", 69 | "extended": true, 70 | "name": "ZenUML Support" 71 | }, 72 | "12621": { 73 | "code": "PJFORMDESIGNER", 74 | "extended": true, 75 | "name": "JFormDesigner (Marketplace Edition)" 76 | }, 77 | "12626": { 78 | "code": "PORCHIDE", 79 | "extended": true, 80 | "name": "OrchidE - Ansible Language Support" 81 | }, 82 | "12634": { 83 | "code": "PIEDIS", 84 | "extended": true, 85 | "name": "Iedis 2" 86 | }, 87 | "12820": { 88 | "code": "PREDIS", 89 | "extended": true, 90 | "name": "Redis" 91 | }, 92 | "12869": { 93 | "code": "PCMAKEPLUS", 94 | "extended": true, 95 | "name": "CMake Plus" 96 | }, 97 | "12887": { 98 | "code": "POPENAPI", 99 | "extended": true, 100 | "name": "OpenAPI Editor" 101 | }, 102 | "12895": { 103 | "code": "PBETTERHIGHLIGH", 104 | "extended": true, 105 | "name": "Better Highlights" 106 | }, 107 | "13016": { 108 | "code": "PATOMONEDARK", 109 | "extended": true, 110 | "name": "Atom One Dark By Mayke" 111 | }, 112 | "13086": { 113 | "code": "PGDOC", 114 | "extended": true, 115 | "name": "Generate Document" 116 | }, 117 | "13151": { 118 | "code": "POFFICEFLOOR", 119 | "extended": true, 120 | "name": "OfficeFloor" 121 | }, 122 | "13156": { 123 | "code": "PWIFIADB", 124 | "extended": true, 125 | "name": "Android WiFiADB" 126 | }, 127 | "13441": { 128 | "code": "PLARAVEL", 129 | "extended": true, 130 | "name": "Laravel Idea" 131 | }, 132 | "13499": { 133 | "code": "PODOO", 134 | "extended": true, 135 | "name": "Odoo" 136 | }, 137 | "13538": { 138 | "code": "PCREVIEW", 139 | "extended": true, 140 | "name": "Bitbucket Pull Requests" 141 | }, 142 | "13615": { 143 | "code": "PMRINTEGEE", 144 | "extended": true, 145 | "name": "Merge Request Integration EE - Code Review for GitLab" 146 | }, 147 | "13668": { 148 | "code": "PSFCC", 149 | "extended": true, 150 | "name": "Salesforce B2C Commerce (SFCC)" 151 | }, 152 | "13720": { 153 | "code": "PMINBATIS", 154 | "extended": true, 155 | "name": "MinBatis" 156 | }, 157 | "13733": { 158 | "code": "PPOJOTOJSONSCH", 159 | "extended": true, 160 | "name": "POJO to JSON Schema" 161 | }, 162 | "13838": { 163 | "code": "PRDFANDSPARQL", 164 | "extended": true, 165 | "name": "RDF and SPARQL" 166 | }, 167 | "13841": { 168 | "code": "PBASHSUPPORTPRO", 169 | "extended": true, 170 | "name": "BashSupport Pro" 171 | }, 172 | "13905": { 173 | "code": "PMYBATISLOG", 174 | "extended": true, 175 | "name": "MyBatis Log" 176 | }, 177 | "14053": { 178 | "code": "PSMARTJUMP", 179 | "extended": true, 180 | "name": "Smart Jump" 181 | }, 182 | "14056": { 183 | "code": "PGITFLOWPLUS", 184 | "extended": true, 185 | "name": "GitFlowPlus" 186 | }, 187 | "14070": { 188 | "code": "PJAVACODESUGG", 189 | "extended": true, 190 | "name": "Auto Java Code Suggestions" 191 | }, 192 | "14088": { 193 | "code": "PGOLANGCODESUGG", 194 | "extended": true, 195 | "name": "Auto GOLang Code Suggestions" 196 | }, 197 | "14089": { 198 | "code": "PRUBYCODESUGG", 199 | "extended": true, 200 | "name": "Auto Ruby Code Suggestions" 201 | }, 202 | "14104": { 203 | "code": "PVCS", 204 | "extended": true, 205 | "name": "commit-template" 206 | }, 207 | "14166": { 208 | "code": "PJSCODESUGG", 209 | "extended": true, 210 | "name": "Auto Javascript Code Suggestions" 211 | }, 212 | "14167": { 213 | "code": "PPHPCODESUGG", 214 | "extended": true, 215 | "name": "Auto PHP Code Suggestions" 216 | }, 217 | "14203": { 218 | "code": "PSVERILOG", 219 | "extended": true, 220 | "name": "SystemVerilog Studio" 221 | }, 222 | "14338": { 223 | "code": "PSPARQL", 224 | "extended": true, 225 | "name": "SPARQL" 226 | }, 227 | "14371": { 228 | "code": "PIMAGEVIEWER", 229 | "extended": true, 230 | "name": "OpenCV Image Viewer" 231 | }, 232 | "14384": { 233 | "code": "PTOOLSET", 234 | "extended": true, 235 | "name": "Toolset" 236 | }, 237 | "14393": { 238 | "code": "PJSONTOTS", 239 | "extended": true, 240 | "name": "JsonToTypeScript" 241 | }, 242 | "14434": { 243 | "code": "PQMLEDITOR", 244 | "extended": true, 245 | "name": "QmlEditor" 246 | }, 247 | "14437": { 248 | "code": "PSI", 249 | "extended": true, 250 | "name": "Shared Project Indexes" 251 | }, 252 | "14482": { 253 | "code": "PSTRKER", 254 | "extended": true, 255 | "name": "Stryker" 256 | }, 257 | "14512": { 258 | "code": "PELASTICSEARCH", 259 | "extended": true, 260 | "name": "Elasticsearch" 261 | }, 262 | "14522": { 263 | "code": "PMYBATISHELPER", 264 | "extended": true, 265 | "name": "MyBatisCodeHelperPro (Marketplace Edition)" 266 | }, 267 | "14557": { 268 | "code": "PVISUALGC", 269 | "extended": true, 270 | "name": "JDK VisualGC" 271 | }, 272 | "14594": { 273 | "code": "PPYCODESUGG", 274 | "extended": true, 275 | "name": "Auto Python Code Suggestions" 276 | }, 277 | "14718": { 278 | "code": "PFLUTTER", 279 | "extended": true, 280 | "name": "Flutter Storm" 281 | }, 282 | "14723": { 283 | "code": "PRESTKIT", 284 | "extended": true, 285 | "name": "RestfulBox" 286 | }, 287 | "14742": { 288 | "code": "PAWSLAMBDADEPLR", 289 | "extended": true, 290 | "name": "AWS Lambda Deployer" 291 | }, 292 | "14821": { 293 | "code": "PPUMLSTUDIO", 294 | "extended": true, 295 | "name": "PlantUML Studio" 296 | }, 297 | "14896": { 298 | "code": "PCWMP", 299 | "extended": true, 300 | "name": "Code With Me" 301 | }, 302 | "15189": { 303 | "code": "PFIREHIGHLIGHT", 304 | "extended": true, 305 | "name": "Firebase Rules" 306 | }, 307 | "15242": { 308 | "code": "PJPASQL", 309 | "extended": true, 310 | "name": "JPA SQL" 311 | }, 312 | "15379": { 313 | "code": "PGODRUNNER", 314 | "extended": true, 315 | "name": "Execution God Recorder" 316 | }, 317 | "15405": { 318 | "code": "PLEDGER", 319 | "extended": true, 320 | "name": "Ledger CLI" 321 | }, 322 | "15433": { 323 | "code": "PREGEXTOOL", 324 | "extended": true, 325 | "name": "Regex Tool" 326 | }, 327 | "15456": { 328 | "code": "PAPH", 329 | "extended": true, 330 | "name": "Android Package Helper" 331 | }, 332 | "15457": { 333 | "code": "PGITLABCI", 334 | "extended": true, 335 | "name": "Gitlab CI Pipeline Dashboard" 336 | }, 337 | "15458": { 338 | "code": "PCIRCLECI", 339 | "extended": true, 340 | "name": "CircleCI Dashboard" 341 | }, 342 | "15535": { 343 | "code": "PHEROKU", 344 | "extended": true, 345 | "name": "Heroku Dashboard" 346 | }, 347 | "15574": { 348 | "code": "PFLYINSKYZJBZ", 349 | "extended": true, 350 | "name": "spring-assistant-@valueToYml" 351 | }, 352 | "15722": { 353 | "code": "PREDISMANAGER", 354 | "extended": true, 355 | "name": "Redis Manager" 356 | }, 357 | "15773": { 358 | "code": "PZEROCODE", 359 | "extended": true, 360 | "name": "Zerocode Scenario Helper" 361 | }, 362 | "15851": { 363 | "code": "PSTORMSECTIONS", 364 | "extended": true, 365 | "name": "StormSections" 366 | }, 367 | "15945": { 368 | "code": "PSENTRYINTEG", 369 | "extended": true, 370 | "name": "Sentry Integration" 371 | }, 372 | "16160": { 373 | "code": "PREDISTOOLS", 374 | "extended": true, 375 | "name": "Redis-Cli" 376 | }, 377 | "16217": { 378 | "code": "PFUZYFIPC", 379 | "extended": true, 380 | "name": "Find In Files (Favorites)" 381 | }, 382 | "16222": { 383 | "code": "PBITRISECI", 384 | "extended": true, 385 | "name": "Bitrise Dashboard" 386 | }, 387 | "16405": { 388 | "code": "PQTSQSSEDITOR", 389 | "extended": true, 390 | "name": "Qt Style Sheets Editor" 391 | }, 392 | "16682": { 393 | "code": "PAPPLETRUNNER", 394 | "extended": true, 395 | "name": "Applet Runner" 396 | }, 397 | "16861": { 398 | "code": "PDATABASE", 399 | "extended": true, 400 | "name": "Database Helper" 401 | }, 402 | "16935": { 403 | "code": "PHPEAPLUGIN", 404 | "extended": true, 405 | "name": "Php Inspections (EA Ultimate)" 406 | }, 407 | "16988": { 408 | "code": "PFASTREQUEST", 409 | "extended": true, 410 | "name": "Fast Request - API Buddy" 411 | }, 412 | "17166": { 413 | "code": "PLEP", 414 | "extended": true, 415 | "name": "LeetCode Editor Pro" 416 | }, 417 | "17440": { 418 | "code": "PHPBUILDER", 419 | "extended": true, 420 | "name": "PHP Data Object Generator" 421 | }, 422 | "17456": { 423 | "code": "PMATERIALHC", 424 | "extended": true, 425 | "name": "Material Theme UI High Contrast" 426 | }, 427 | "17465": { 428 | "code": "PCDMQTTCLIENT", 429 | "extended": true, 430 | "name": "MQTT Client" 431 | }, 432 | "17501": { 433 | "code": "PISCRATCH", 434 | "extended": true, 435 | "name": "Code Note: In IDE Note-Taking, Project Notes" 436 | }, 437 | "17688": { 438 | "code": "PRSMGNL", 439 | "extended": true, 440 | "name": "Magnolia YAML Assistant" 441 | }, 442 | "17692": { 443 | "code": "PCAPELASTIC", 444 | "extended": true, 445 | "name": "Cap-Elasticsearch" 446 | }, 447 | "17699": { 448 | "code": "PASTOCK", 449 | "extended": true, 450 | "name": "AStock" 451 | }, 452 | "17785": { 453 | "code": "PCAPREDIS", 454 | "extended": true, 455 | "name": "Cap-Redis" 456 | }, 457 | "18151": { 458 | "code": "PBEANCONVERTER", 459 | "extended": true, 460 | "name": "Simple Object Copy" 461 | }, 462 | "18209": { 463 | "code": "PELSA", 464 | "extended": true, 465 | "name": "ElasticSearch-Admin" 466 | }, 467 | "18232": { 468 | "code": "PDJANGOTPLPEP", 469 | "extended": true, 470 | "name": "Typed Django Template" 471 | }, 472 | "18269": { 473 | "code": "PQUERYFLAG", 474 | "extended": true, 475 | "name": "QueryFlag" 476 | }, 477 | "18280": { 478 | "code": "PNGINX", 479 | "extended": true, 480 | "name": "Nginx Configuration Pro" 481 | }, 482 | "18286": { 483 | "code": "PKSEXPLORER", 484 | "extended": true, 485 | "name": "KS-Explorer" 486 | }, 487 | "18341": { 488 | "code": "PZKA", 489 | "extended": true, 490 | "name": "Zookeeper-Admin" 491 | }, 492 | "18357": { 493 | "code": "PCDAPIRUNNER", 494 | "extended": true, 495 | "name": "API Runner" 496 | }, 497 | "18387": { 498 | "code": "PNEONPRO", 499 | "extended": true, 500 | "name": "NEON Nette Support" 501 | }, 502 | "18389": { 503 | "code": "PMBCODEHELPPRO", 504 | "extended": true, 505 | "name": "Mybatis Smart Code Help Pro" 506 | }, 507 | "18394": { 508 | "code": "PCODEREFACTORAI", 509 | "extended": true, 510 | "name": "Code Refactor AI" 511 | }, 512 | "18425": { 513 | "code": "PXSDVISUALIZER", 514 | "extended": true, 515 | "name": "XSD / WSDL Visualizer" 516 | }, 517 | "18622": { 518 | "code": "PSPRINGBOOTIDEA", 519 | "extended": true, 520 | "name": "Spring Boot Helper" 521 | }, 522 | "18663": { 523 | "code": "PEXCELEDITOR", 524 | "extended": true, 525 | "name": "ExcelEditor" 526 | }, 527 | "18689": { 528 | "code": "PGITLAB", 529 | "extended": true, 530 | "name": "GitLab Merge Requests" 531 | }, 532 | "18857": { 533 | "code": "PTERMINAL", 534 | "extended": true, 535 | "name": "Terminal Pro" 536 | }, 537 | "18860": { 538 | "code": "PWIREMOCHA", 539 | "extended": true, 540 | "name": "WireMocha" 541 | }, 542 | "18896": { 543 | "code": "PDYNAMODB", 544 | "extended": true, 545 | "name": "DynamoDB" 546 | }, 547 | "18971": { 548 | "code": "PFASTSHELL", 549 | "extended": true, 550 | "name": "FastShell" 551 | }, 552 | "18975": { 553 | "code": "PJSONNETEMLSUP", 554 | "extended": true, 555 | "name": "Jsonnet Pro" 556 | }, 557 | "18981": { 558 | "code": "PPHPHOUDINI", 559 | "extended": true, 560 | "name": "PHP Houdini" 561 | }, 562 | "19024": { 563 | "code": "POXYXSDJSONSCH", 564 | "extended": true, 565 | "name": "XSD to JSON Schema" 566 | }, 567 | "19027": { 568 | "code": "PQUARKUSHELPER", 569 | "extended": true, 570 | "name": "Quarkus Assistant" 571 | }, 572 | "19097": { 573 | "code": "PWGCODECREATOR", 574 | "extended": true, 575 | "name": "codeCreator" 576 | }, 577 | "19114": { 578 | "code": "PCIINTG", 579 | "extended": true, 580 | "name": "CIclone" 581 | }, 582 | "19161": { 583 | "code": "PDBDATABASETOOL", 584 | "extended": true, 585 | "name": "Database Tool" 586 | }, 587 | "19205": { 588 | "code": "PNGROK", 589 | "extended": true, 590 | "name": "Ngrok" 591 | }, 592 | "19250": { 593 | "code": "PMATERIALEXTRAS", 594 | "extended": true, 595 | "name": "Material Theme UI Extras" 596 | }, 597 | "19297": { 598 | "code": "PJSONTOANYLANGU", 599 | "extended": true, 600 | "name": "JsonToAnyLanguage" 601 | }, 602 | "19308": { 603 | "code": "PMATERIALCUSTOM", 604 | "extended": true, 605 | "name": "Material Theme UI Custom Theme" 606 | }, 607 | "19309": { 608 | "code": "PMATERIALLANG", 609 | "extended": true, 610 | "name": "Material Theme UI Language Additions" 611 | }, 612 | "19310": { 613 | "code": "PMATERIALFRAME", 614 | "extended": true, 615 | "name": "Material Theme UI Project Frame" 616 | }, 617 | "19316": { 618 | "code": "PRANCHER", 619 | "extended": true, 620 | "name": "Rancher" 621 | }, 622 | "19360": { 623 | "code": "PREDISCLIHELPER", 624 | "extended": true, 625 | "name": "Redis Client" 626 | }, 627 | "19556": { 628 | "code": "PSCREENCODEPRO", 629 | "extended": true, 630 | "name": "ScreenCodePro" 631 | }, 632 | "19578": { 633 | "code": "PCODEKITS", 634 | "extended": true, 635 | "name": "CodeKits" 636 | }, 637 | "19599": { 638 | "code": "PREDISS", 639 | "extended": true, 640 | "name": "Redis Operator" 641 | }, 642 | "19660": { 643 | "code": "PAWSQLADVISOR", 644 | "extended": true, 645 | "name": "PawSQL Advisor,SQL Audit/Rewrite/Index Advice,Tune SQL by Clicks" 646 | }, 647 | "19661": { 648 | "code": "PLATTEPRO", 649 | "extended": true, 650 | "name": "Latte Pro" 651 | }, 652 | "19668": { 653 | "code": "PGERRYTHEMESPRO", 654 | "extended": true, 655 | "name": "Gerry Themes Pro" 656 | }, 657 | "19675": { 658 | "code": "PUNIAPPSUPPORT", 659 | "extended": true, 660 | "name": "Uniapp Support" 661 | }, 662 | "19889": { 663 | "code": "POPENAPICRUDWIZ", 664 | "extended": true, 665 | "name": "OpenAPI CRUD Wizard" 666 | }, 667 | "19906": { 668 | "code": "PGOPARSER", 669 | "extended": true, 670 | "name": "GoParser" 671 | }, 672 | "19963": { 673 | "code": "PNEXTSKETCH", 674 | "extended": true, 675 | "name": "NextSketch" 676 | }, 677 | "19977": { 678 | "code": "PNETLIFY", 679 | "extended": true, 680 | "name": "Netlify Dashboard" 681 | }, 682 | "20049": { 683 | "code": "PGERRYCYBERPUNK", 684 | "extended": true, 685 | "name": "Gerry Cyberpunk" 686 | }, 687 | "20050": { 688 | "code": "PTLDRAI", 689 | "extended": true, 690 | "name": "TLDR" 691 | }, 692 | "20061": { 693 | "code": "PBREWBUNDLE", 694 | "extended": true, 695 | "name": "Brew Bundle" 696 | }, 697 | "20075": { 698 | "code": "PGERRYSPACE", 699 | "extended": true, 700 | "name": "Gerry Space" 701 | }, 702 | "20111": { 703 | "code": "PKAFKAIDE", 704 | "extended": true, 705 | "name": "Kafkaide" 706 | }, 707 | "20144": { 708 | "code": "PGITHUBCI", 709 | "extended": true, 710 | "name": "Github CI Dashboard" 711 | }, 712 | "20236": { 713 | "code": "PGERRYNATURE", 714 | "extended": true, 715 | "name": "Gerry Nature" 716 | }, 717 | "20238": { 718 | "code": "PEXTENSION", 719 | "extended": true, 720 | "name": "Extensions Manager" 721 | }, 722 | "20243": { 723 | "code": "PSKOL", 724 | "extended": true, 725 | "name": "Skol" 726 | }, 727 | "20246": { 728 | "code": "PGERRYCHERRY", 729 | "extended": true, 730 | "name": "Gerry Cherry" 731 | }, 732 | "20247": { 733 | "code": "PGERRYCOFFEE", 734 | "extended": true, 735 | "name": "Gerry Coffee" 736 | }, 737 | "20293": { 738 | "code": "PCONNECTUI", 739 | "extended": true, 740 | "name": "Connect Api" 741 | }, 742 | "20297": { 743 | "code": "POXYJSONCONVERT", 744 | "extended": true, 745 | "name": "JSON-YAML-XML Converter" 746 | }, 747 | "20319": { 748 | "code": "PGERRYAURORA", 749 | "extended": true, 750 | "name": "Gerry Aurora" 751 | }, 752 | "20411": { 753 | "code": "PWXUFQYRHZCRSEO", 754 | "extended": true, 755 | "name": "Gorm" 756 | }, 757 | "20526": { 758 | "code": "PWAUFKYVHQCRXEO", 759 | "extended": true, 760 | "name": "IoGame" 761 | }, 762 | "20534": { 763 | "code": "PSQLFLUFFLINTER", 764 | "extended": true, 765 | "name": "Sqlfluff Linter (Ultimate Edition)" 766 | }, 767 | "20554": { 768 | "code": "PMAGE", 769 | "extended": true, 770 | "name": "Magento and Adobe Commerce PhpStorm by Atwix" 771 | }, 772 | "20565": { 773 | "code": "PTAILWINDTOOLS", 774 | "extended": true, 775 | "name": "Snippet Toolkit for Tailwind CSS" 776 | }, 777 | "20683": { 778 | "code": "PTRAVISCI", 779 | "extended": true, 780 | "name": "Travis CI Dashboard" 781 | }, 782 | "20761": { 783 | "code": "PMONGOEXPERT", 784 | "extended": true, 785 | "name": "Mongo Expert" 786 | }, 787 | "20805": { 788 | "code": "PNEXTSKETCHTWO", 789 | "extended": true, 790 | "name": "NextSketch2" 791 | }, 792 | "20888": { 793 | "code": "PWXUQQYVOXCRSEO", 794 | "extended": true, 795 | "name": "JavaOrm" 796 | }, 797 | "20985": { 798 | "code": "PBUILDMON", 799 | "extended": true, 800 | "name": "Build Monitor" 801 | }, 802 | "21173": { 803 | "code": "PJETCLIENT", 804 | "extended": true, 805 | "name": "JetClient - The Ultimate REST Client" 806 | }, 807 | "21263": { 808 | "code": "PAICODING", 809 | "extended": true, 810 | "name": "AI Coding" 811 | }, 812 | "21289": { 813 | "code": "PCAICOMMITAPP", 814 | "extended": true, 815 | "name": "AICommit" 816 | }, 817 | "21314": { 818 | "code": "PCHATGPTCODING", 819 | "extended": true, 820 | "name": "ChatGPT Coding" 821 | }, 822 | "21361": { 823 | "code": "POLYBPMNGDNEXT", 824 | "extended": true, 825 | "name": "PolyBPMN visualizer" 826 | }, 827 | "21566": { 828 | "code": "PARMADILLO", 829 | "extended": true, 830 | "name": "Armadillo" 831 | }, 832 | "21813": { 833 | "code": "PVERILOGLANGUAG", 834 | "extended": true, 835 | "name": "Verilog Language Support" 836 | }, 837 | "21833": { 838 | "code": "PNOSQLNAVMDB", 839 | "extended": true, 840 | "name": "NoSQL Navigator For MongoDB" 841 | }, 842 | "21857": { 843 | "code": "PCUEFY", 844 | "extended": true, 845 | "name": "Cuefy" 846 | }, 847 | "22035": { 848 | "code": "PGPTASSISTANT", 849 | "extended": true, 850 | "name": "GPT Assistant" 851 | }, 852 | "22128": { 853 | "code": "PNPMPACKAGEJSON", 854 | "extended": true, 855 | "name": "NPM Package Json" 856 | }, 857 | "22194": { 858 | "code": "PAZURECODING", 859 | "extended": true, 860 | "name": "Azure Coding" 861 | }, 862 | "22202": { 863 | "code": "PGITLABCICD", 864 | "extended": true, 865 | "name": "GitLab CICD - Pipelines & Jobs, Builds Run Cancel Retry View Log" 866 | }, 867 | "22223": { 868 | "code": "PLOCALSTACK", 869 | "extended": true, 870 | "name": "LocalStack Integrator" 871 | }, 872 | "22232": { 873 | "code": "PSENTRY", 874 | "extended": true, 875 | "name": "Sentry" 876 | }, 877 | "22282": { 878 | "code": "AIP", 879 | "extended": true, 880 | "name": "JetBrains AI Assistant" 881 | }, 882 | "22284": { 883 | "code": "PKAFKA", 884 | "extended": true, 885 | "name": "Kafka Client" 886 | }, 887 | "22304": { 888 | "code": "PSRCODEGEN", 889 | "extended": true, 890 | "name": "Spring Rest Code Generator" 891 | }, 892 | "22318": { 893 | "code": "PSOURCESYNCPRO", 894 | "extended": true, 895 | "name": "Source Synchronizer Pro" 896 | }, 897 | "22319": { 898 | "code": "PAZD", 899 | "extended": true, 900 | "name": "Azd" 901 | }, 902 | "22428": { 903 | "code": "PWXUQRYTOXCRSEO", 904 | "extended": true, 905 | "name": "RustTool" 906 | }, 907 | "22429": { 908 | "code": "PPOLARISTOMCATS", 909 | "extended": true, 910 | "name": "Polaris Tomcat Server" 911 | }, 912 | "22459": { 913 | "code": "PIMAGETOVECTOR", 914 | "extended": true, 915 | "name": "ImageToVector" 916 | }, 917 | "22472": { 918 | "code": "PDATAGRAPH", 919 | "extended": true, 920 | "name": "DataGraph - JSON, YAML, XML Visualization" 921 | }, 922 | "22597": { 923 | "code": "POXYJSONSCHGEN", 924 | "extended": true, 925 | "name": "JSON Schema Generator" 926 | }, 927 | "22635": { 928 | "code": "PSPEECHTOTEXT", 929 | "extended": true, 930 | "name": "Speech-To-Text (AWS Transcribe)" 931 | }, 932 | "22655": { 933 | "code": "PMYSQLPROXY", 934 | "extended": true, 935 | "name": "MySQL Proxy" 936 | }, 937 | "22685": { 938 | "code": "PNEKOCAT", 939 | "extended": true, 940 | "name": "TamaCat the Embedded Internet Browser" 941 | }, 942 | "22713": { 943 | "code": "PDBSSH", 944 | "extended": true, 945 | "name": "SSH Tool" 946 | }, 947 | "22726": { 948 | "code": "PRETROFITASSIT", 949 | "extended": true, 950 | "name": "Retrofit Assistant" 951 | }, 952 | "22742": { 953 | "code": "PSQLFORMATTER", 954 | "extended": true, 955 | "name": "SQLFormatter" 956 | }, 957 | "22748": { 958 | "code": "PSCHEMAREGVIEW", 959 | "extended": true, 960 | "name": "Schema Registry Viewer" 961 | }, 962 | "22813": { 963 | "code": "PCITRIC", 964 | "extended": true, 965 | "name": "Citric" 966 | }, 967 | "22971": { 968 | "code": "PGENSETANDSET", 969 | "extended": true, 970 | "name": "GenerateSetAndGet" 971 | }, 972 | "23086": { 973 | "code": "PVOQAL", 974 | "extended": true, 975 | "name": "Voqal Assistant" 976 | }, 977 | "23115": { 978 | "code": "PSEQDIAORG", 979 | "extended": true, 980 | "name": "SequenceDiagram.org" 981 | }, 982 | "23146": { 983 | "code": "PFEIGNHELPER", 984 | "extended": true, 985 | "name": "Feign-Helper" 986 | }, 987 | "23360": { 988 | "code": "PJQEXPRESS", 989 | "extended": true, 990 | "name": "jqExpress" 991 | }, 992 | "23458": { 993 | "code": "PSWISSKITCONVER", 994 | "extended": true, 995 | "name": "SwissKit Converter" 996 | }, 997 | "23478": { 998 | "code": "PMYBATISCODE", 999 | "extended": true, 1000 | "name": "MybatisCode" 1001 | }, 1002 | "23554": { 1003 | "code": "POXYJSONDIAGRAM", 1004 | "extended": true, 1005 | "name": "JSON Schema Visualizer/Editor" 1006 | }, 1007 | "23556": { 1008 | "code": "PSCIPIOMGNL", 1009 | "extended": true, 1010 | "name": "Magnolia CMS Integration" 1011 | }, 1012 | "23561": { 1013 | "code": "PDATABASEBUDDY", 1014 | "extended": true, 1015 | "name": "Database Buddy" 1016 | }, 1017 | "23577": { 1018 | "code": "PAUTOLOG", 1019 | "extended": true, 1020 | "name": "AutoLog" 1021 | }, 1022 | "23609": { 1023 | "code": "PFIREBASE", 1024 | "extended": true, 1025 | "name": "Firebase Firestore" 1026 | }, 1027 | "23685": { 1028 | "code": "PSCIPIOFTL", 1029 | "extended": true, 1030 | "name": "Flexible Freemarker" 1031 | }, 1032 | "23687": { 1033 | "code": "PMICRONAUTLAUNC", 1034 | "extended": true, 1035 | "name": "Micronaut Launch" 1036 | }, 1037 | "23693": { 1038 | "code": "PYIIFRAMEWORK", 1039 | "extended": true, 1040 | "name": "Yii2 Framework Support" 1041 | }, 1042 | "23743": { 1043 | "code": "PSOTERISECURITY", 1044 | "extended": true, 1045 | "name": "Soteri Secret Scanner" 1046 | }, 1047 | "23765": { 1048 | "code": "PNFLUTTER", 1049 | "extended": true, 1050 | "name": "NFlutter" 1051 | }, 1052 | "23812": { 1053 | "code": "PJMETERPLUGINSM", 1054 | "extended": true, 1055 | "name": "JMeter Plugins Manager" 1056 | }, 1057 | "23813": { 1058 | "code": "PGITWORKTREE", 1059 | "extended": true, 1060 | "name": "Git Worktree" 1061 | }, 1062 | "23855": { 1063 | "code": "PJMETERRUNNER", 1064 | "extended": true, 1065 | "name": "JMeter Runner" 1066 | }, 1067 | "23859": { 1068 | "code": "PINTELLIPHP", 1069 | "extended": true, 1070 | "name": "IntelliPHP - AI Autocomplete for PHP" 1071 | }, 1072 | "23869": { 1073 | "code": "PPKXCODEGENERAT", 1074 | "extended": true, 1075 | "name": "PKXCodeGenerator" 1076 | }, 1077 | "23887": { 1078 | "code": "PCLAI", 1079 | "extended": true, 1080 | "name": "CLAi" 1081 | }, 1082 | "23927": { 1083 | "code": "PEXTRAIDETWEAKS", 1084 | "extended": true, 1085 | "name": "Extra IDE Tweaks" 1086 | }, 1087 | "23999": { 1088 | "code": "PMONGODB", 1089 | "extended": true, 1090 | "name": "Mongo DB" 1091 | }, 1092 | "24053": { 1093 | "code": "PPLUGDEVKITM", 1094 | "extended": true, 1095 | "name": "IDE Plug DevKit Maven" 1096 | }, 1097 | "24111": { 1098 | "code": "PMAVENSEARCHER", 1099 | "extended": true, 1100 | "name": "MavenSearcher" 1101 | }, 1102 | "7219": { 1103 | "code": "PSYMFONYPLUGIN", 1104 | "extended": true, 1105 | "name": "Symfony Support" 1106 | }, 1107 | "7232": { 1108 | "code": "PWLANG", 1109 | "extended": true, 1110 | "name": "Wolfram Language" 1111 | }, 1112 | "7410": { 1113 | "code": "PSWPLUGIN", 1114 | "extended": true, 1115 | "name": "Shopware" 1116 | }, 1117 | "7499": { 1118 | "code": "PGITTOOLBOX", 1119 | "extended": true, 1120 | "name": "GitToolBox" 1121 | }, 1122 | "7525": { 1123 | "code": "PHYBRISCOMMERCE", 1124 | "extended": true, 1125 | "name": "Hybris Integration" 1126 | }, 1127 | "8006": { 1128 | "code": "PMATERIALUI", 1129 | "extended": true, 1130 | "name": "Material Theme UI" 1131 | }, 1132 | "8286": { 1133 | "code": "PSEQUENCEDIAGRA", 1134 | "extended": true, 1135 | "name": "SequenceDiagram" 1136 | }, 1137 | "9238": { 1138 | "code": "PJETFORCER", 1139 | "extended": true, 1140 | "name": "JetForcer | The Smartest Force.com IDE" 1141 | }, 1142 | "9269": { 1143 | "code": "PAEMIDE", 1144 | "extended": true, 1145 | "name": "AEM IDE" 1146 | }, 1147 | "9564": { 1148 | "code": "PRNCONSOLE", 1149 | "extended": true, 1150 | "name": "React Native Console" 1151 | }, 1152 | "9707": { 1153 | "code": "PANSIHIGHLIGHT", 1154 | "extended": true, 1155 | "name": "ANSI Highlighter Premium" 1156 | }, 1157 | "9739": { 1158 | "code": "PYAOQIANGBPMN", 1159 | "extended": true, 1160 | "name": "Yaoqiang BPMN Editor" 1161 | }, 1162 | "9863": { 1163 | "code": "PAEM", 1164 | "extended": true, 1165 | "name": "AEM Support" 1166 | } 1167 | } -------------------------------------------------------------------------------- /src/crack/jetbrains/plugins.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | 4 | import grequests 5 | import requests 6 | 7 | # 过期时间 8 | EXPIRE_DATE = os.environ.get('EXPIRE_DATE', '9999-12-31') 9 | 10 | 11 | def search(name=None, show_code=False): 12 | # types = {'FREE', 'FREEMIUM', 'PAID'} 13 | types = {'FREEMIUM', 'PAID'} 14 | params = { 15 | 'offset': 0, 16 | 'max': 10000, 17 | 'pricingModels': types, 18 | } 19 | if name: 20 | params['search'] = name 21 | plugins = requests.get( 22 | 'https://plugins.jetbrains.com/api/searchPlugins', 23 | params=params 24 | ).json().get('plugins', []) 25 | if show_code: 26 | for plugin in plugins: 27 | yield str(plugin['id']), plugin['name'], plugin['pricingModel'], get_plugin_code(plugin['id']) 28 | else: 29 | for plugin in plugins: 30 | yield str(plugin['id']), plugin['name'] 31 | 32 | 33 | def get_plugin_code(plugin_id): 34 | plugin_info = requests.get(f'https://plugins.jetbrains.com/api/plugins/{plugin_id}').json() 35 | if plugin_info.get('purchaseInfo'): 36 | return plugin_info['purchaseInfo'].get('productCode') 37 | 38 | 39 | def get_plugin_codes(plugin_ids): 40 | reqs = [grequests.get(f'https://plugins.jetbrains.com/api/plugins/{plugin_id}') for plugin_id in plugin_ids] 41 | for rsp in grequests.imap(reqs): 42 | if rsp.status_code == 200: 43 | rsp_json = rsp.json() 44 | yield str(rsp_json['id']), rsp_json['purchaseInfo'].get('productCode') 45 | 46 | 47 | class JetBrainPlugin: 48 | def __init__(self): 49 | if os.path.isfile('plugins.json'): 50 | self.id_map = json.load(open('plugins.json', 'r')) 51 | else: 52 | self.id_map = dict() 53 | 54 | def update(self): 55 | remote_id_map = {i[0]: i[1] for i in search()} 56 | keys = remote_id_map.keys() - self.id_map.keys() 57 | for plugin_id, plugin_code in get_plugin_codes(keys): 58 | self.id_map[plugin_id] = { 59 | 'name': remote_id_map[plugin_id], 60 | 'code': plugin_code, 61 | 'extended': True, 62 | } 63 | self.dump() 64 | return self 65 | 66 | def make_licenses(self): 67 | license_data = json.load(open('licenses_base.json')) 68 | products_json = [] 69 | for product in self.id_map.values(): 70 | products_json.append({ 71 | 'code': product['code'], 72 | 'fallbackDate': EXPIRE_DATE, 73 | 'paidUpTo': EXPIRE_DATE, 74 | 'extended': product['extended'], 75 | }) 76 | for ide in license_data['products']: 77 | ide['fallbackDate'] = EXPIRE_DATE 78 | ide['paidUpTo'] = EXPIRE_DATE 79 | license_data['products'].extend(products_json) 80 | json.dump(license_data, open('licenses.json', 'w'), indent=2) 81 | return self 82 | 83 | def dump(self): 84 | json.dump(self.id_map, open('plugins.json', 'w'), indent=2, sort_keys=True) 85 | 86 | 87 | if __name__ == '__main__': 88 | obj = JetBrainPlugin() 89 | obj.update() 90 | obj.make_licenses() 91 | -------------------------------------------------------------------------------- /src/crack/jetbrains/server.py: -------------------------------------------------------------------------------- 1 | import base64 2 | import os 3 | import random 4 | import time 5 | from base64 import b64encode 6 | 7 | import uvicorn 8 | from crypto_plus import CryptoPlus 9 | from fastapi import Response, FastAPI 10 | from starlette.responses import PlainTextResponse 11 | 12 | from jetbrains import JetbrainsKeyGen 13 | from plugins import JetBrainPlugin 14 | 15 | server_uid = os.environ.get('NAME', 'crack') 16 | subject_name = f'{server_uid}.lsrv.jetbrains.com' 17 | server_uid_camel = server_uid.upper()[:1] + server_uid[1:] 18 | 19 | # 首次启动更新插件信息 20 | JetBrainPlugin().update().make_licenses() 21 | 22 | 23 | def ensure_key(): 24 | if not os.path.exists("ls.pem"): 25 | rsa2 = CryptoPlus.generate_rsa() 26 | rsa2.dump(key_path='ls.pem', pub_key_path='ls_pub.pem') 27 | rsa2.dump_cert(subject_name=subject_name, issuer_name='License Servers CA', cert_path='ls_cert.crt') 28 | else: 29 | rsa2 = CryptoPlus.load(key_path='ls.pem') 30 | ls_cert = CryptoPlus.load(key_path='ls_cert.crt') 31 | if f'CN={subject_name}' != ls_cert.key.subject.rfc4514_string(): 32 | rsa2.dump_cert(subject_name=subject_name, issuer_name='License Servers CA', cert_path='ls_cert.crt') 33 | 34 | if not os.path.isfile('key.pem'): 35 | rsa2 = CryptoPlus.generate_rsa() 36 | rsa2.dump() 37 | rsa2.dump_cert(subject_name=server_uid_camel, issuer_name='JetProfile CA') 38 | 39 | 40 | ensure_key() 41 | rsa1 = CryptoPlus.load('ls.pem') 42 | rsa2 = CryptoPlus.load() 43 | 44 | cert1 = "".join(open('ls_cert.crt').read().split(chr(10))[1:-2]) 45 | arg1 = int.from_bytes(CryptoPlus.loads(cert1).key.signature, 'big') 46 | mod1 = 657823416415964932845156435107145357714205418747915356734397055242964933221752404166614935255105249101653916721681603662754307632457128805443068644284748929421507178622933348669378235847742899773920765918770105482851534467296284105250512573151705220224379509383835022323282176179690146311979451556541118129344282127375534752754929526193258755897888515754328964698687671896985405008425332766082319260988023654359845072776189451448786758245414253386146246727354454047135428416624852422567360097346671648093064429279847823280592246506886401865455491924420415707803245018138595108029359998829520236522620749918729938206134739331246902031807601266419258080411903201595710155467901291142142443220333539750397923736434950558371997170985472272249812750161962720036837656464089126216749585148030883029438285184930024286517865710539947589764564204842426698322404033441531662829238875205420761652375337327297032255730262635511533223504109798364923988127319356119135982652788834405038113746394301957551167740345788175766290794604666781402329824924118191746319728033878045396093674696713022814027690165596773992550010915823534552020920573926469894452526033833249442230929742486602298477270672101197444729222659891038350303699501280729658274069437 47 | 48 | cert2 = "".join(open('cert.crt').read().split(chr(10))[1:-2]) 49 | arg2 = int.from_bytes(CryptoPlus.loads(cert2).key.signature, 'big') 50 | mod2 = 860106576952879101192782278876319243486072481962999610484027161162448933268423045647258145695082284265933019120714643752088997312766689988016808929265129401027490891810902278465065056686129972085119605237470899952751915070244375173428976413406363879128531449407795115913715863867259163957682164040613505040314747660800424242248055421184038777878268502955477482203711835548014501087778959157112423823275878824729132393281517778742463067583320091009916141454657614089600126948087954465055321987012989937065785013284988096504657892738536613208311013047138019418152103262155848541574327484510025594166239784429845180875774012229784878903603491426732347994359380330103328705981064044872334790365894924494923595382470094461546336020961505275530597716457288511366082299255537762891238136381924520749228412559219346777184174219999640906007205260040707839706131662149325151230558316068068139406816080119906833578907759960298749494098180107991752250725928647349597506532778539709852254478061194098069801549845163358315116260915270480057699929968468068015735162890213859113563672040630687357054902747438421559817252127187138838514773245413540030800888215961904267348727206110582505606182944023582459006406137831940959195566364811905585377246353 51 | 52 | patch = f'; license server\nEQUAL,{arg1},65537,{mod1}->{pow(arg1, 65537, rsa1.public_key.n)}\n; Jetbrains IDEs & Plugins Activation Code\nEQUAL,{arg2},65537,{mod2}->{pow(arg2, 65537, rsa2.public_key.n)}' 53 | 54 | 55 | class XMLResponse(Response): 56 | media_type = 'application/xml' 57 | 58 | 59 | app = FastAPI() 60 | 61 | 62 | @app.get('/rpc/ping.action') 63 | async def ping(salt, machineId): 64 | confirmation_stamp = f'{int(1000 * time.time())}:{machineId}' 65 | server_lease = f'4102415999000:{server_uid}' 66 | xml_content = f'''NONE{confirmation_stamp}:SHA1withRSA:{b64encode(rsa1.sign(confirmation_stamp.encode(), 'SHA1')).decode()}:{cert1}SHA512withRSA-{b64encode(rsa2.sign(server_lease.encode(), 'SHA512')).decode()}-{cert2}OK{salt}{server_lease}{server_uid}-1600000''' 67 | xml = f'\n{xml_content}' 68 | return XMLResponse(xml) 69 | 70 | 71 | @app.get('/rpc/obtainTicket.action') 72 | async def obtain_ticket(salt, machineId, userName): 73 | confirmation_stamp = f'{int(1000 * time.time())}:{machineId}' 74 | server_lease = f'4102415999000:{server_uid}' 75 | xml_content = f'''NONE{confirmation_stamp}:SHA1withRSA:{b64encode(rsa1.sign(confirmation_stamp.encode(), 'SHA1')).decode()}:{cert1}SHA512withRSA-{b64encode(rsa2.sign(server_lease.encode(), 'SHA512')).decode()}-{cert2}600000OK{salt}{server_lease}{server_uid}{random.randbytes(5).hex()}licensee={userName}\tlicenseType=4\tmetadata=0120211231PSAN000005-1600000''' 76 | xml = f'\n{xml_content}' 77 | return XMLResponse(xml) 78 | 79 | 80 | @app.get('/rpc/releaseTicket.action') 81 | async def release_ticket(salt="", machineId=""): 82 | confirmation_stamp = f'{int(1000 * time.time())}:{machineId}' 83 | server_lease = f'4102415999000:{server_uid}' 84 | xml_content = f'''NONE{confirmation_stamp}:SHA1withRSA:{b64encode(rsa1.sign(confirmation_stamp.encode(), 'SHA1')).decode()}:{cert1}SHA512withRSA-{b64encode(rsa2.sign(server_lease.encode(), 'SHA512')).decode()}-{cert2}OK{salt}{server_lease}{server_uid}-1600000''' 85 | xml = f'\n{xml_content}' 86 | print(xml) 87 | return XMLResponse(xml) 88 | 89 | 90 | @app.get('/') 91 | async def power(): 92 | return PlainTextResponse(patch) 93 | 94 | 95 | @app.get('/code') 96 | async def code(license_id=None, license_name=None): 97 | return PlainTextResponse(JetbrainsKeyGen().generate(license_id, license_name)) 98 | 99 | 100 | if __name__ == '__main__': 101 | uvicorn.run(app, host='0.0.0.0', port=5000) 102 | -------------------------------------------------------------------------------- /src/crack/xmind/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qy527145/crack/433badbeaa5a96457bd77699ef1af181c9923ef7/src/crack/xmind/__init__.py -------------------------------------------------------------------------------- /src/crack/xmind/crack/hook.js: -------------------------------------------------------------------------------- 1 | const http = require("http"); 2 | const url = require("url"); 3 | 4 | const hostname = "127.0.0.1"; 5 | const port = 3000; 6 | 7 | const server = http.createServer((req, res) => { 8 | const parsedUrl = url.parse(req.url, true); 9 | const path = parsedUrl.pathname; 10 | const method = req.method; 11 | 12 | res.setHeader("Content-Type", "application/json; charset=utf-8"); 13 | 14 | if (path === "/_res/session" && method === "GET") { 15 | res.statusCode = 200; 16 | res.end( 17 | JSON.stringify({ 18 | uid: "_xmind_1234567890", 19 | group_name: "", 20 | phone: "18888888888", 21 | group_logo: "", 22 | user: "_xmind_1234567890", 23 | cloud_site: "cn", 24 | expireDate: 4093057076000, 25 | emailhash: "1234567890", 26 | userid: 1234567890, 27 | if_cxm: 0, 28 | _code: 200, 29 | token: "1234567890", 30 | limit: 0, 31 | primary_email: "wmymz@icloud.com", 32 | fullname: "wmymz", 33 | type: null, 34 | }) 35 | ); 36 | } else if (path === "/_api/check_vana_trial" && method === "POST") { 37 | res.statusCode = 200; 38 | res.end(JSON.stringify({code: 200, _code: 200})); 39 | } else if (path === "/_res/get-vana-price" && method === "GET") { 40 | res.statusCode = 200; 41 | res.end( 42 | JSON.stringify({ 43 | products: [ 44 | {month: 6, price: {cny: 0, usd: 0}, type: "bundle"}, 45 | {month: 12, price: {cny: 0, usd: 0}, type: "bundle"}, 46 | ], 47 | code: 200, 48 | _code: 200, 49 | }) 50 | ); 51 | } else if (path === "/_api/events" && method === "GET") { 52 | res.statusCode = 200; 53 | res.end(JSON.stringify({code: 200, _code: 200})); 54 | } else if (path === "/_res/user_sub_status" && method === "GET") { 55 | res.statusCode = 200; 56 | res.end(JSON.stringify({_code: 200})); 57 | } else if (path === "/piwik.php" && method === "POST") { 58 | res.statusCode = 200; 59 | res.end(JSON.stringify({code: 200, _code: 200})); 60 | } else if (path.startsWith("/_res/token/") && method === "POST") { 61 | res.statusCode = 200; 62 | res.end( 63 | JSON.stringify({ 64 | uid: "_xmind_1234567890", 65 | group_name: "", 66 | phone: "18888888888", 67 | group_logo: "", 68 | user: "_xmind_1234567890", 69 | cloud_site: "cn", 70 | expireDate: 4093057076000, 71 | emailhash: "1234567890", 72 | userid: 1234567890, 73 | if_cxm: 0, 74 | _code: 200, 75 | token: "1234567890", 76 | limit: 0, 77 | primary_email: "wmymz@icloud.com", 78 | fullname: "wmymz", 79 | type: null, 80 | }) 81 | ); 82 | } else if (path === "/_res/devices" && method === "POST") { 83 | res.statusCode = 200; 84 | res.end( 85 | JSON.stringify({ 86 | raw_data: "{{license_data}}", 87 | license: { 88 | status: "sub", 89 | expireTime: 4093057076000, 90 | }, 91 | _code: 200, 92 | }) 93 | ); 94 | } else { 95 | res.statusCode = 404; 96 | res.end("Not Found"); 97 | } 98 | }); 99 | 100 | server.listen(port, hostname, () => { 101 | console.log(`Server running at http://${hostname}:${port}/`); 102 | }); 103 | 104 | require("./hook/crypto"); 105 | require("./hook/electron"); 106 | // require("./hook"); 107 | -------------------------------------------------------------------------------- /src/crack/xmind/crack/hook/crypto.js: -------------------------------------------------------------------------------- 1 | const crypto = require("crypto"); 2 | 3 | // 保存原始的 publicDecrypt 函数 4 | const originalPublicDecrypt = crypto.publicDecrypt; 5 | /** 6 | * 官方公钥解密 7 | * @param {string} message 密文 8 | * @returns 9 | */ 10 | const originalPublicDecryptEx = function (message) { 11 | let key = `{{old_public_key}}`; 12 | const n = originalPublicDecrypt( 13 | { 14 | key: key, 15 | padding: 1, 16 | }, 17 | message 18 | ); 19 | return n; 20 | }; 21 | 22 | // 将 publicDecrypt 函数定义为 getter 方法,返回新的实现 23 | Object.defineProperty(crypto, "publicDecrypt", { 24 | get() { 25 | return function myPublicDecrypt(...args) { 26 | console.trace("myPublicDecrypt 调用栈"); 27 | console.log("秋城落叶Hook Xmind开始"); 28 | 29 | args[0]["key"] = "{{new_public_key}}"; 30 | let result; 31 | try { 32 | result = originalPublicDecrypt.call(this, ...args); 33 | let data = JSON.parse(result.toString()); 34 | // data.status = "sub"; 35 | // data.expireTime = 4093057076000; 36 | result = Buffer.from(JSON.stringify(data)); 37 | crypto.log("用自己的密钥解密成功,开始走我的密钥解密流程。", data); 38 | } catch (e) { 39 | crypto.log("解密出错,开始走官方密钥解密流程。"); 40 | result = null; 41 | let ori = originalPublicDecryptEx(args[1]); 42 | crypto.log( 43 | "解密出错", 44 | args[1].toString("base64"), 45 | "\n官方密钥解密结果", 46 | ori, 47 | "\n错误细节\n", 48 | e 49 | ); 50 | result = ori; 51 | } 52 | 53 | // 调用原始的 publicDecrypt 函数 54 | return result; 55 | }; 56 | }, 57 | }); 58 | 59 | Object.defineProperty(crypto, "log", { 60 | get() { 61 | return function log(...args) { 62 | console.log(...args); 63 | }; 64 | }, 65 | }); 66 | 67 | module.exports = crypto; 68 | -------------------------------------------------------------------------------- /src/crack/xmind/crack/hook/electron.js: -------------------------------------------------------------------------------- 1 | const electron = require("electron"); 2 | 3 | // 获取原始的 net 模块 4 | const originalNet = electron.net; 5 | 6 | // 保存原始的 request 函数 7 | const originalRequest = originalNet.request; 8 | 9 | // 修改 request 函数 10 | Object.defineProperty(originalNet, "request", { 11 | get() { 12 | return function (options, callback) { 13 | let url = options["url"]; 14 | // options.headers["Authorization"] = "Bearer YOUR_TOKEN"; 15 | if (url.indexOf("/_api/share/vana_map/?lang=zh") > -1 || 16 | url.indexOf("/_api/share/maps") > -1 //修复在线图库 17 | ) { 18 | } else url = url.replace("https://www.xmind.cn", "http://127.0.0.1:3000"); 19 | options["url"] = url; 20 | // console.error( 21 | // "===== Intercepting net.request with options:", 22 | // options, 23 | // callback 24 | // ); 25 | const req = originalRequest(options, callback); 26 | 27 | // 注册 response 事件监听器 28 | req.on("response", (response) => { 29 | let data = ""; 30 | response.on( 31 | "data", 32 | function (chunk) { 33 | data += chunk; 34 | chunk = "FUCKING data"; 35 | this.emit("continue", chunk); 36 | }.bind(response) 37 | ); 38 | response.on( 39 | "end", 40 | function () { 41 | // 将数据添加到缓存 42 | // cache[options.url] = data; 43 | console.log( 44 | "===== Intercepting net.request with options:", 45 | options, 46 | "Response ----- ", 47 | data 48 | ); 49 | this.emit("continue"); 50 | }.bind(response) 51 | ); 52 | }); 53 | return req; 54 | }; 55 | return function (options, ...args) { 56 | // 对 options 进行修改或者添加自己的逻辑 57 | console.error("===== Intercepting net.request with options:", options); 58 | 59 | // { url: 'https://www.xmind.cn/_res/user_sub_status', method: 'GET' } 60 | // { url: 'https://www.xmind.cn/_res/devices', method: 'POST' } 61 | 62 | // 调用原始的 request 函数 63 | return originalRequest.call(this, options, ...args); 64 | }; 65 | }, 66 | }); 67 | 68 | module.exports = electron; 69 | -------------------------------------------------------------------------------- /src/crack/xmind/old.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCDYH31l0llicBavbUZRg0y1LnI 3 | 2JJuPZak0498wGmK0N+ksqCzA0XUfCgQ5E9itYyPuT+z6Pz/+0q6NeApkWcnC/Th 4 | WQY6ZlEOMonrhPub8zsWYOZzckQutx3jn6k+6ZXx7yUbbkxIk+wqWgnlQxnx6TMd 5 | S3rgo3r4blFTWi6EEQIDAQAB 6 | -----END PUBLIC KEY----- -------------------------------------------------------------------------------- /src/crack/xmind/xmind.py: -------------------------------------------------------------------------------- 1 | import os 2 | import pathlib 3 | import shutil 4 | from base64 import b64encode 5 | 6 | from asarPy import extract_asar, pack_asar 7 | from crypto_plus import CryptoPlus 8 | 9 | from crack.base import KeyGen 10 | 11 | 12 | class XmindKeyGen(KeyGen): 13 | 14 | def __init__(self): 15 | if os.path.isfile('key.pem'): 16 | rsa = CryptoPlus.load('key.pem') 17 | else: 18 | rsa = CryptoPlus.generate_rsa(1024) 19 | rsa.dump("key.pem", "new_public_key.pem") 20 | self.crypto_plus = rsa 21 | 22 | tmp_path = os.environ['TMP'] 23 | asar_path = pathlib.Path(tmp_path).parent.joinpath(r'Programs\Xmind\resources') 24 | self.asar_file = asar_path.joinpath('app.asar') 25 | self.asar_file_bak = asar_path.joinpath('app.asar.bak') 26 | self.crack_asar_dir = asar_path.joinpath('ext') 27 | self.main_dir = self.crack_asar_dir.joinpath("main") 28 | self.renderer_dir = self.crack_asar_dir.joinpath("renderer") 29 | self.license_data = None 30 | self.old_public_key = open('old.pem').read() 31 | 32 | def generate(self): 33 | license_info = '{"status": "sub", "expireTime": 4093057076000, "ss": "", "deviceId": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"}' 34 | self.license_data = b64encode(self.crypto_plus.encrypt_by_private_key(license_info.encode())) 35 | return self.license_data 36 | 37 | def parse(self, licenses): 38 | return self.crypto_plus.decrypt_by_public_key(b64encode(licenses)) 39 | 40 | def patch(self): 41 | # 解包 42 | extract_asar(str(self.asar_file), str(self.crack_asar_dir)) 43 | shutil.copytree('crack', self.main_dir, dirs_exist_ok=True) 44 | # 注入 45 | with open(self.main_dir.joinpath('main.js'), 'rb') as f: 46 | lines = f.readlines() 47 | lines[5] = b'require("./hook")\n' 48 | with open(self.main_dir.joinpath('main.js'), 'wb') as f: 49 | f.writelines(lines) 50 | # 替换密钥 51 | old_key = f"String.fromCharCode({','.join([str(i) for i in self.old_public_key.encode()])})".encode() 52 | new_key = f"String.fromCharCode({','.join([str(i) for i in self.crypto_plus.public_key.export_key()])})".encode() 53 | for js_file in self.renderer_dir.rglob("*.js"): 54 | with open(js_file, 'rb') as f: 55 | byte_str = f.read() 56 | index = byte_str.find(old_key) 57 | if index != -1: 58 | byte_str.replace(old_key, new_key) 59 | with open(js_file, 'wb') as _f: 60 | _f.write(byte_str.replace(old_key, new_key)) 61 | print(js_file) 62 | break 63 | # 占位符填充 64 | with open(self.main_dir.joinpath('hook.js'), 'r', encoding='u8') as f: 65 | content = f.read() 66 | content = content.replace("{{license_data}}", self.license_data.decode()) 67 | with open(self.main_dir.joinpath('hook.js'), 'w', encoding='u8') as f: 68 | f.write(content) 69 | with open(self.main_dir.joinpath('hook').joinpath('crypto.js'), 'r', encoding='u8') as f: 70 | content = f.read() 71 | content = content.replace("{{old_public_key}}", self.old_public_key.replace("\n", "\\n")) 72 | content = content.replace("{{new_public_key}}", 73 | self.crypto_plus.public_key.export_key().decode().replace("\n", "\\n")) 74 | with open(self.main_dir.joinpath('hook').joinpath('crypto.js'), 'w', encoding='u8') as f: 75 | f.write(content) 76 | # 封包 77 | os.remove(self.asar_file) 78 | pack_asar(self.crack_asar_dir, self.asar_file) 79 | shutil.rmtree(self.crack_asar_dir) 80 | 81 | 82 | if __name__ == '__main__': 83 | XmindKeyGen().run() 84 | --------------------------------------------------------------------------------