Ich implementiere einen TCP-Handshake mit Python-RAW-Sockets. Der Linux-Kernel ist jedoch ziemlich nervig, weil er versucht, bestimmte Aspekte dieses Protokolls zu behandeln.TCP-Handshake mit Python-RAW-Sockets
Zum Beispiel, wenn ich ein SYN-Paket sende, antwortete der Server mit einem SYN, ACK-Paket; auf die der Kernel automatisch mit einem RST-Paket antwortet und die Verbindung zurücksetzt. Ich überwand meine dies alle diese Reset-Pakete fallen die folgenden iptable Regel:
-A OUTPUT -p tcp -m tcp --sport 999 --tcp-flags RST RST -j DROP
Jetzt möchte ich das SYN-ACK-Paket empfangen durch den Server gesendet und ausdrucken. Aber ich erhalte nichts, wenn ich folgendes tun:
a = self.s.recvfrom(4096)
Ich vermute, dass der Kernel die SYN sinkt, ACK, bevor ich empf kann es meine Steckdose verwenden. Kennt jemand eine angemessene Problemumgehung?
Würden Sie Scapy verwenden? https://github.com/secdev/scapy/ –
Ist scapy in der Lage, das SYN, ACK wiederzubeleben und zu parsen? Mit der Annahme, dass dieses Paket durch den Kernel – SivaDotRender
fallen gelassen wurde, weiß ich nicht, schlug ich vor, es als eine mögliche höhere Bibliothek, die Sie verwenden können (oder zumindest von lernen), vs. versuchen, alles selbst von Grund auf neu zu machen. –