def serverLogic(self, kmsRequest): if self.config['debug']: print "KMS Request Bytes:", binascii.b2a_hex(str(kmsRequest)) print "KMS Request:", kmsRequest.dump() if self.config['verbose']: clientMachineId = kmsRequest['clientMachineId'].get() applicationId = kmsRequest['applicationId'].get() skuId = kmsRequest['skuId'].get() requestDatetime = filetimes.filetime_to_dt( kmsRequest['requestTime']) # Try and localize the request time, if pytz is available try: import timezones from pytz import utc local_dt = utc.localize(requestDatetime).astimezone( timezones.localtz()) except ImportError: local_dt = requestDatetime print " Machine Name: %s" % kmsRequest.getMachineName() print "Client Machine ID: %s" % str(clientMachineId) print " Application ID: %s" % self.appIds.get( applicationId, str(applicationId)) print " SKU ID: %s" % self.skuIds.get(skuId, str(skuId)) print " Licence Status: %s" % kmsRequest.getLicenseStatus() print " Request Time: %s" % local_dt.strftime( '%Y-%m-%d %H:%M:%S %Z (UTC%z)') return self.createKmsResponse(kmsRequest)
def serverLogic(self, kmsRequest): if self.config["debug"]: print "KMS Request Bytes:", binascii.b2a_hex(str(kmsRequest)) print "KMS Request:", kmsRequest.dump() if self.config["verbose"]: clientMachineId = kmsRequest["clientMachineId"].get() applicationId = kmsRequest["applicationId"].get() skuId = kmsRequest["skuId"].get() requestDatetime = filetimes.filetime_to_dt(kmsRequest["requestTime"]) # Try and localize the request time, if pytz is available try: import timezones from pytz import utc local_dt = utc.localize(requestDatetime).astimezone(timezones.localtz()) except ImportError: local_dt = requestDatetime print " Machine Name: %s" % kmsRequest.getMachineName() print "Client Machine ID: %s" % str(clientMachineId) print " Application ID: %s" % self.appIds.get(applicationId, str(applicationId)) print " SKU ID: %s" % self.skuIds.get(skuId, str(skuId)) print " Licence Status: %s" % kmsRequest.getLicenseStatus() print " Request Time: %s" % local_dt.strftime("%Y-%m-%d %H:%M:%S %Z (UTC%z)") return self.createKmsResponse(kmsRequest)
def serverLogic(self, kmsRequest): logging.debug("KMS Request Bytes:", binascii.b2a_hex(str(kmsRequest))) logging.debug("KMS Request:", kmsRequest.dump()) clientMachineId = kmsRequest['clientMachineId'].get() applicationId = kmsRequest['applicationId'].get() skuId = kmsRequest['skuId'].get() requestDatetime = filetimes.filetime_to_dt(kmsRequest['requestTime']) # Try and localize the request time, if pytz is available try: import timezones from pytz import utc local_dt = utc.localize(requestDatetime).astimezone(timezones.localtz()) except ImportError: local_dt = requestDatetime logging.info(" Machine Name: %s" % kmsRequest.getMachineName()) logging.info(" Client Machine ID: %s" % str(clientMachineId)) logging.info(" Application ID: %s" % self.appIds.get(applicationId, str(applicationId))) logging.info(" SKU ID: %s" % self.skuIds.get(skuId, str(skuId))) logging.info(" License Status: %s" % kmsRequest.getLicenseStatus()) logging.info(" Request Time: %s" % local_dt.strftime('%Y-%m-%d %H:%M:%S %Z (UTC%z)')) return self.createKmsResponse(kmsRequest)
logging.debug("KMS Request Bytes: %s" % binascii.b2a_hex(str(kmsRequest))) logging.debug("KMS Request: %s" % kmsRequest.dump()) clientMachineId = kmsRequest['clientMachineId'].get() global applicationId applicationId = kmsRequest['applicationId'].get() skuId = kmsRequest['skuId'].get() requestDatetime = filetimes.filetime_to_dt(kmsRequest['requestTime']) # Try and localize the request time, if pytz is available try: import timezones from pytz import utc local_dt = utc.localize(requestDatetime).astimezone( timezones.localtz()) except ImportError: local_dt = requestDatetime infoDict = { "machineName": kmsRequest.getMachineName(), "clientMachineId": str(clientMachineId), "appId": self.appIds.get(applicationId, str(applicationId)), "skuId": self.skuIds.get(skuId, str(skuId)), "licenseStatus": kmsRequest.getLicenseStatus(), "requestTime": int(time.time()), "kmsEpid": None } #print infoDict logging.info("Machine Name: %s" % infoDict["machineName"])
def serverLogic(self, kmsRequest): if self.config['sqlite'] and self.config['dbSupport']: self.dbName = 'clients.db' if not os.path.isfile(self.dbName): # Initialize the database. con = None try: con = sqlite3.connect(self.dbName) cur = con.cursor() cur.execute( "CREATE TABLE clients(clientMachineId TEXT, machineName TEXT, \ applicationId TEXT, skuId TEXT, licenseStatus TEXT, lastRequestTime INTEGER, kmsEpid TEXT, requestCount INTEGER)" ) except sqlite3.Error as e: #*2to3* logging.error("%s:" % e.args[0]) sys.exit(1) finally: if con: con.commit() con.close() shell_message(nshell=15) kmsRequest = byterize(kmsRequest) logging.debug("KMS Request Bytes: \n%s\n" % justify( binascii.b2a_hex( str(kmsRequest).encode('latin-1')).decode('utf-8'))) #*2to3* logging.debug("KMS Request: \n%s\n" % justify(kmsRequest.dump(print_to_stdout=False))) clientMachineId = kmsRequest['clientMachineId'].get() applicationId = kmsRequest['applicationId'].get() skuId = kmsRequest['skuId'].get() requestDatetime = filetimes.filetime_to_dt(kmsRequest['requestTime']) # Try and localize the request time, if pytz is available try: import timezones from pytz import utc local_dt = utc.localize(requestDatetime).astimezone( timezones.localtz()) except ImportError: local_dt = requestDatetime infoDict = { "machineName": kmsRequest.getMachineName(), "clientMachineId": str(clientMachineId), "appId": self.appIds.get(applicationId, str(applicationId)), "skuId": self.skuIds.get(skuId, str(skuId)), "licenseStatus": kmsRequest.getLicenseStatus(), "requestTime": int(time.time()), "kmsEpid": None } #print infoDict logging.info("Machine Name: %s" % infoDict["machineName"]) logging.info("Client Machine ID: %s" % infoDict["clientMachineId"]) logging.info("Application ID: %s" % infoDict["appId"]) logging.info("SKU ID: %s" % infoDict["skuId"]) logging.info("License Status: %s" % infoDict["licenseStatus"]) logging.info("Request Time: %s" % local_dt.strftime('%Y-%m-%d %H:%M:%S %Z (UTC%z)')) if self.config['sqlite'] and self.config['dbSupport']: con = None try: con = sqlite3.connect(self.dbName) cur = con.cursor() cur.execute( "SELECT * FROM clients WHERE clientMachineId=:clientMachineId;", infoDict) try: data = cur.fetchone() if not data: #print "Inserting row..." cur.execute( "INSERT INTO clients (clientMachineId, machineName, \ applicationId, skuId, licenseStatus, lastRequestTime, requestCount) VALUES (:clientMachineId, :machineName, :appId, \ :skuId, :licenseStatus, :requestTime, 1);", infoDict) else: #print "Data:", data if data[1] != infoDict["machineName"]: cur.execute( "UPDATE clients SET machineName=:machineName WHERE \ clientMachineId=:clientMachineId;", infoDict) if data[2] != infoDict["appId"]: cur.execute( "UPDATE clients SET applicationId=:appId WHERE \ clientMachineId=:clientMachineId;", infoDict) if data[3] != infoDict["skuId"]: cur.execute( "UPDATE clients SET skuId=:skuId WHERE \ clientMachineId=:clientMachineId;", infoDict) if data[4] != infoDict["licenseStatus"]: cur.execute( "UPDATE clients SET licenseStatus=:licenseStatus WHERE \ clientMachineId=:clientMachineId;", infoDict) if data[5] != infoDict["requestTime"]: cur.execute( "UPDATE clients SET lastRequestTime=:requestTime WHERE \ clientMachineId=:clientMachineId;", infoDict) # Increment requestCount cur.execute( "UPDATE clients SET requestCount=requestCount+1 WHERE \ clientMachineId=:clientMachineId;", infoDict) except sqlite3.Error as e: #*2to3* logging.error("%s:" % e.args[0]) except sqlite3.Error as e: #*2to3* logging.error("%s:" % e.args[0]) sys.exit(1) finally: if con: con.commit() con.close() return self.createKmsResponse(kmsRequest)
con.close() if self.config['debug']: print "KMS Request Bytes:", binascii.b2a_hex(str(kmsRequest)) print "KMS Request:", kmsRequest.dump() clientMachineId = kmsRequest['clientMachineId'].get() applicationId = kmsRequest['applicationId'].get() skuId = kmsRequest['skuId'].get() requestDatetime = filetimes.filetime_to_dt(kmsRequest['requestTime']) # Try and localize the request time, if pytz is available try: import timezones from pytz import utc local_dt = utc.localize(requestDatetime).astimezone(timezones.localtz()) except ImportError: local_dt = requestDatetime infoDict = { "machineName" : kmsRequest.getMachineName(), "clientMachineId" : str(clientMachineId), "appId" : self.appIds.get(applicationId, str(applicationId)), "skuId" : self.skuIds.get(skuId, str(skuId)), "licenseStatus" : kmsRequest.getLicenseStatus(), "requestTime" : int(time.time()), "kmsEpid" : None } #print infoDict
def serverLogic(self, kmsRequest): if self.config['sqlite'] and self.config['dbSupport']: self.dbName = 'clients.db' if not os.path.isfile(self.dbName): # Initialize the database. con = None try: con = sqlite3.connect(self.dbName) cur = con.cursor() cur.execute("CREATE TABLE clients(clientMachineId TEXT, machineName TEXT, \ applicationId TEXT, skuId TEXT, licenseStatus TEXT, lastRequestTime INTEGER, kmsEpid TEXT, requestCount INTEGER)") except sqlite3.Error as e: #*2to3* logging.error("%s:" % e.args[0]) sys.exit(1) finally: if con: con.commit() con.close() shell_message(nshell = 15) kmsRequest = byterize(kmsRequest) logging.debug("KMS Request Bytes: \n%s\n" % justify(binascii.b2a_hex(str(kmsRequest).encode('latin-1')).decode('utf-8'))) #*2to3* logging.debug("KMS Request: \n%s\n" % justify(kmsRequest.dump(print_to_stdout = False))) clientMachineId = kmsRequest['clientMachineId'].get() applicationId = kmsRequest['applicationId'].get() skuId = kmsRequest['skuId'].get() requestDatetime = filetimes.filetime_to_dt(kmsRequest['requestTime']) # Try and localize the request time, if pytz is available try: import timezones from pytz import utc local_dt = utc.localize(requestDatetime).astimezone(timezones.localtz()) except ImportError: local_dt = requestDatetime infoDict = { "machineName" : kmsRequest.getMachineName(), "clientMachineId" : str(clientMachineId), "appId" : self.appIds.get(applicationId, str(applicationId)), "skuId" : self.skuIds.get(skuId, str(skuId)), "licenseStatus" : kmsRequest.getLicenseStatus(), "requestTime" : int(time.time()), "kmsEpid" : None } #print infoDict logging.info("Machine Name: %s" % infoDict["machineName"]) logging.info("Client Machine ID: %s" % infoDict["clientMachineId"]) logging.info("Application ID: %s" % infoDict["appId"]) logging.info("SKU ID: %s" % infoDict["skuId"]) logging.info("License Status: %s" % infoDict["licenseStatus"]) logging.info("Request Time: %s" % local_dt.strftime('%Y-%m-%d %H:%M:%S %Z (UTC%z)')) if self.config['sqlite'] and self.config['dbSupport']: con = None try: con = sqlite3.connect(self.dbName) cur = con.cursor() cur.execute("SELECT * FROM clients WHERE clientMachineId=:clientMachineId;", infoDict) try: data = cur.fetchone() if not data: #print "Inserting row..." cur.execute("INSERT INTO clients (clientMachineId, machineName, \ applicationId, skuId, licenseStatus, lastRequestTime, requestCount) VALUES (:clientMachineId, :machineName, :appId, \ :skuId, :licenseStatus, :requestTime, 1);", infoDict) else: #print "Data:", data if data[1] != infoDict["machineName"]: cur.execute("UPDATE clients SET machineName=:machineName WHERE \ clientMachineId=:clientMachineId;", infoDict) if data[2] != infoDict["appId"]: cur.execute("UPDATE clients SET applicationId=:appId WHERE \ clientMachineId=:clientMachineId;", infoDict) if data[3] != infoDict["skuId"]: cur.execute("UPDATE clients SET skuId=:skuId WHERE \ clientMachineId=:clientMachineId;", infoDict) if data[4] != infoDict["licenseStatus"]: cur.execute("UPDATE clients SET licenseStatus=:licenseStatus WHERE \ clientMachineId=:clientMachineId;", infoDict) if data[5] != infoDict["requestTime"]: cur.execute("UPDATE clients SET lastRequestTime=:requestTime WHERE \ clientMachineId=:clientMachineId;", infoDict) # Increment requestCount cur.execute("UPDATE clients SET requestCount=requestCount+1 WHERE \ clientMachineId=:clientMachineId;", infoDict) except sqlite3.Error as e: #*2to3* logging.error("%s:" % e.args[0]) except sqlite3.Error as e: #*2to3* logging.error("%s:" % e.args[0]) sys.exit(1) finally: if con: con.commit() con.close() return self.createKmsResponse(kmsRequest)
def serverLogic(self, kmsRequest): if self.config['sqlite'] and self.config['dbSupport']: self.dbName = 'clients.db' if not os.path.isfile(self.dbName): # Initialize the database. con = None try: con = sqlite3.connect(self.dbName) cur = con.cursor() cur.execute("CREATE TABLE clients(clientMachineId TEXT, machineName TEXT, applicationId TEXT, skuId TEXT, licenseStatus TEXT, lastRequestTime INTEGER, kmsEpid TEXT, requestCount INTEGER)") except sqlite3.Error as e: print("Error %s:" % e.args[0]) sys.exit(1) finally: if con: con.commit() con.close() if self.config['debug']: print("KMS Request Bytes:", binascii.b2a_hex(kmsRequest.__bytes__())) print("KMS Request:", kmsRequest.dump()) clientMachineId = str(kmsRequest['clientMachineId'].get()) applicationId = str(kmsRequest['applicationId'].get()) skuId = str(kmsRequest['skuId'].get()) requestDatetime = filetimes.filetime2timestamp(kmsRequest['requestTime']) # Try and localize the request time, if pytz is available try: import timezones from pytz import utc import datetime dt = datetime.datetime.fromtimestamp(requestDatetime) local_dt = utc.localize(dt).astimezone(timezones.localtz()).strftime('%Y-%m-%d %H:%M:%S %Z (UTC%z)') except ImportError: try: local_dt = time.strftime('%Y-%m-%d %H:%M:%S %Z (UTC%z)', time.localtime(requestDatetime)) except TypeError: # micropython-time accept timestamp stead of struct_time local_dt = time.strftime('%Y-%m-%d %H:%M:%S %Z', requestDatetime) # activation threshold: # https://docs.microsoft.com/en-us/windows/deployment/volume-activation/activate-windows-10-clients-vamt kmsdata = parse(tokenize(open(kmsdb)), lesslist=False)['KmsData'][0] appName, skuName, currentClientCount = applicationId, skuId, 25 for app in kmsdata['AppItem']: max_activ_thld = 0 for kms in app['KmsItem']: max_activ_thld = max(max_activ_thld, int(kms.get('@NCountPolicy', 25))) for sku in kms.get('SkuItem', []): if sku['@Id'] == skuId: skuName = sku['@DisplayName'] if app['@Id'] == applicationId: appName = app['@DisplayName'] currentClientCount = max_activ_thld * 2 infoDict = { "machineName" : kmsRequest.getMachineName(), "clientMachineId" : clientMachineId, "appId" : appName, "skuId" : skuName, "licenseStatus" : kmsRequest.getLicenseStatus(), "requestTime" : int(time.time()), "kmsEpid" : None } #print infoDict if self.config['verbose']: print(" Machine Name: %s" % infoDict["machineName"]) print("Client Machine ID: %s" % infoDict["clientMachineId"]) print(" Application ID: %s" % infoDict["appId"]) print(" SKU ID: %s" % infoDict["skuId"]) print(" Licence Status: %s" % infoDict["licenseStatus"]) print(" Request Time: %s" % local_dt) if self.config['sqlite'] and self.config['dbSupport']: con = None try: con = sqlite3.connect(self.dbName) cur = con.cursor() cur.execute("SELECT * FROM clients WHERE clientMachineId=:clientMachineId;", infoDict) try: data = cur.fetchone() if not data: #print "Inserting row..." cur.execute("INSERT INTO clients (clientMachineId, machineName, applicationId, skuId, licenseStatus, lastRequestTime, requestCount) VALUES (:clientMachineId, :machineName, :appId, :skuId, :licenseStatus, :requestTime, 1);", infoDict) else: #print "Data:", data if data[1] != infoDict["machineName"]: cur.execute("UPDATE clients SET machineName=:machineName WHERE clientMachineId=:clientMachineId;", infoDict) if data[2] != infoDict["appId"]: cur.execute("UPDATE clients SET applicationId=:appId WHERE clientMachineId=:clientMachineId;", infoDict) if data[3] != infoDict["skuId"]: cur.execute("UPDATE clients SET skuId=:skuId WHERE clientMachineId=:clientMachineId;", infoDict) if data[4] != infoDict["licenseStatus"]: cur.execute("UPDATE clients SET licenseStatus=:licenseStatus WHERE clientMachineId=:clientMachineId;", infoDict) if data[5] != infoDict["requestTime"]: cur.execute("UPDATE clients SET lastRequestTime=:requestTime WHERE clientMachineId=:clientMachineId;", infoDict) # Increment requestCount cur.execute("UPDATE clients SET requestCount=requestCount+1 WHERE clientMachineId=:clientMachineId;", infoDict) except sqlite3.Error as e: print("Error %s:" % e.args[0]) except sqlite3.Error as e: print("Error %s:" % e.args[0]) sys.exit(1) finally: if con: con.commit() con.close() return self.createKmsResponse(kmsRequest, currentClientCount)
def get_local_zone(): try: return timezones.localtz().zone except: pass return None