Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions keyauth.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
-----BEGIN CERTIFICATE-----
MIIFHDCCBASgAwIBAgISA6Cc2hQbLVejbK3qRKkFktKjMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMTA2MjMyMDA0MjZaFw0yMTA5MjEyMDA0MjVaMBYxFDASBgNVBAMT
C2tleWF1dGguY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgr1P
ZxHHGrhxbcZ+uMSLBTXpENSdb18SXTemiuCQf6EI/0+XW5y1gDZTnDu9F3kS3OEB
2HHWDdOluEF26JtF+ZH+eVL6bcOcjww4eY+TEqxSMJPR+T7+FtxyEhhKxRbpg9zZ
mNqlQyESBhccKHlahaB5gJ82TMmRUYt6MfcbFmtnY5idm2oxe248Pz0BvVFu92tf
6ll478QiybhwhngAwW8gQTfIoKgR0FjMZX436m3YTmip9z4tUtCO/k50OoXCes+r
LrvWh5dSmxe3TJAz0BnhOD48000QiDQqZxSClXBKcZJQKlKZUDUQtvB5eNHUKohN
4vgwpvw5MTbp8MJF1QIDAQABo4ICRjCCAkIwDgYDVR0PAQH/BAQDAgWgMB0GA1Ud
JQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQW
BBRilFRW9CxdwG/182VFx+XGt9wL6DAfBgNVHSMEGDAWgBQULrMXt1hWy65QCUDm
H6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9yMy5v
LmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3JnLzAW
BgNVHREEDzANggtrZXlhdXRoLmNvbTBMBgNVHSAERTBDMAgGBmeBDAECATA3Bgsr
BgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNyeXB0
Lm9yZzCCAQQGCisGAQQB1nkCBAIEgfUEgfIA8AB2AJQgvB6O1Y1siHMfgosiLA3R
2k1ebE+UPWHbTi9YTaLCAAABejqwPisAAAQDAEcwRQIgOi3cALil+YKWkvMb3ZRv
bGH2r1a4r4zLvHZ2ZtVDeukCIQCAyU74LERWJ27prRhRu+DLMIumpJSFyWb1u3lY
NpC59gB2AH0+8viP/4hVaCTCwMqeUol5K8UOeAl/LmqXaJl+IvDXAAABejqwPmAA
AAQDAEcwRQIgQcPuLyUAVo/56kIXmTlinY13tfjc7l6F4kVdOsky9EkCIQDrp/bR
7uVb1vd3pAsKAaUb2LCmy79ZTKeQSEnkWDKfhTANBgkqhkiG9w0BAQsFAAOCAQEA
j8QXBFw5yWDSpyBzUHymTrU4bqZEE4wrZjg9AXc5XPhaBVYtnMqUKTQL72FvD8+E
w6pWatYDc2JA24OzJ7i0cy+J8rzhnGApJNRxmK29M04TgzUv2rDsyyj6yIXiEKVA
+zQd45igH6FqBgmB+NQrfVdXw8sxQYFV652C7sPi1y+7D2L3RzvepdD+24qHy1Tn
Yj63zC1+XntzJg9lpYUAh4nWpj078UCYEz4RodW4pGUFKNdmt0UaG8c/k+x0BnO0
0lpTPRhHmtiMCfqsiCzHdbec2gB+EnWWEf3l9zo0qgDy9fuUUnDY7vG8S6zVSmVK
ivyPIGEnDTR5Myfjw3wuBA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEZTCCA02gAwIBAgIQQAF1BIMUpMghjISpDBbN3zANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTIwMTAwNzE5MjE0MFoXDTIxMDkyOTE5MjE0MFow
MjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxCzAJBgNVBAMT
AlIzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuwIVKMz2oJTTDxLs
jVWSw/iC8ZmmekKIp10mqrUrucVMsa+Oa/l1yKPXD0eUFFU1V4yeqKI5GfWCPEKp
Tm71O8Mu243AsFzzWTjn7c9p8FoLG77AlCQlh/o3cbMT5xys4Zvv2+Q7RVJFlqnB
U840yFLuta7tj95gcOKlVKu2bQ6XpUA0ayvTvGbrZjR8+muLj1cpmfgwF126cm/7
gcWt0oZYPRfH5wm78Sv3htzB2nFd1EbjzK0lwYi8YGd1ZrPxGPeiXOZT/zqItkel
/xMY6pgJdz+dU/nPAeX1pnAXFK9jpP+Zs5Od3FOnBv5IhR2haa4ldbsTzFID9e1R
oYvbFQIDAQABo4IBaDCCAWQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8E
BAMCAYYwSwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5p
ZGVudHJ1c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTE
p7Gkeyxx+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEE
AYLfEwEBATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2Vu
Y3J5cHQub3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0
LmNvbS9EU1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYf
r52LFMLGMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0B
AQsFAAOCAQEA2UzgyfWEiDcx27sT4rP8i2tiEmxYt0l+PAK3qB8oYevO4C5z70kH
ejWEHx2taPDY/laBL21/WKZuNTYQHHPD5b1tXgHXbnL7KqC401dk5VvCadTQsvd8
S8MXjohyc9z9/G2948kLjmE6Flh9dDYrVYA9x2O+hEPGOaEOa1eePynBgPayvUfL
qjBstzLhWVQLGAkXXmNs+5ZnPBxzDJOLxhF2JIbeQAcH5H0tZrUlo5ZYyOqA7s9p
O5b85o3AM/OJ+CktFBQtfvBhcJVd9wvlwPsk+uyOy2HI7mNxKKgsBTt375teA2Tw
UdHkhVNcsAKX1H7GNNLOEADksd86wuoXvg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----
58 changes: 34 additions & 24 deletions keyauth.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import json as jsond # json

