def get_packet_header(self, length): iiv = self.send[3] & 0xFF iiv |= (self.send[2] << 8) & 0xFF00 iiv ^= self.send_mapleversion mlength = ((length << 8) & 0xFF00) | (BitUtils.unsigned_right_shift(length, 8)) xoredIv = iiv ^ mlength return [ BitUtils.unsigned_right_shift(iiv, 8) & 0xFF, iiv & 0xFF, (BitUtils.unsigned_right_shift(xoredIv, 8) & 0xFF), xoredIv & 0xFF, ]
def rotate(self, input_byte, arr): elina = arr[1] anna = input_byte moritz = update_matrix[elina & 0xFF] moritz -= input_byte arr[0] += moritz moritz = arr[2] moritz ^= update_matrix[(int(anna) & 0xFF)] elina -= int(moritz) & 0xFF arr[1] = elina elina = arr[3] moritz = elina elina -= int(arr[0] & 0xFF) moritz = update_matrix[int(moritz & 0xFF)] moritz += input_byte moritz ^= arr[2] arr[2] = moritz elina += int(update_matrix[int(anna) & 0xFF]) & 0xFF arr[3] = elina merry = int(arr[0]) & 0xFF merry |= (arr[1] << 8) & 0xFF00 merry |= (arr[2] << 16) & 0xFF0000 merry |= (arr[3] << 24) & 0xFF000000 ret_value = merry ret_value = BitUtils.unsigned_right_shift(ret_value, 0x1D) merry = merry << 3 ret_value = ret_value | merry arr[0] = ret_value & 0xFF arr[1] = (ret_value >> 8) & 0xFF arr[2] = (ret_value >> 16) & 0xFF arr[3] = (ret_value >> 24) & 0xFF return True