Example #1
0
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'
Example #2
0
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'
Example #3
0
	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."}
Example #4
0
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'
Example #5
0
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'
Example #6
0
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'
Example #7
0
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'
Example #8
0
	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)
Example #9
0
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'
Example #10
0
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'
Example #11
0
    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)
Example #12
0
    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."
        }
Example #13
0
 def NameLookup(ParamA):
     global NameDB
     return database.lookup(NameDB, ParamA)