2024-04-23 18:22:53 -04:00
|
|
|
#!/usr/bin/env python3 -B
|
|
|
|
# coding=utf-8
|
2022-04-01 10:43:22 -04:00
|
|
|
|
2022-04-17 13:48:43 -04:00
|
|
|
"""
|
2024-04-23 18:22:53 -04:00
|
|
|
Copyright (C) 2022-2024 Plato Mavropoulos
|
2022-04-17 13:48:43 -04:00
|
|
|
"""
|
|
|
|
|
2024-04-23 18:22:53 -04:00
|
|
|
|
2022-04-01 10:43:22 -04:00
|
|
|
# Get Checksum 16-bit
|
2022-04-06 18:13:07 -04:00
|
|
|
def get_chk_16(data, value=0, order='little'):
|
2024-04-23 18:22:53 -04:00
|
|
|
""" Calculate Checksum-16 of data, controlling IV and Endianess """
|
|
|
|
|
2022-04-01 10:43:22 -04:00
|
|
|
for idx in range(0, len(data), 2):
|
2022-04-06 18:13:07 -04:00
|
|
|
# noinspection PyTypeChecker
|
2024-04-23 18:22:53 -04:00
|
|
|
value += int.from_bytes(data[idx:idx + 2], byteorder=order)
|
|
|
|
|
2022-04-06 18:13:07 -04:00
|
|
|
value &= 0xFFFF
|
2024-04-23 18:22:53 -04:00
|
|
|
|
2022-04-06 18:13:07 -04:00
|
|
|
return value
|
|
|
|
|
2024-04-23 18:22:53 -04:00
|
|
|
|
2022-04-06 18:13:07 -04:00
|
|
|
# Get Checksum 8-bit XOR
|
|
|
|
def get_chk_8_xor(data, value=0):
|
2024-04-23 18:22:53 -04:00
|
|
|
""" Calculate Checksum-8 XOR of data, controlling IV """
|
|
|
|
|
2022-04-06 18:13:07 -04:00
|
|
|
for byte in data:
|
|
|
|
value ^= byte
|
2024-04-23 18:22:53 -04:00
|
|
|
|
2022-04-06 18:13:07 -04:00
|
|
|
value ^= 0x0
|
2024-04-23 18:22:53 -04:00
|
|
|
|
2022-04-15 11:17:58 -04:00
|
|
|
return value
|