Esempio n. 1
0
    def parse_data(self):
        rtnval = None
        buf = ''.join([self.buf[x]
                       for x in range(0, self.header.length)])
        crcval = calcCrc32(buf[: -4])
        rst = struct.unpack('<I', bytearray(buf[-4:]))
        if (crcval != rst[0]):
            self.parserlogger.warning('Data field CRC32 failed. header={}'.format(self.header))
            rtnval = (False, HEADER_LEN)
        else:
            # print 'CRC32[{}] {}'.format(base64.b16encode(buf[-4:]),
            # str(self.crc32.crcValue == rst[0]))
            raw_buf = buf[HEADER_LEN: self.header.length - 4]

            if self.header.enc:
                raw_buf = decodeAES(raw_buf)[: -self.header.pad]

            #### TODO debug ####
            if self.header.ack:
                self.parserlogger.debug(self.header)
            ####################

            self.output_msg_queue.put((self.header, raw_buf), timeout=10.0)
            rtnval = (True, self.header.length)
        return rtnval
Esempio n. 2
0
    def parse_data(self):
        rtnval = None
        buf = ''.join([self.buf[x]
                       for x in range(0, self.header.length)])
        crcval = calcCrc32(buf[: -4])
        rst = struct.unpack('<I', bytearray(buf[-4:]))
        if (crcval != rst[0]):
            self.parserlogger.warning('Data field CRC32 failed. header={}'.format(self.header))
            rtnval = (False, HEADER_LEN)
        else:
            # print 'CRC32[{}] {}'.format(base64.b16encode(buf[-4:]),
            # str(self.crc32.crcValue == rst[0]))
            raw_buf = buf[HEADER_LEN: self.header.length - 4]

            if self.header.enc:
                raw_buf = decodeAES(raw_buf)[: -self.header.pad]

            #### TODO debug ####
            if self.header.ack:
                self.parserlogger.debug(self.header)
            ####################

            self.output_msg_queue.put((self.header, raw_buf), timeout=10.0)
            rtnval = (True, self.header.length)
        return rtnval
Esempio n. 3
0
    def pack(self):
        header = ProtocolHeader()
        self.head_buf = header.render(
            data_length=len(self.data_buf),
            session=self.session_id,
            ack=0,
            pad=self.pad,
            enc=self.enc,
            seq=self.seq,
        )
        self.header = header

        raw_buf = ''.join([self.head_buf, self.data_buf])
        crcval = calcCrc32(raw_buf)
        crc_buf = struct.pack('<I', crcval)

        return raw_buf + crc_buf
Esempio n. 4
0
    def pack(self):
        header = ProtocolHeader()
        self.head_buf = header.render(
            data_length=len(self.data_buf),
            session=self.session_id,
            ack=0,
            pad=self.pad,
            enc=self.enc,
            seq=self.seq,
        )
        self.header = header

        raw_buf = ''.join([self.head_buf, self.data_buf])
        crcval = calcCrc32(raw_buf)
        crc_buf = struct.pack('<I', crcval)

        return raw_buf + crc_buf