Python:localhost上的端口扫描

Python:localhost上的端口扫描,python,sockets,port,Python,Sockets,Port,我已经用python开发了一个端口扫描程序,它可以检查公共和本地IP的开放端口。 公共IP上的Portscann可以正常工作,但当我在本地主机(127.0.0.1或0.0.0.0)上尝试scann时,它会在每个端口上显示此端口已关闭 代码如下: try: for port in range(int(sport), int(eport) + 1): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

我已经用python开发了一个端口扫描程序,它可以检查公共和本地IP的开放端口。 公共IP上的Portscann可以正常工作,但当我在本地主机(127.0.0.1或0.0.0.0)上尝试scann时,它会在每个端口上显示此端口已关闭

代码如下:

    try:
    for port in range(int(sport), int(eport) + 1):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        result = sock.connect_ex((remoteServer, port))
        if result == 0:
            print("[+] Port " + str(port) + " = [Open]")
        else:
            print("[-] Port " + str(port) + " = [Closed]")
        sock.close()
except:
    print("\nScan failed!")
    time.sleep(2)
    print("Check your IP adress.\n")
    time.sleep(3)
    print("The programm will be closed...")
    time.sleep(4)
    sys.exit(0)
  • 也许您的服务器只是绑定了公共ip(也许在它的配置文件中,有一个关于它绑定的ip的配置),所以其他人可以访问这个服务器
  • 如果服务器绑定127.0.0.1(环回地址),可能除了您自己之外,其他人无法访问它

  • 所以我认为第一种情况(绑定公共ip),它没有绑定127.0.0.1(环回地址),导致扫描失败。或者换句话说,公共ip和环回地址代表两个不同的网络设备。

    我不完全理解这个问题,到底是什么问题?首先,我扫描了“scanme.nmap.org”,从端口20到端口25(外部)。结果=20,21,23,24和25已关闭,端口22已打开…到目前为止一切正常。但当我尝试扫描127.0.0.1(本地)时,它会显示端口20到25已关闭…您在这些端口上运行任何服务吗?是的…我也尝试了54、80等。但没有任何效果,并且它没有被防火墙阻止…是的,但我只创建了一个套接字,并且它在设备上本地运行…1。在socket服务器配置中,尝试绑定0.0.0.0(不是您的实际公共ip和环回地址),这可能对您的情况有用。2.或者使用另一种方式,您可以在scanner.py中获取公共ip,以避免扫描回圈地址。