Как собрать TCP-пакеты в Python? - PullRequest
6 голосов
/ 07 марта 2011

Как собрать TCP-пакеты в Python?Существуют ли какие-либо инструменты для этого?

Спасибо!: -)

Ответы [ 2 ]

13 голосов
/ 27 марта 2011

Чтобы выполнить сборку TCP, вам нужно использовать что-то вроде pynids http://jon.oberheide.org/pynids/.

Вы также можете создать свой собственный файл, используя pylibpcap, dpkt или scapy.

Сборка TCP очень сложнас большим количеством крайних случаев.Я бы не рекомендовал делать это самостоятельно, если вам нужно надежное решение.

4 голосов
/ 07 марта 2011

Да ... протокол TCP гарантирует, что прикладной уровень будет видеть только пакеты в порядке и в собранном виде.Теперь, если вы говорите о создании какого-либо низкоуровневого интерфейса для анализа самого IP-пакета, вы можете попробовать его с помощью RAW-сокетов , которые должны предоставить вам доступ к информации заголовка IP.Вот пример:

import socket

# the public network interface
HOST = socket.gethostbyname(socket.gethostname())

# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))

# Include IP headers
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)

# receive all packages
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)

# receive a package
print s.recvfrom(65565)

# disabled promiscuous mode
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)

безбожно взято из документации модуля сокета python: http://docs.python.org/library/socket.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...