gpt4 book ai didi

使用 Scapy 发送的 TCP SYN 从未被服务器接收,也未被 Wireshark 在环回接口(interface)上注意到

转载 作者:可可西里 更新时间:2023-11-01 02:50:14 34 4
gpt4 key购买 nike

我在 Windows 7(Python 3.6、Scapy 2.4.0)上对 Scapy 的基本用法有疑问。我也在这个系统上运行 Npcap 0.99r7 和 Wireshark 2.6.2。系统只有一个无线网络接口(interface)加上Npcap环回接口(interface)。

我设置了这个非常经典的 TCP 服务器...:

import socket

host = '127.0.0.1'
port = 8089
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
connection, address = s.accept()
while 1:
try :
data = connection.recv(1024)
except ConnectionAbortedError:
break
if data:
print('Received: %s' % (data.decode ('utf-8')))
connection.sendall('Data received'.encode())
connection.close()
s.close()

...我设置了这个非常经典的 TCP 客户端:

import socket

host = '127.0.0.1'
port = 8089
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send('Hello, world!'.encode())
data = s.recv(1024)
print('Received: %s' % (data.decode('utf-8')))
s.close()

两者都很好。 Wireshark 会报告环回接口(interface)上的整个 TCP 流量。

现在,我正在运行服务器,我尝试运行那段代码,它只会使用 Scapy 将 SYN 发送到服务器:

from scapy.layers.inet import IP
from scapy.layers.inet import TCP
from scapy.sendrecv import *

dstHost='127.0.0.1'
dstPort = 8089
packet = IP(src='127.0.0.1', dst=dstHost)/TCP(dport=dstPort, flags='S')
response=sr1(packet, timeout=10)
response.display()

Python 报告:

Begin emission:
..Finished sending 1 packets.
......Traceback (most recent call last):

File "R:/Documents/Projets/python/hacking/scan.py", line 46, in <module>
response.display()
AttributeError: 'NoneType' object has no attribute 'display'
Received 8 packets, got 0 answers, remaining 1 packets

此外,Wireshark 在环回接口(interface)上看不到任何东西。有人可以给个提示吗?

更新1

正如建议的那样,我尝试使用 sendp() 而不是 send() 的更明确的代码,因为我们在这里讨论第 2 层:

route_add_loopback()
packet = Loopback()/IP(src='127.0.0.1', dst='127.0.0.1')/TCP(dport=8089, flags='S')
sendp(packet,iface='Npcap Loopback Adapter')

不幸的是,Wireshark 不会在任何一个接口(interface)(“Intel(R) Centrino(R) Advanced-N 6235”和“Npcap Loopback Adapter”)上嗅探数据包。

注意需要调用route_add_loopback(),否则show_interfaces()不会报告'Npcap Loopback Adapter',这意味着sendp () 将失败。在route_add_loopback()之后调用conf.route.resync()可以恢复Scapy路由表,但是结果是一样的:Wireshark没有嗅探数据包在任一界面上。

如果有人能找到一些运行在 Windows 7 上的 Python 代码片段,可以成功地在“Npcap Loopback Adapter”上发送一个简单的 TCP 数据包,欢迎他...

最佳答案

环回接口(interface)不是“常规”接口(interface);对于 Windows 尤其如此。

您可以通过运行以下命令来检查 Scapy 用于发送数据包的路由:packet.route()

如果显示的路由不使用环回接口(interface),您可以尝试运行(这是特定于 windows 的)route_add_loopback() 并重试。

另一种选择是使用 srp1() 代替 sr1(),并将环回接口(interface)指定为 iface= 参数。

关于使用 Scapy 发送的 TCP SYN 从未被服务器接收,也未被 Wireshark 在环回接口(interface)上注意到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51579229/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com