簡體   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