繁体   English   中英

Python Windows Raw套接字无效的绑定参数

[英]Python Windows raw socket invalid bind argument

我想在Windows中创建一个原始套接字,以连接到笔记本电脑上的特定接口。 我可以在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原生

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM