Данные вашего примера выглядят некорректно. Я не знаю деталей, но похоже, что это первый байт ваших данных 'e7'. Я понимаю, что это «тип» сообщения. Похоже, этот тип должен ожидать больше данных, чем вы его даете.
Я вижу примеры, которые используют «30» в качестве первого байта, представляющего «последовательность». Эти примеры очень похожи на ваши. Поэтому я попытался заменить 'e7' на '30' в данных вашего примера, и с этим изменением ваш код работает без ошибок.
Чтобы было ясно, что я говорю, этот код работает для меня без ошибок:
# 30 80 : sequence, indefinite length
# 02 01 44 : integer 0x44
# 02 01 55 : integer 0x55
# 00 00 : end of contents (terminating the 0x30 object)
data = '30 80 02 01 44 02 01 55 00 00'
data = binascii.unhexlify( ''.join(data.split()) )
# throws pyasn1.error.PyAsn1Error: Missing end-of-octets terminator
pyasn1.codec.ber.decoder.decode(data)
Я считаю, что это показывает, что ваш код "правильный". Хотелось бы, чтобы я знал больше об этом, чтобы я мог больше помочь, например, объяснить вам, что такое тип "e7". Без этого я надеюсь, что это все еще полезно.