Your message is not long enough (sequence is shorter than 17). You should test length of frame, or use zip
and slice to be sure, you don't try to call index that does not exist:
tags = (b'ICF', b'RSV', b'GCT',
b'DNA', b'DA1', b'DA2',
b'SNA', b'SA1', b'SA2',
b'SID', b'MRC', b'SRC')
for tag, data in zip(tags, self.rawTcpFrame[16:]):
asm[tag] = binstr2int(data)
or you can wrap everything in try: ... except IndexError:
and handle too short frame there.