【问题标题】:Python: Port scann on localhostPython:本地主机上的端口扫描
【发布时间】:2018-06-07 08:55:19
【问题描述】:

我在 python 中做了一个端口扫描器,可以检查公共和本地 IP 的开放端口。 公共 IP 上的 Portscann 工作正常,但是当我尝试在 localhost(127.0.0.1 或 0.0.0.0)上进行扫描时,它会在每个端口上说这是关闭的......

代码如下:

    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)

【问题讨论】:

  • 我没有完全理解这个问题,到底是什么问题?
  • 首先我从端口 20 到 25(外部)扫描了“scanme.nmap.org”。结果 = 20,21,23,24 和 25 已关闭,端口 22 已打开....到目前为止一切顺利。但是当我尝试扫描 127.0.0.1(本地)时,它说端口 20 到 25 已关闭...
  • 您有任何服务在这些端口上运行?
  • 是的....我也尝试了 54、80 等,但没有任何效果,它没有被防火墙阻止....

标签: python sockets port


【解决方案1】:
  1. 也许你的服务器只是绑定了公网ip(可能在它的配置文件里,有一个关于它绑定的ip的配置),所以这个服务器可以被其他人访问。
  2. 如果服务器绑定127.0.0.1(Loop back address),可能除了你自己之外其他人都无法访问。

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

【讨论】:

  • 是的,但我只创建了一个套接字,并且它在设备上本地运行...
  • 1.在您的套接字服务器配置中,尝试绑定 0.0.0.0(不是您的实际公共 ip 和环回地址),它可能对您的情况有用。 2.或者使用其他方式,你可以在你的scanner.py中获取你的公共ip,以避免扫描回环地址。
猜你喜欢
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多