Я реализую рукопожатие TCP с использованием сокетов RAW с помощью python. Ядро Linux, однако, очень раздражает, поскольку оно пытается обрабатывать определенные аспекты этого протокола.TCP рукопожатие с использованием python RAW-сокетов
Например, когда я отправляю пакет SYN, сервер ответил SYN, ACK-пакетом; к которому ядро автоматически отвечает RST-пакетом, сбрасывающим соединение. Я преодолел это мой сбросив все такие пакеты сброса, используя следующую iptable правило:
-A OUTPUT -p tcp -m tcp --sport 999 --tcp-flags RST RST -j DROP
Теперь я хочу, чтобы получить пакет SYN, ACK, посланный сервером и распечатать его. Но я не получаю ничего, когда я делаю следующее:
a = self.s.recvfrom(4096)
Я подозреваю, что ядро сбросив SYN, ACK прежде, чем я могу ПРИЕМ его с помощью моего гнезда. Кто-нибудь знает разумное обходное решение?
Не могли бы вы использовать Scapy? https://github.com/secdev/scapy/ –
Может ли scapy оживить и разобрать SYN, ACK? По верил, что этот пакет был сброшен ядром – SivaDotRender
Не знаю, я предложил его как возможную библиотеку более высокого уровня, которую вы можете использовать (или, по крайней мере, учиться у), и пытаться все это сделать с нуля. –