Разделение частейи распечатывать его на экране - PullRequest
0 голосов
/ 25 апреля 2019

поэтому я перехватываю пакеты с помощью Pydivert.Я могу распечатать всю полезную нагрузку пакета, используя

print(packet.tcp.payload)

ИЛИ

print(packet.payload)

вывод был

b'\x03\x00\x34\xe2\xd1' //continued like this

одинаковый вывод в обоих случаях.Я распечатал тип, используя

print(type(packet.payload))

Это показало, что типом является

<class 'byte'>

Я хотел бы взять, скажем, первые 10 байтовых позиций из вывода и напечатать его итакже сохраните его в переменную, чтобы при изменении полезной нагрузки исключать начальные байты, а затем изменять оставшиеся части.Таким образом, я могу каким-то образом прикрепить разделенные байты к моим вновь созданным байтам, чтобы создать конечный поток байтов, например:

TotalByteStream = (initial bytes which I separated out) + b'\x03\x00\x34\xe2\xd1\x78\x23\x45\x79' //continued like this as needed
//And then do
packet.payload = TotalByteStream

Возможно ли это?

1 Ответ

0 голосов
/ 25 апреля 2019

Я не уверен, что понимаю ваш вопрос, но вы можете манипулировать bytes аналогично строкам.

Если у вас есть исходная полезная нагрузка:

>>> payload_1 = b'\x03\x00\xf4\xe2\xd1'
>>> type(payload_1)
<class 'bytes'>
>>> payload_1
b'\x03\x00\xf4\xe2\xd1'

Вы можете вырезать первые несколько байтов

>>> part = payload_1[:2]
>>> part
b'\x03\x00'

И позже создайте новую полезную нагрузку, где вы добавляете переменную part

>>> payload_2 = part + b'\xf5\xe5\xd5'
>>> payload_2
b'\x03\x00\xf5\xe5\xd5'
>>> payload_1
b'\x03\x00\xf4\xe2\xd1'

Таким образом, вы получаете новую полезную нагрузку с теми же начальными байтами. Отвечает ли это на ваш вопрос? Или я неправильно понял вашу проблему?

...