adb: add felica classes

This commit is contained in:
Hay1tsme 2023-05-26 18:02:20 -04:00
parent 7ac50868b2
commit ad9bef618f
2 changed files with 57 additions and 0 deletions

View File

@ -1,3 +1,4 @@
from .base import ADBBaseRequest, ADBBaseResponse, ADBHeader, ADBHeaderException
from .lookup import ADBLookupRequest, ADBLookupResponse
from .touch import ADBTouchRequest, ADBTouchResponse
from .felica import ADBFelicaLookupRequest, ADBFelicaLookupResponse, ADBFelicaLookup2Request, ADBFelicaLookup2Response

View File

@ -0,0 +1,56 @@
from construct import Struct, Int32sl, Padding, Int8ub
from .base import *
class ADBFelicaLookupRequest(ADBBaseRequest):
def __init__(self, data: bytes) -> None:
super().__init__(data)
self.idm = data[0x20:0x28].hex()
self.pmm = data[0x28:0x30].hex()
class ADBFelicaLookupResponse(ADBBaseResponse):
def __init__(self, code: int = 0, length: int = 10, status: int = 1, access_code: str | None = None) -> None:
super().__init__(code, length, status)
self.access_code = access_code if access_code is not None else "00000000000000000000"
def make(self) -> bytes:
header = super().make()
resp_struct = Struct(
Padding(26),
"access_code" / Int8ub[10],
)
return header + resp_struct.build(dict(
access_code = self.access_code
))
class ADBFelicaLookup2Request(ADBBaseRequest):
def __init__(self, data: bytes) -> None:
super().__init__(data)
self.idm = data[0x30:0x38].hex()
self.pmm = data[0x38:0x40].hex()
class ADBFelicaLookup2Response(ADBBaseResponse):
def __init__(self, code: int = 0, length: int = 10, status: int = 1, user_id: int | None = None, access_code: str | None = None) -> None:
super().__init__(code, length, status)
self.user_id = user_id if user_id is not None else -1
self.access_code = access_code if access_code is not None else "00000000000000000000"
def make(self) -> bytes:
header = super().make()
resp_struct = Struct(
Padding(22),
"user_id" / Int32sl,
"unk1" / Int32sl,
"access_code" / Int8ub[10],
"unk2" / Int32sl
)
return header + resp_struct.build(dict(
user_id = self.user_id,
unk1 = -1,
access_code = self.access_code,
unk2 = 1,
))