# Copyright (c) 2018 Atmosphere-NX # # This program is free software; you can redistribute it and/or modify it # under the terms and conditions of the GNU General Public License, # version 2, as published by the Free Software Foundation. # # This program is distributed in the hope it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . import zlib import ServiceId from struct import unpack as up, pack as pk HEADER_SIZE = 0x28 def crc32(s): return zlib.crc32(s) & 0xFFFFFFFF class Packet(): def __init__(self): self.service = 0 self.task = 0 self.cmd = 0 self.continuation = 0 self.version = 0 self.body_len = 0 self.body = '' self.offset = 0 def load_header(self, header): assert len(header) == HEADER_SIZE self.service, self.task, self.cmd, self.continuation, self.version, self.body_len, \ _, self.body_chk, self.hdr_chk = up('