我是一名有用的助手,可以为您翻译文本。
我正在尝试在Linux下使用Python打开一个原始套接字。
我的简单代码:
在这种情况下,您将收到一个包含IP和TCP标头的完整TCP数据包。如果您使用dstromberg的解决方案,您还将看到以太网标头。因此,这取决于您希望数据包有多“原始”。
我正在尝试在Linux下使用Python打开一个原始套接字。
我的简单代码:
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 5454))
我遇到了这个错误:
[ERROR] Protocol not supported
顺便提一下,我在Linux 12.04下使用Python 2.7.3运行代码时使用了root用户。
有人有线索吗?
更新:dstromberg 给出的 解决方案 是正确的。如果你想要整个数据包,那么使用他的解决方案。但是,还有另一种组合:
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
在这种情况下,您将收到一个包含IP和TCP标头的完整TCP数据包。如果您使用dstromberg的解决方案,您还将看到以太网标头。因此,这取决于您希望数据包有多“原始”。
也可以工作。
AF_UNIX
,而不是AF_INET
。 - Anthony