windows下用python 3 写udp端口探测时,使用SOCK_RAW没有root权限怎么办?

非常简单的代码如下:

import socket

if __name__ == '__main__':
    s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    host = 'www.baidu.com'
    ip = socket.gethostbyname(host)
    port = 80
    print(ip)
    address = (ip,port)

    message = 'abc'
    s.sendto(message.encode(),address)

    icmp = socket.getprotobyname("icmp")
    print(icmp)
    try:
        sock_icmp = socket.socket(socket.AF_INET,socket.SOCK_RAW,icmp)
    except:
        print(socket.error)

    recPacket,addr = sock_icmp.recvfrom(64)
    print(recPacket)
运行时会报错:

clipboard.png

试过用管理员身份运行cmd,然后执行这个脚本,但是结果一样。
百度了很久,一直没找到解决办法。
希望会的童鞋指点一下,不胜感激。

或者你觉得我的udp端口探测这样写错了,也欢迎指出交流。

阅读 6.2k
1 个回答

楼主啊,你这不是没权限,而是未定义啊。能否把OSError详细信息贴下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进