scapy - fields_desc - добавить поле как смещение - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь описать поле как смещение и получить доступ к его данным

Например:

fields_desc = [LEShortField("structure_size",0),
               ByteField("flags",0),
               **LEShortField("blob_offset",0)**,
               LEFieldLenField("user_name_length", 0),
               LEShortField("user_name_maxlength", 0),
               **LEIntField("user_name_offset", 0)**]

Мне нужно взять переменную blob_offset и добавить ее user_name_offset, чтобыизвлечь имя пользователя.

Как я могу это сделать ??Я не нашел и специальной переменной для этого ...

Спасибо

1 Ответ

0 голосов
/ 19 ноября 2018

ну, вы точно не говорите, как выглядит ваш пакет, предполагая, что ваш «блоб» и имя пользователя находятся сразу после того пакета, который вы уже указали, вы можете попробовать сделать что-то вроде этого:

fields_desc = [LEShortField("structure_size",0),
               ByteField("flags",0),
               LEFieldLenField("blob_offset",0, length_of="blob_offset_pad", fmt="!H"),
               LEFieldLenField("user_name_length", 0, length_of="user_name"),
               LEShortField("user_name_maxlength", 0),
               LEFieldLenField("user_name_offset", 0, length_of="user_name", fmt="!I"),
               StrFixedLenField("blob_offset_pad", 0, length_from = lambda pkt: pkt.blob_offset),
               StrFixedLenField("user_name_offset_pad", 0, length_from = lambda pkt: pkt.user_name_offset),
               StrFixedLenField("user_name", "", length_from= lambda pkt: pkt.user_name_length)]

снова можетена самом деле не проверяйте это, потому что вы не предоставили никаких полезных примеров

...