2013-11-13 4 views
2

Я обрабатываю пакеты 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 и извлечь только данные из пакета? Благодаря

+1

Сторона примечания: вы должны печатать свой гарбелди-гек в гексагоне. Используйте «binascii.hexlify» в пакетных данных. –

+1

Если вы знаете, сколько байтов они берут, вы можете просто пропустить это количество байтов из ваших данных. – Ashalynd

+0

Спасибо Я был в состоянии использовать этот модуль, теперь я могу видеть ETH, IP и заголовок TCP данных в HEX, 0a4d2ac000030a4d2acf407b0800 4500033017bd40004006a9e8ac1f2e380c478f84 81b013c4c30e71fbc8d7d65b8018073c794500000101080a09e2e0c893db873e, как можно удалить ETH, IP и TCP информации от пакета, полученной с помощью функции .recv? Что-то похожее на это: http://www.binarytides.com/python-packet-sniffer-code-linux/ – spicyramen

ответ

0

Вы можете разобрать пакет как:

  • Первые 14 байтов Ethernet заголовок
  • Следующие 20 байт, вероятно, IP заголовок
  • аналогично, из заголовка IP, мы можем извлечь протокол мы используя и , наконец, см. ссылку на протокол для анализа данных из этого

Например. Пакет TCP-соединений приходит как: eth_header+IP_header+TCP_Header+payload(data) Каждый заголовок имеет свою конкретную длину и извлечение информации из заголовков потребует от вас использования структурных модулей в python (см. Struct.unpack ("", "")). Извлечение информации заголовка также потребует знания структуры заголовков. Наконец, вы можете вычислить позицию полезной нагрузки и, наконец, извлечь ее.

В частности, пожалуйста, обратитесь к этому link для получения дополнительной информации. Надеюсь, что это поможет

Смежные вопросы