Конвертировать байтовые строки dpkt, содержащие случайные символы

Я использую модуль Python dpkt для анализа файла pcap. Я смотрю достаточно глубоко в пакеты, что некоторые данные представлены в виде байтовых потоков. Я могу легко преобразовать обычные байтовые строки, однако некоторые байтовые строки выглядят так:

\ Т \x01\ X1C \x88

Первое значение должно быть 09, однако по какой-то причине используется экранированный символ табуляции. (шестнадцатеричный код вкладки - 09).

Он делает это и для других персонажей в других потоках.

Еще несколько примеров выходных данных:

\ X10 \ x00 @ \ x00 \

\ X05q \ x00 \ x00 \

\ X069\x9c\ п \ x00

Итак, мой вопрос: могу ли я преобразовать этот поток байтов в один без этих дополнительных символов?

В качестве альтернативы, как мне преобразовать что-то вроде '\t' в шестнадцатеричное, чтобы оно возвращало '09'?

Обновить:

Оказывается, я создавал строки для преобразования, используя функцию, которая возвращала бы \t011c88 вместо первого потока.

Оставив его в покое и используя stream.encode("hex"), сработал

1 ответ

Решение

repr Функция по умолчанию экранирует все непечатаемые символы, как вы видели.

Чтобы получить представление в шестнадцатеричном формате, используйте

string.encode("hex")

ПРИМЕЧАНИЕ. Исходный поток байтов верен, вы должны преобразовывать его в шестнадцатеричный формат только для просмотра, а не для целостности. Это только показывает данные странным способом.

Другие вопросы по тегам