gpt4 book ai didi

Python Windows 原始套接字无效绑定(bind)参数

转载 作者:行者123 更新时间:2023-12-03 12:08:22 27 4
gpt4 key购买 nike

我想在 Windows 中创建一个原始套接字以连接到笔记本电脑上的特定接口(interface)。我让它在 Linux 上运行,但它在 Windows 中不起作用。

这是我在 Linux 中很好但在 Windows 中不行的代码:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
#s.bind(("192.168.1.100", 0))
s.bind((socket.gethostname(), 0))
#s.bind((socket.gethostbyname(socket.gethostname()), 0))

注释掉的行是我在这里找到的建议: Python Raw Socket to Ethernet Interface (Windows) 但它们对我不起作用。我总是收到这个错误:
Traceback (most recent call last):
File "D:/raw_socket.py", line 5, in <module>
s.bind((socket.gethostname(), 0))
OSError: [WinError 10022] An invalid argument was supplied

在研究此问题时,我无法找到解决方案。非常感谢任何帮助。

最佳答案

我在另一篇文章中添加了答案:https://stackoverflow.com/a/53681616/5459467
您可以检查它的代码示例

简答:由于 Windows 限制,您不能在 Python 中使用 native

但是您可以使用 来解决它。 Npcap/Winpcap .但是,这需要在它和 Python 之间有一个兼容性包装器(它们只提供一个 dll API 来使用)

存在各种这些包装器,最跨平台的包装器是 scapy,因为它创建的套接字将在 Windows 上使用 Npcap/Winpcap,在 Linux 上使用套接字模块,在 OSX 上使用 pcapy(或类似)......

关于Python Windows 原始套接字无效绑定(bind)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51843054/

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