adb: update register

This commit is contained in:
Hay1tsme 2023-06-03 13:52:32 -05:00
parent 46dd8fe84f
commit d7f9eed3f2

View File

@ -29,7 +29,7 @@ class AimedbProtocol(Protocol):
self.register_handler(0x09, 0x0A, self.handle_log, 'log') self.register_handler(0x09, 0x0A, self.handle_log, 'log')
self.register_handler(0x0B, 0x0C, self.handle_campaign, 'campaign') self.register_handler(0x0B, 0x0C, self.handle_campaign, 'campaign')
self.register_handler(0x0D, 0x0E, self.handle_touch, 'touch') self.register_handler(0x0D, 0x0E, self.handle_touch, 'touch')
self.register_handler(0x0F, 0x10, self.handle_lookup2, 'lookup2') self.register_handler(0x0F, 0x10, self.handle_lookup, 'lookup2')
self.register_handler(0x11, 0x12, self.handle_felica_lookup2, 'felica_lookup2') self.register_handler(0x11, 0x12, self.handle_felica_lookup2, 'felica_lookup2')
self.register_handler(0x13, 0x14, self.handle_log2, 'log2') self.register_handler(0x13, 0x14, self.handle_log2, 'log2')
self.register_handler(0x64, 0x65, self.handle_hello, 'hello') self.register_handler(0x64, 0x65, self.handle_hello, 'hello')
@ -131,9 +131,6 @@ class AimedbProtocol(Protocol):
""" """
return ret return ret
def handle_lookup2(self, data: bytes, resp_code: int) -> ADBBaseResponse:
return self.handle_lookup(data, resp_code)
def handle_felica_lookup(self, data: bytes, resp_code: int) -> bytes: def handle_felica_lookup(self, data: bytes, resp_code: int) -> bytes:
idm = data[0x20:0x28].hex() idm = data[0x20:0x28].hex()
pmm = data[0x28:0x30].hex() pmm = data[0x28:0x30].hex()
@ -195,7 +192,7 @@ class AimedbProtocol(Protocol):
return ADBTouchResponse(resp_code, 0x0050) return ADBTouchResponse(resp_code, 0x0050)
def handle_register(self, data: bytes, resp_code: int) -> bytes: def handle_register(self, data: bytes, resp_code: int) -> bytes:
luid = data[0x20:0x2A].hex() req = ADBLookupRequest(data)
if self.config.server.allow_user_registration: if self.config.server.allow_user_registration:
user_id = self.data.user.create_user() user_id = self.data.user.create_user()
@ -204,22 +201,25 @@ class AimedbProtocol(Protocol):
self.logger.error("Failed to register user!") self.logger.error("Failed to register user!")
else: else:
card_id = self.data.card.create_card(user_id, luid) card_id = self.data.card.create_card(user_id, req.access_code)
if card_id is None: if card_id is None:
user_id = -1 user_id = -1
self.logger.error("Failed to register card!") self.logger.error("Failed to register card!")
self.logger.info( self.logger.info(
f"register from {self.transport.getPeer().host}: luid {luid} -> user_id {user_id}" f"Register access code {req.access_code} -> user_id {user_id}"
) )
else: else:
self.logger.info( self.logger.info(
f"register from {self.transport.getPeer().host} blocked!: luid {luid}" f"Registration blocked!: access code {req.access_code}"
) )
user_id = -1 user_id = -1
resp = ADBLookupResponse(resp_code, 0x30, 1 if user_id > 0 else 0)
resp.user_id = user_id
"""
ret = struct.pack( ret = struct.pack(
"<5H", "<5H",
0xA13E, 0xA13E,
@ -230,8 +230,8 @@ class AimedbProtocol(Protocol):
) )
ret += bytes(0x20 - len(ret)) ret += bytes(0x20 - len(ret))
ret += struct.pack("<l", user_id) ret += struct.pack("<l", user_id)
"""
return self.append_padding(ret) return resp
def handle_log(self, data: bytes, resp_code: int) -> bytes: def handle_log(self, data: bytes, resp_code: int) -> bytes:
# TODO: Save aimedb logs # TODO: Save aimedb logs