X-Git-Url: http://www.average.org/gitweb/?p=loctrkd.git;a=blobdiff_plain;f=loctrkd%2Fbeesure.py;fp=loctrkd%2Fbeesure.py;h=dcf16ba227fd7ca585baa9371595e19307917fe9;hp=9e9e22b65667c3494338efd242ce19d33ad58321;hb=718dd83f618a0ee2674450162aba85cfed447512;hpb=f55e1a18723a3b3aca34e9a4b8b878860f951e52 diff --git a/loctrkd/beesure.py b/loctrkd/beesure.py index 9e9e22b..dcf16ba 100755 --- a/loctrkd/beesure.py +++ b/loctrkd/beesure.py @@ -116,7 +116,7 @@ class Stream: else: msgs.append( f"Packet does not end with ']'" - f" at {self.datalen+20}: {self.buffer=!r}" + f" at {self.datalen+20}: {self.buffer[:64]=!r}" ) self.buffer = self.buffer[self.datalen + 21 :] self.datalen = 0 @@ -602,8 +602,15 @@ def proto_handled(proto: str) -> bool: return proto.startswith(PROTO_PREFIX) +def _local_proto(packet: bytes) -> str: + try: + return packet[20:-1].split(b",")[0].decode() + except UnicodeDecodeError: + return "UNKNOWN" + + def proto_of_message(packet: bytes) -> str: - return PROTO_PREFIX + packet[20:-1].split(b",")[0].decode() + return PROTO_PREFIX + _local_proto(packet) def imei_from_packet(packet: bytes) -> Optional[str]: @@ -618,7 +625,7 @@ def is_goodbye_packet(packet: bytes) -> bool: def inline_response(packet: bytes) -> Optional[bytes]: - proto = packet[20:-1].split(b",")[0].decode() + proto = _local_proto(packet) if proto in CLASSES: cls = CLASSES[proto] if cls.RESPOND is Respond.INL: