Отправка пакета Raw ethe rnet, содержащего IPv4 и TCP SYN, но без получения пакета SYN / ACK в ответном пакете - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь отправить пакет 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

...