def import_patch_rom(Patch, Path, OVERLAYOffset): ''' Import patch and write to an Overlay0 in the ROM ''' try: ROM = open(Path, mode='r+b') except IOError: return 'Invalid ROM Path' ROM = mmap.mmap(ROM.fileno(), 20772366) for Sprite in Patch.keys(): ClassID = database.lookup(Patch, Sprite) if (libmisc.Spritenumchk(Sprite) != 'UNK') & (libmisc.ClassIDcheck(ClassID) != 'UNK'): ClassID = hex(ClassID)[2:] ZeroAdd = (4 - len(ClassID)) * '0' ClassID = ''.join([ZeroAdd, ClassID]) ROM.seek(OVERLAYOffset + Sprite * 2 - 2) ROM.write_byte(int(ClassID[2:], 16)) ROM.seek(OVERLAYOffset + Sprite * 2 - 1) ROM.write_byte(int(ClassID[:2], 16)) else: return "INVCLASSIDSPRITE" ROM.flush() ROM.close() return 'Done'
def import_patch(Patch, Path, Region): ''' Write a patch to an external Overlay0 ''' try: Overlay = open(Path, mode='r+b') except IOError: return 'Invalid Overlay Path' Overlay = mmap.mmap(Overlay.fileno(), 0) for Sprite in Patch.keys(): ClassID = database.lookup(Patch, Sprite) if (libmisc.Spritenumchk(Sprite) != 'UNK') & (libmisc.ClassIDcheck(ClassID) != 'UNK'): ClassID = hex(ClassID)[2:] ZeroAdd = (4 - len(ClassID)) * '0' ClassID = ''.join([ZeroAdd, ClassID]) Overlay.seek(ovproc.ovoffset(Region) + Sprite * 2 - 2) Overlay.write_byte(int(ClassID[2:], 16)) Overlay.seek(ovproc.ovoffset(Region) + Sprite * 2 - 1) Overlay.write_byte(int(ClassID[:2], 16)) else: return "INVCLASSIDSPRITE" Overlay.flush() Overlay.close() return 'Done'
def action_3(self): """ `action_3` -> Registration If everything works fine -> create self.response If something goes wrong -> raise Exception """ if len(self.parsed_request) != 4: raise Exception(response.error_invalid_request) try: pk = self.parsed_request["pk"] if invalid_pk(pk): raise nonce = nacl.encoding.Base64Encoder.decode(self.parsed_request["nonce"].encode("utf-8")) payload_encrypted = self.parsed_request["encrypted"].encode("utf-8") payload_encrypted = nacl.encoding.Base64Encoder.decode(payload_encrypted) pk_byte = pk.encode("utf-8") client_pk = PublicKey(pk_byte, nacl.encoding.HexEncoder) payload_decrypted = crypto.decrypt_request(crypto.secKey, client_pk, payload_encrypted, nonce) payload_decrypted = json.loads(payload_decrypted.decode("utf-8")) if len(payload_decrypted) != 2: raise tox_id = payload_decrypted["tox_id"] name = str(payload_decrypted["name"]).upper() if len(tox_id) != 76: raise if not pk == tox_id[:64]: raise # Check if checksum of Tox ID that will be registered is correct if not tox_id[72:] == crypto.compute_checksum(tox_id[:64], tox_id[64:72]): raise except: raise Exception(response.error_invalid_request) if len(name) < 1 or len(name) > 60: raise Exception(response.error_namelength) if database.lookup(name): raise Exception(response.error_name_used) if database.reverse_lookup(pk): raise Exception(response.error_pk_registered) database.registration(tox_id, name) self.response = {"success_action_3": "The username has been registered."}
def create_patch_rom(NewPatchPath, FromPatchDictionary, ROMPath, OVERLAYOffset): ''' Write a patch based off the loaded Overlay and the original values from the PatchOriginal file ''' iterate = 325 while iterate > 0: modified = librom.ClassIDread(ROMPath, iterate, OVERLAYOffset) original = database.lookup(FromPatchDictionary, iterate) if modified != original: database.write_patch(NewPatchPath, iterate, modified) iterate = iterate - 1 return 'Done'
def create_patch(NewPatchPath, FromPatchDictionary, OVPath, Region): ''' Write a patch based off the loaded Overlay and the original values from the PatchOriginal file ''' iterate = 325 while iterate > 0: modified = ovproc.ClassIDread(OVPath, iterate, Region) original = database.lookup(FromPatchDictionary, iterate) if modified != original: database.write_patch(NewPatchPath, iterate, modified) iterate = iterate - 1 return 'Done'
def action_1(self): """ `action_1` -> Lookup If everything works fine -> create self.response If something goes wrong -> raise Exception """ if len(self.parsed_request) != 2: raise Exception(response.error_invalid_request) try: name = str(self.parsed_request["name"]).upper() except: raise Exception(response.error_invalid_request) lookup_result = database.lookup(name) if lookup_result: self.response = {"success_action_1": "Lookup has been successful.", "id": lookup_result} else: raise Exception(response.error_lookup)
def import_patch_rom(Patch, Path, OVERLAYOffset): ''' Import patch and write to an Overlay0 in the ROM ''' try: ROM = open(Path, mode='r+b') except IOError: return 'Invalid ROM Path' ROM = mmap.mmap(ROM.fileno(), 20772366) for Sprite in Patch.keys(): ClassID = database.lookup(Patch, Sprite) if (libmisc.Spritenumchk(Sprite) != 'UNK') & (libmisc.ClassIDcheck(ClassID) != 'UNK'): ClassID = hex(ClassID)[2:] ZeroAdd = (4 - len(ClassID))*'0' ClassID = ''.join([ZeroAdd, ClassID]) ROM.seek(OVERLAYOffset + Sprite*2 - 2) ROM.write_byte(int(ClassID[2:], 16)) ROM.seek(OVERLAYOffset + Sprite*2 - 1) ROM.write_byte(int(ClassID[:2], 16)) else: return "INVCLASSIDSPRITE" ROM.flush() ROM.close() return 'Done'
def import_patch(Patch, Path, Region): ''' Write a patch to an external Overlay0 ''' try: Overlay = open(Path, mode='r+b') except IOError: return 'Invalid Overlay Path' Overlay = mmap.mmap(Overlay.fileno(), 0) for Sprite in Patch.keys(): ClassID = database.lookup(Patch, Sprite) if (libmisc.Spritenumchk(Sprite) != 'UNK') & (libmisc.ClassIDcheck(ClassID) != 'UNK'): ClassID = hex(ClassID)[2:] ZeroAdd = (4 - len(ClassID))*'0' ClassID = ''.join([ZeroAdd, ClassID]) Overlay.seek(ovproc.ovoffset(Region) + Sprite*2 - 2) Overlay.write_byte(int(ClassID[2:], 16)) Overlay.seek(ovproc.ovoffset(Region) + Sprite*2 - 1) Overlay.write_byte(int(ClassID[:2], 16)) else: return "INVCLASSIDSPRITE" Overlay.flush() Overlay.close() return 'Done'
def action_1(self): """ `action_1` -> Lookup If everything works fine -> create self.response If something goes wrong -> raise Exception """ if len(self.parsed_request) != 2: raise Exception(response.error_invalid_request) try: name = str(self.parsed_request["name"]).upper() except: raise Exception(response.error_invalid_request) lookup_result = database.lookup(name) if lookup_result: self.response = { "success_action_1": "Lookup has been successful.", "id": lookup_result } else: raise Exception(response.error_lookup)
def action_3(self): """ `action_3` -> Registration If everything works fine -> create self.response If something goes wrong -> raise Exception """ if len(self.parsed_request) != 4: raise Exception(response.error_invalid_request) try: pk = self.parsed_request["pk"] if invalid_pk(pk): raise nonce = nacl.encoding.Base64Encoder.decode( self.parsed_request["nonce"].encode("utf-8")) payload_encrypted = self.parsed_request["encrypted"].encode( "utf-8") payload_encrypted = nacl.encoding.Base64Encoder.decode( payload_encrypted) pk_byte = pk.encode("utf-8") client_pk = PublicKey(pk_byte, nacl.encoding.HexEncoder) payload_decrypted = crypto.decrypt_request(crypto.secKey, client_pk, payload_encrypted, nonce) payload_decrypted = json.loads(payload_decrypted.decode("utf-8")) if len(payload_decrypted) != 2: raise tox_id = payload_decrypted["tox_id"] name = str(payload_decrypted["name"]).upper() if len(tox_id) != 76: raise if not pk == tox_id[:64]: raise # Check if checksum of Tox ID that will be registered is correct if not tox_id[72:] == crypto.compute_checksum( tox_id[:64], tox_id[64:72]): raise except: raise Exception(response.error_invalid_request) if len(name) < 1 or len(name) > 60: raise Exception(response.error_namelength) if database.lookup(name): raise Exception(response.error_name_used) if database.reverse_lookup(pk): raise Exception(response.error_pk_registered) database.registration(tox_id, name) self.response = { "success_action_3": "The username has been registered." }
def NameLookup(ParamA): global NameDB return database.lookup(NameDB, ParamA)