Я использую python для извлечения прокола (udp, tcp) из дейтаграммы ip. Но моя проблема - распаковать данные, которые я получаю из кадра rnet. Я использую эту функцию для этого
def ipv4_head(data):
version_h = data[0]
version = version_h >> 4
header_length = (version_h & 15) * 4
ttl, proto, src, target = struct.unpack('! 8x B B 2x 4s 4s', raw_data[:20])
data = raw_data[header_length:]
return version, header_length, ttl, proto, src, target, data
Моя проблема в этой строке '' '
struct.unpack ('! 8x BB 2x 4s 4s ', raw_data [: 20] )
У меня ошибка
struct.error: для распаковки требуется буфер в 20 байт
Я пробовал много думает, это один тоже дает тот же результат
struct.unpack ("! BBHHHBBH4s4s", raw_data)
с другой функцией, но все тот же
def ipv4_head(raw_data):
store=struct.unpack("!BBHHHBBH4s4s", raw_data)
src_ip=socket.inet_ntoa(store[8])
dst_ip=socket.inet_ntoa(store[9])
protocol=store[6]
return src_ip,dst_ip, protocol
Но это то же самое, я использую python 3.
Мне тоже интересно, чтобы обойти struct.unpack с помощью другого метода. Много дней я боролся с этой ошибкой, но ничего не нашел в inte rnet.
Заранее спасибо, ребята