import time # sleep before exit
import time # sleep before exit

import binascii # hex encoding

Expand All @@ -13,7 +13,13 @@
from Crypto.Util.Padding import pad, unpad
# aes + padding, sha256

import webbrowser, platform, subprocess, datetime, datetime, sys, os
import webbrowser
import platform
import subprocess
import datetime
import datetime
import sys
import os

from requests_toolbelt.adapters.fingerprint import FingerprintAdapter

Expand All @@ -27,7 +33,7 @@ def __init__(self, name, ownerid, secret, version):
self.ownerid = ownerid

self.secret = secret

self.version = version

sessionid = enckey = ""
Expand Down Expand Up @@ -62,10 +68,11 @@ def init(self):
sys.exit()

self.sessionid = json["sessionid"]

def register(self, user, password, license, hwid=None):
if hwid is None: hwid = others.get_hwid()

if hwid is None:
hwid = others.get_hwid()

init_iv = SHA256.new(str(uuid4())[:8].encode()).hexdigest()

post_data = {
Expand All @@ -91,16 +98,16 @@ def register(self, user, password, license, hwid=None):
else:
print(json["message"])
sys.exit()

def upgrade(self, user, license):

init_iv = SHA256.new(str(uuid4())[:8].encode()).hexdigest()

post_data = {
"type": binascii.hexlify(("upgrade").encode()),
"username": encryption.encrypt(user, self.enckey, init_iv),
"key": encryption.encrypt(license, self.enckey, init_iv),
"sessionid": binascii.hexlify(self.sessionid.encode()),
"sessionid": binascii.hexlify(self.sessionid.encode()),
"name": binascii.hexlify(self.name.encode()),
"ownerid": binascii.hexlify(self.ownerid.encode()),
"init_iv": init_iv
Expand All @@ -117,18 +124,19 @@ def upgrade(self, user, license):
else:
print(json["message"])
sys.exit()

def login(self, user, password, hwid=None):
if hwid is None: hwid = others.get_hwid()

if hwid is None:
hwid = others.get_hwid()

init_iv = SHA256.new(str(uuid4())[:8].encode()).hexdigest()

post_data = {
"type": binascii.hexlify(("login").encode()),
"username": encryption.encrypt(user, self.enckey, init_iv),
"pass": encryption.encrypt(password, self.enckey, init_iv),
"hwid": encryption.encrypt(hwid, self.enckey, init_iv),
"sessionid": binascii.hexlify(self.sessionid.encode()),
"sessionid": binascii.hexlify(self.sessionid.encode()),
"name": binascii.hexlify(self.name.encode()),
"ownerid": binascii.hexlify(self.ownerid.encode()),
"init_iv": init_iv
Expand All @@ -147,15 +155,16 @@ def login(self, user, password, hwid=None):
sys.exit()

def license(self, key, hwid=None):
if hwid is None: hwid = others.get_hwid()

if hwid is None:
hwid = others.get_hwid()

init_iv = SHA256.new(str(uuid4())[:8].encode()).hexdigest()

post_data = {
"type": binascii.hexlify(("license").encode()),
"key": encryption.encrypt(key, self.enckey, init_iv),
"hwid": encryption.encrypt(hwid, self.enckey, init_iv),
"sessionid": binascii.hexlify(self.sessionid.encode()),
"sessionid": binascii.hexlify(self.sessionid.encode()),
"name": binascii.hexlify(self.name.encode()),
"ownerid": binascii.hexlify(self.ownerid.encode()),
"init_iv": init_iv
Expand All @@ -173,9 +182,9 @@ def license(self, key, hwid=None):
else:
print(json["message"])
sys.exit()

def var(self, name):

init_iv = SHA256.new(str(uuid4())[:8].encode()).hexdigest()

post_data = {
Expand All @@ -199,9 +208,9 @@ def var(self, name):
print(json["message"])
time.sleep(5)
sys.exit()

def file(self, fileid):

init_iv = SHA256.new(str(uuid4())[:8].encode()).hexdigest()

post_data = {
Expand All @@ -226,7 +235,7 @@ def file(self, fileid):
return binascii.unhexlify(json["contents"])

def webhook(self, webid, param):

init_iv = SHA256.new(str(uuid4())[:8].encode()).hexdigest()

post_data = {
Expand All @@ -253,7 +262,7 @@ def webhook(self, webid, param):
sys.exit()

def log(self, message):

init_iv = SHA256.new(str(uuid4())[:8].encode()).hexdigest()

post_data = {
Expand All @@ -272,7 +281,7 @@ def __do_request(self, post_data):
headers = {"User-Agent": "KeyAuth"}

rq_out = requests.post(
"https://keyauth.com/api/1.0/", data=post_data, headers=headers
"https://keyauth.com/api/1.0/", data=post_data, headers=headers, verify="keyauth.crt"
)

return rq_out.text
Expand All @@ -295,7 +304,8 @@ def get_hwid():
if platform.system() != "Windows":
return "None"

cmd = subprocess.Popen("wmic useraccount where name='%username%' get sid", stdout=subprocess.PIPE, shell=True)
cmd = subprocess.Popen(
"wmic useraccount where name='%username%' get sid", stdout=subprocess.PIPE, shell=True)

(suppost_sid, error) = cmd.communicate()

Expand Down