python套接字setsockopt与原始套接字

时间:2018-03-28 09:02:32

标签: python sockets tcp

只需使用python socket raw发送tcp_syn。我遵循代码Django docs,但是当我运行代码时,我得到了以下错误:

Traceback (most recent call last):
  File "findPort.py", line 122, in <module>
    s.sendto(packet, (dest_ip , 27015 ))    # put this in a loop if you want to flood the target
socket.error: [Errno 22] Invalid argument

但是,当我删除setsockopt:

#s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)

代码运行顺利。不幸的是,因为你可以成像,wireshark会嗅探两个tcp头数据。一个是内核添加另一个是我自己添加。

所以问题是:

  1. 上面显示的错误是什么意思?
  2. 为什么我删除setsockopt错误消失?
  3. 如何使用python 2.7发送tcp_syn?
  4. 非常感谢提前~~~~~~

1 个答案:

答案 0 :(得分:0)

让我回答我自己的问题。 python无法发送原始套接字的主要原因是因为Mac / Windows不支持自定义TCP / UDP标头。如果你想编写自己的tcp / udp标头并将其发送到网络,请使用LINUX操作系统。