3ウェイハンドシェイクにscapyを使用して、リクエストを受信して応答を受信しています。しかし、FINフラグが設定されていると応答してTCPパケットを取得しています。私は要求されたページでHTTPパケットを期待しています。どこが間違っていますか?3ウェイハンドシェイクとPythonでscapyを使用してリクエストを取得
import sys
import socket
from scapy.all import *
# 3 way handshake
ip=IP(dst="webs.com")
SYN=TCP(sport=80, flags="S", seq=100, dport=80)
SYNACK=sr1(ip/SYN)
my_ack = SYNACK.seq + 1
ACK=TCP(sport=80, flags="A", seq=101, ack=my_ack, dport=80)
send(ip/ACK)
# request
PUSH = TCP(sport=80, dport=80, flags='PA', seq=102, ack=my_ack)
payload = "GET/HTTP/1.1\r\nHost: webs.com\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/58.0.3029.110 Chrome/58.0.3029.110 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.8\r\n\r\n"
reply= sr1(ip/PUSH/payload, timeout=10)
Wiresharkの結果
3ウェイハンドシェイク中にRSTパケットが送信される理由は何ですか? – tarun14110
原因Scapyは独自のソケットを作成し、TCP/IPスタック全体をバイパスします。カーネルはそれを知りませんし、接続を要求しなかったハンドシェイクの第2部分に応答してRSTパケットを正しく送信します。 – Noob123