Scapy,Socket和三向握手

时间:2019-11-25 11:01:22

标签: python networking scapy

我正在尝试使用Python / Scapy / Socket(Linux env)做一件很奇怪的事情。我想管理三向握手,然后回到通常的“套接字”管理。

这是我所做的:

import socket
from scapy.all import *

pkt = IP(src='192.168.1.2',dst='192.168.1.1')/TCP(sport=12345,dport=44144,flags='S',seq=1000)
SYN = bytes(pkt)

outs = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
outs.connect(('192.168.1.1',44144))
outs.setsockopt(socket.SOL_IP, socket.IP_HDRINCL, 1)

outs.sendto(SYN, ('192.168.1.1', 0))
raw_buffer = outs.recv(4096)

buffer = IP(raw_buffer)
my_ack = buffer.seq + 1
pkt=IP(src='192.168.1.2',dst='192.168.1.1')/TCP(sport=12345, dport=44144, flags='A', seq=1001, ack=my_ack)
ACK=bytes(pkt)
outs.sendto(ACK, ('192.168.1.1', 0))

到目前为止,连接已建立。然后,我尝试通过通常的“发送”方法使用套接字和创建的连接:

outs.send(bytes('AAA','utf8'))

这时我得到一个错误:

*** OSError: [Errno 22] Invalid argument

所以,我要尝试的是从RAW_SOCKET切换回系统处理的那个。在某些方面可能吗?

谢谢

0 个答案:

没有答案