|
@@ -0,0 +1,61 @@
|
|
|
+#coding=utf-8
|
|
|
+import Crypto.Hash
|
|
|
+import Crypto.PublicKey.RSA
|
|
|
+import Crypto.Signature.PKCS1_v1_5
|
|
|
+
|
|
|
+import uuid
|
|
|
+import platform
|
|
|
+import base64
|
|
|
+import hashlib
|
|
|
+
|
|
|
+import ks.licence as licence
|
|
|
+
|
|
|
+XorKey = [0xB2, 0x09, 0xBB, 0x55, 0x93, 0x83, 0x03, 0x24]
|
|
|
+
|
|
|
+def enc(src):
|
|
|
+ j, result = 0, ""
|
|
|
+ for s in src:
|
|
|
+ result = result + hex(ord(s) ^ (XorKey[j]))[2:]
|
|
|
+ j = (j + 1) % 8
|
|
|
+ return result
|
|
|
+
|
|
|
+def getMac():
|
|
|
+ sysstr = platform.system()
|
|
|
+ if (sysstr == "Windows"):
|
|
|
+ import winreg
|
|
|
+ key = winreg.OpenKey(
|
|
|
+ winreg.HKEY_LOCAL_MACHINE,
|
|
|
+ "SOFTWARE\\Microsoft\\Cryptography",
|
|
|
+ 0,
|
|
|
+ winreg.KEY_READ | winreg.KEY_WOW64_64KEY
|
|
|
+ )
|
|
|
+ result = winreg.QueryValueEx(key, "MachineGuid")
|
|
|
+ mac = result[0]
|
|
|
+ else:
|
|
|
+ mac = ':'.join(['{:02x}'.format((uuid.getnode() >> i) & 0xff) for i in range(0, 8 * 6, 8)][::-1])
|
|
|
+
|
|
|
+ path = '/auth/kaohe/v2/'
|
|
|
+ mac += 'ZZLY[' + path + ']20190325'
|
|
|
+ mac = enc(mac)
|
|
|
+ mac = base64.b64encode(mac.encode())
|
|
|
+ mac = hashlib.sha256(mac).hexdigest()
|
|
|
+ return mac
|
|
|
+
|
|
|
+def checkLicence():
|
|
|
+ pub_key = """-----BEGIN RSA PUBLIC KEY-----
|
|
|
+ MIGJAoGBAMhqydgWZUV7qy96aGTY6i/pGC5mC8AyjvwIwoH2zE6hi5MQsW5cpOLS
|
|
|
+ d2VNhfi2ypg19w3Z2sd248X/fc4lGwDwP8/fXNoRtVBDR/3F/+WlaK9beFIyp5J4
|
|
|
+ Fa2XHj5lOiCjLoJpzehE2Dguv+3xORJn10oGAHQhXxFjdWEt5xBBAgMBAAE=
|
|
|
+ -----END RSA PUBLIC KEY-----"""
|
|
|
+
|
|
|
+ mac = getMac()
|
|
|
+
|
|
|
+ d_rsa = Crypto.PublicKey.RSA.importKey(pub_key)
|
|
|
+ verifer = Crypto.Signature.PKCS1_v1_5.new(d_rsa)
|
|
|
+ msg_hash = Crypto.Hash.SHA256.new()
|
|
|
+ msg_hash.update(mac.encode('utf-8'))
|
|
|
+ return verifer.verify(msg_hash, base64.decodebytes(licence.licence.encode('utf-8')))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|