首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scapy原始套接字

Scapy原始套接字
EN

Stack Overflow用户
提问于 2014-04-14 13:06:31
回答 2查看 4.8K关注 0票数 2

我尝试用Python中的原始套接字并使用Scapy来实现3路Hadn抖动。

守则是:

代码语言:javascript
复制
s=socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.IPPROTO_TCP)
ss=StreamSocket(s)
iph=IPheader()
syn = TCP(sport=TCP_SOURCE_PORT,dport=TCP_DESTINATION_PORT, flags="S")
synack = ss.sr1(iph/syn)
myack = iph/TCP(dport=synack[TCP].sport, sport=synack[TCP].dport, seq=synack[TCP].ack, ack=synack[TCP].seq+1, flags="A")
ss.send(myack)

IPheader()方法返回一个替罪羊IP报头。

在运行脚本时,我会得到以下错误:

代码语言:javascript
复制
ERROR: --- Error in child 3057
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 89, in sndrcv
pks.send(p)
File "/usr/lib/python2.7/dist-packages/scapy/supersocket.py", line 34, in send
return self.outs.send(sx)
error: [Errno 6] No such device or address
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-14 16:26:37

我看到了您的代码可能出现的几个问题:

  • 在调用StreamSocket()之前,您需要建立一个具有常规套接字的连接。因此,您需要建立一个连接,类似于行s.connect(("10.1.1.1",9000))之前的ss=StreamSocket(s)。更多信息可以找到这里
  • 您可能需要更正基套接字类型。我建议一些类似s=socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)的东西。有关更多信息,请查看
票数 2
EN

Stack Overflow用户

发布于 2016-02-25 16:55:19

设备没有响应您的SYN数据包,因为原始套接字不会这样做。你必须手动发送SYN。另外,Wireshark和TCP将序列号显示为相对的。为了显示实际数字,必须关闭此选项。第三,您可以手动设置序列号,也可以使用

代码语言:javascript
复制
TCP(sport = port1, dport = port2, flags="A", seq = random.getrandbits(32), ack = MY_ACK)

代码语言:javascript
复制
TCP(sport = port1, dport = port2, flags="A", seq = 01395, ack = MY_ACK)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23060928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档