本帖最后由 A-new 于 2025-10-10 16:56 编辑
下载
度盘[HTML] 纯文本查看 复制代码 https://pan.baidu.com/s/1d6ItvD4rETnBq9XBmZ_BHw?pwd=ikun
一大佬的网盘[HTML] 纯文本查看 复制代码 https://od.cloudsploit.top/zh-CN/tools/BinaryNinja/5.1.8005
5.1.8104[HTML] 纯文本查看 复制代码 https://od.cloudsploit.top/zh-CN/tools/BinaryNinja/5.1.8104
patch
5.1.8104可用[Python] 纯文本查看 复制代码
import base64
import hashlib
import json
import random
from Crypto.Cipher import ARC4
from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
from Crypto.Util.number import long_to_bytes,bytes_to_long
from Crypto.Hash import SHA256
from datetime import datetime, timezone
def get_time_str():
# 获取当前 UTC 时间并格式化为 ISO 字符串
utc_now = datetime.now(timezone.utc)
iso_str = utc_now.isoformat(timespec='milliseconds') # 保留毫秒精度
# print(iso_str) # 输出类似:2025-07-04T19:59:19.123+00:00
return iso_str
def gen_licdata():
randdata=random.randbytes(0x100)
k=hashlib.md5(randdata).digest()
rc4=ARC4.new(key=k)
#从 AMPED Keygen 中拷贝,可能与更新相关
# (nj后面将9C2AAA09A4E2252B0BA125DB1E1CD272207D97CCA8446899 设置为key(key长度0x18)解密byte_18A03F4D0[0x452])
rc4data=bytes.fromhex('9C2AAA09A4E2252B0BA125DB1E1CD272207D97CCA8446899')
encdta=rc4.encrypt(rc4data)
# print('rc4enc:',encdta.hex())
ret=base64.standard_b64encode(randdata+encdta)
# print('data:',ret)
return ret
def gen_signature(msg,pri_data=bytes.fromhex('''308204A30201000282010100D2BF8069B298618B54272B13CE402C37826D906FA0DB47C916E304D61CFE847306AD1763A332A6FACBEF133DE5E634B333739EFFFE9F7513F7C38CDF4EB7CE27B56B728424F9410DB4CD3AB33D2A367123470D62324211876D83C15B59FB7A4D5A74E56F9E443DBEFF30289D3E4F84E58E6AB23AD4F43870034605E68EDF1FF90256AA027C6102981B8A7742C3DCFC536A4D98C4E22702F2BFFDE2985E232A2446D5750E20EDD27E59FA2475CFF2882CA33347209F62DED6965D85B03BDE6E02B99F680F33B7DC08F8730C0BCE62256FCA5613213A1182C00A36A9D496629D15C1B604550F97388C2DFD60CC8DC15CF5D61A829167CE07F9798168C92D6037470203010001028201005BC7FDC74A79D58565C5571BDD87921A2CA9C5ACEFCB7FD4622CC536F052A1E12C67A6978483F337A727FBE3C9A33B914D978D87E45E9290FB26C54B9D4F2C2F9BF16AE284EDAE78A72477EB867843547B6E1EB484B9C4438C1CC4D1217B855479D00DF9D1DDDB5C3A6BC14C55CE30CCFE7C96194C13FE1E3E36B92C234DA5F0B362663B5B353949FF83F3987080A20326CC8A4FC5E51FF5A91026BB72F1BF4EAA5EB893892E2AC6FEB828EC2D093F992589D7EDEE5DA8EA94C6F8EA61E1FF1D3686EE2B97859E0123CF438F457C97860C04263380EE82C84DB0CADCE121C93F5AD1EB0A802C7ABFF14B4265805CAC6C37F4BF4E17B034E29F3DE64EA98450CD02818100FFDC7E6D1275D1956316116CD79CD5A44F76A6284DD3C35E5A607C1C612D454BFB94DFF5EE63DDB695C8E3A9E398D188A25100959C632DBD3A23FC31F975484D1531151AA7CD6711C960018E366F1507FEB787757464F7E2F05AD097DAD9C8D34BAB3BD584948C7DABD750B3F9B651C3FCDE7133232CA2228F7880410A7FC89502818100D2DCBF521CC7FC91AE554A7ADE811CA07356C50227EC07A4DB06A2B681E29CA8F4D54A7D40D7DFAA38A1B6F03D9E4ACFBEF7C7AC45A6496C94BFD8FA0FB1C2528097AAACFDD0FAA5C9CD42A010018CB04A488A6437B5F4328B30D2FBE9290AA3C9937DD1DB92DFAE4431FC690B7EF879FFDDBAD9D3784A5869C6D8039B249D6B028181009A9EF0540FE4DD7C2EBE2657A5512516BFE2CEF4EA5B7FE4642F8CB145D4AADD093365C8E480BB7ADCB7E34546C29255C4E9B8B5B1258A7DA1461FE13F84ADE5CF59B30C41BDF27CA03A819624B52A7B8365FBD97236964B31BF5FF1751349B6CF32B2DD0CDB0CAFE18A243E2F390BDEA9D0EF8DDCC2DB5491695BF0725CD8A50281802101306917DC2DAA57D13DD131969FF67557358AFAD8B4F196DED9051C1B6E4DFBD48ECE402209FE48D2F7216F63A16E17040D9AE763F9C6271A484A0BBED51DB8C7048E03447C970A99383E7982E4948B6C034D6072F88018CD5198E08BEE006902CF04D40B8F3B65AD3546F3E7B1D8D6B5CC13604849CAC0F3C0C7FFB6A175028180616C870F1920FD24DEBE793A273591CB3E858962A9A93022AF36FB15CEF57F3C3EE101F1A8AF206DF757EC7A7EBD99D7E1C5B18870EB8B66E78F3FA005E4431D71B25F350103C2E68BC4474DF3BDAC57F8D9327304C65E5069DDB25C178615D1A3B264B22B8826E33D21F4CD50433FD6210ED5699741FB219E75F6DD8F5DB714''')):
if isinstance(msg,str):
msg=msg.encode()
prik=RSA.import_key(pri_data)
# print('kg d:',prik.d)
# print('kg n:',prik.n)
# print('kg e:',prik.e)
sig=pkcs1_15.new(prik)
signature=sig.sign(SHA256.new(msg))
ret=base64.standard_b64encode(signature)
return ret
def kg(count:int,email:str,serial_hexstr:str=random.randbytes(0x10).hex()):
lic={}
lic["product"]= "Binary Ninja Personal"
lic["email"]= email
lic["serial"]= serial_hexstr
lic["created"]=get_time_str()
lic["type"]= "User"
lic["count"]=count
lic["data"]=gen_licdata().decode()
msg='\x00'.join((lic["product"],lic["email"],lic["serial"],lic["created"],lic["type"],str(lic["count"]),lic["data"]))
lic["signature"]= gen_signature(msg).decode()
s=json.dumps(lic,indent=0)
lic_text='[\n%s\n]'%s
return lic_text
def nj_xor(data:bytes,xor_key=bytes([0x44,0x72,0xf9,0x67])):
result=[]
for i, byte_val in enumerate(data):
xor_byte = xor_key[i % 4]
processed_byte = byte_val ^ xor_byte
result.append(processed_byte)
return bytes(result)
def print_rsakey_info():
#公私密钥拷贝自 AMPED Keygen
pri_data=bytes.fromhex('''308204A30201000282010100D2BF8069B298618B54272B13CE402C37826D906FA0DB47C916E304D61CFE847306AD1763A332A6FACBEF133DE5E634B333739EFFFE9F7513F7C38CDF4EB7CE27B56B728424F9410DB4CD3AB33D2A367123470D62324211876D83C15B59FB7A4D5A74E56F9E443DBEFF30289D3E4F84E58E6AB23AD4F43870034605E68EDF1FF90256AA027C6102981B8A7742C3DCFC536A4D98C4E22702F2BFFDE2985E232A2446D5750E20EDD27E59FA2475CFF2882CA33347209F62DED6965D85B03BDE6E02B99F680F33B7DC08F8730C0BCE62256FCA5613213A1182C00A36A9D496629D15C1B604550F97388C2DFD60CC8DC15CF5D61A829167CE07F9798168C92D6037470203010001028201005BC7FDC74A79D58565C5571BDD87921A2CA9C5ACEFCB7FD4622CC536F052A1E12C67A6978483F337A727FBE3C9A33B914D978D87E45E9290FB26C54B9D4F2C2F9BF16AE284EDAE78A72477EB867843547B6E1EB484B9C4438C1CC4D1217B855479D00DF9D1DDDB5C3A6BC14C55CE30CCFE7C96194C13FE1E3E36B92C234DA5F0B362663B5B353949FF83F3987080A20326CC8A4FC5E51FF5A91026BB72F1BF4EAA5EB893892E2AC6FEB828EC2D093F992589D7EDEE5DA8EA94C6F8EA61E1FF1D3686EE2B97859E0123CF438F457C97860C04263380EE82C84DB0CADCE121C93F5AD1EB0A802C7ABFF14B4265805CAC6C37F4BF4E17B034E29F3DE64EA98450CD02818100FFDC7E6D1275D1956316116CD79CD5A44F76A6284DD3C35E5A607C1C612D454BFB94DFF5EE63DDB695C8E3A9E398D188A25100959C632DBD3A23FC31F975484D1531151AA7CD6711C960018E366F1507FEB787757464F7E2F05AD097DAD9C8D34BAB3BD584948C7DABD750B3F9B651C3FCDE7133232CA2228F7880410A7FC89502818100D2DCBF521CC7FC91AE554A7ADE811CA07356C50227EC07A4DB06A2B681E29CA8F4D54A7D40D7DFAA38A1B6F03D9E4ACFBEF7C7AC45A6496C94BFD8FA0FB1C2528097AAACFDD0FAA5C9CD42A010018CB04A488A6437B5F4328B30D2FBE9290AA3C9937DD1DB92DFAE4431FC690B7EF879FFDDBAD9D3784A5869C6D8039B249D6B028181009A9EF0540FE4DD7C2EBE2657A5512516BFE2CEF4EA5B7FE4642F8CB145D4AADD093365C8E480BB7ADCB7E34546C29255C4E9B8B5B1258A7DA1461FE13F84ADE5CF59B30C41BDF27CA03A819624B52A7B8365FBD97236964B31BF5FF1751349B6CF32B2DD0CDB0CAFE18A243E2F390BDEA9D0EF8DDCC2DB5491695BF0725CD8A50281802101306917DC2DAA57D13DD131969FF67557358AFAD8B4F196DED9051C1B6E4DFBD48ECE402209FE48D2F7216F63A16E17040D9AE763F9C6271A484A0BBED51DB8C7048E03447C970A99383E7982E4948B6C034D6072F88018CD5198E08BEE006902CF04D40B8F3B65AD3546F3E7B1D8D6B5CC13604849CAC0F3C0C7FFB6A175028180616C870F1920FD24DEBE793A273591CB3E858962A9A93022AF36FB15CEF57F3C3EE101F1A8AF206DF757EC7A7EBD99D7E1C5B18870EB8B66E78F3FA005E4431D71B25F350103C2E68BC4474DF3BDAC57F8D9327304C65E5069DDB25C178615D1A3B264B22B8826E33D21F4CD50433FD6210ED5699741FB219E75F6DD8F5DB714''')
pub_data=bytes.fromhex('''30820122300D06092A864886F70D01010105000382010F003082010A0282010100D2BF8069B298618B54272B13CE402C37826D906FA0DB47C916E304D61CFE847306AD1763A332A6FACBEF133DE5E634B333739EFFFE9F7513F7C38CDF4EB7CE27B56B728424F9410DB4CD3AB33D2A367123470D62324211876D83C15B59FB7A4D5A74E56F9E443DBEFF30289D3E4F84E58E6AB23AD4F43870034605E68EDF1FF90256AA027C6102981B8A7742C3DCFC536A4D98C4E22702F2BFFDE2985E232A2446D5750E20EDD27E59FA2475CFF2882CA33347209F62DED6965D85B03BDE6E02B99F680F33B7DC08F8730C0BCE62256FCA5613213A1182C00A36A9D496629D15C1B604550F97388C2DFD60CC8DC15CF5D61A829167CE07F9798168C92D6037470203010001''')
# nj_pubkeydata=bytes.fromhex('''30820122300D06092A864886F70D01010105000382010F003082010A0282010100D66C9EC8DC86F3DB68B2B8BF660551630527F4EC31193B69743EE1E650ABB1A2276361B00383F23D66680A681EB3B8DC4A7F9151E732F6D4B76963D1122A8F5899736BDE7B911C9F2A55E42DAA8566CBAD43BE681B2F381549C342FC19F1F593D24454741D17ADF221F633A5AC4DE85EF6023628F8F9368C616B1949D702C4195D411DD51A2F1B8459832299035EEF68BE1EE37D92A4DF758F5892C8AAF635A406A7AD4F9EBF03EB0E44DA485BBBF0983DF83920420AE824F4DA3CC9D1699535635F7151B279D27144B8A29A65B6E28CCBAFFDDBAB3FDE84CBF0E1FF4E28AB65197EC9FD027DCD7AF52880BF143275782F0782C3043B470204B63C40FC7BAF330203010001''')
# xor key 0x67F97244
nj_pubkey_xordata=bytes.fromhex('''74f0f845747fff6e6ef4b1e1b37ff8664577f964c673f66774f0f86d46f0f86644a495f98cae7f949f1a4bdffb14fc362777de93a843e05c2d06c786a22252d6e6559a06f4717a957914916d2c6c4adf983886f61595cb9190c590049560d3e81ceb8a0c9a09687bdb58ac8369d87c018fdfbad92c69d65f513b3a25b86b0892d7a0bd33306feecab6530f54e1deb48f1a84fb516c8a0051c813927e0da5fba35d2fb87a9168d67cc02b7a45dd71a7882ccce78439e05db831fda1f58cd80f52e0745eca0bec4664af7cbdbd0c294297dc4f015e6430f38f6086235b8da390f27111a61615c080b5353641c5de174f85c8b9569a9fd9c6b9c0b90986bb3cd1cc216b87aeb97084aa3e87d1e7fb66cb123c5dfee58776c22046764f5b048e82c87770fa664473f967''')
nj_pubkeydata=nj_xor(nj_pubkey_xordata)[:0x126]
nj_pubk=RSA.import_key(nj_pubkeydata)
print('nj e:',nj_pubk.e)
print('nj n:',nj_pubk.n)
print('\n\n')
pub_key=RSA.import_key(pub_data)
print('kg e:',pub_key.e)
print('kg n:',pub_key.n)
print('\n\n')
prik=RSA.import_key(pri_data)
print('kg d:',prik.d)
print('kg n:',prik.n)
print('kg e:',prik.e)
pass
if __name__=='__main__':
#print_rsakey_info()
lic_path='license.dat'
save=True
count=123
email="ikun@ikunkun.com"
text=kg(count,email)
print('lic==>')
print(text)
if save:
with open(lic_path,'w',encoding='utf8') as f:
f.write(text)
|