Я пытаюсь отправить пакет ethe rnet, содержащий пакет IPv4 и пакет TCP, используя Python raw socket. Флаг SYN в пакете TCP установлен на 1. Пакет адресован веб-серверу apache, работающему на моем локальном компьютере. Моя цель - отправить пакет SYN и получить в ответ пакет SYN / ACK. Но сервер Apache не отвечает пакетом SYN / ACK. С сервером Apache все в порядке. Я создал ethe rnet заголовок, заголовок IPv4, а также заголовок TCP. Когда я отправляю пакет, он отображается в моих записях Wireshark. Я проверил контрольную сумму как заголовка IPv4, так и заголовка TCP в wirehark, и они верны. Я попытался решить проблему с удалением и добавлением параметров TCP из заголовка TCP, но все еще не получил положительного результата. Поскольку пакет отображается в Wireshark захватывает, он отправляется по сети. Но сервер apache не отвечает на мой пакет SYN. Я создал простой сервер с использованием python и попробовал весь процесс, но не смог получить пакет SYN / ACK. Здесь прилагается снимок захвата Wireshark. Цель состоит в том, чтобы достичь полного установления связи TCP с использованием программирования сокетов RAW.
сокет создается, как показано ниже ...
senderSocker = socket.socket
(
family=socket.AF_PACKET,
type=socket.SOCK_RAW,
proto=socket.htons(0x0003),
fileno=None
)
Пакет отправляется следующим образом ...
senderSocket.send(ethernetHeader + IPv4Header + TCPHeader + data)
Спасибо
Захват Wireshark