Я обрабатываю пакеты TCP. Это приложение работает как сниффер и создает пакеты SIP. Некоторые TCP SIP-пакеты фрагментированы, поэтому мне нужно их собрать.TCP-сегмент пакета python
Что я делаю, что первоначально я обрабатываю первое соединение TCP с помощью:
packet = s.recvfrom(sipLocatorConfig.NETWORK_MAX_SIZE)
После этого я получить данные, а затем, если фрагментарный я получить остальные, но с помощью .recv
:
socket.recv(sipLocatorConfig.NETWORK_TCP_MAX_SIZE)
Когда Я получил второй фрагмент, я получаю искаженные данные в начале при использовании .recv
, который, как я полагаю, является ETH, IP, TCP info:
M*?
M*[email protected]{
QyE
Как удалить эту информацию заголовка ETH, IP и TCP и извлечь только данные из пакета? Благодаря
Сторона примечания: вы должны печатать свой гарбелди-гек в гексагоне. Используйте «binascii.hexlify» в пакетных данных. –
Если вы знаете, сколько байтов они берут, вы можете просто пропустить это количество байтов из ваших данных. – Ashalynd
Спасибо Я был в состоянии использовать этот модуль, теперь я могу видеть ETH, IP и заголовок TCP данных в HEX, 0a4d2ac000030a4d2acf407b0800 4500033017bd40004006a9e8ac1f2e380c478f84 81b013c4c30e71fbc8d7d65b8018073c794500000101080a09e2e0c893db873e, как можно удалить ETH, IP и TCP информации от пакета, полученной с помощью функции .recv? Что-то похожее на это: http://www.binarytides.com/python-packet-sniffer-code-linux/ – spicyramen