首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python实现端口扫描

用Python实现端口扫描
EN

Stack Overflow用户
提问于 2015-08-23 03:28:39
回答 2查看 639关注 0票数 1

我有一个程序可以扫描远程主机上的开放端口。完成扫描需要很长时间。我想让它快一点。

下面是我的代码:

端口扫描

代码语言:javascript
运行
复制
import socket
import subprocess

host = input("Enter a remote host to scan: ")
hostIP = socket.gethostbyname(host)

print("Please wait, scanning remote host", hostIP)

try:
    for port in range(1,1024):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    result = sock.connect_ex((hostIP, port))
    if result == 0:
        print("Port: \t Open".format(port))
        sock.close()

你们这些Python巫师能帮我一下吗?提前谢谢。

EN

Stack Overflow用户

发布于 2015-08-23 03:32:25

这个程序变得太简单了。它一次只监视一个端口,并且在一个端口上需要很长时间才能查看它是否正在侦听。因此,尝试减少侦听时间,如果它无法连接,则通过在run()中的"expect:“下为该数字设置递归限制,将其视为关闭。

就像这样,

代码语言:javascript
运行
复制
            try:
                # connect to the given host:port
                result = sock.connect_ex((hostIP, port))
                if result == 0:
                    print "%s:%d Open" % (hostIP, port)
                    sock.close()
            except: #pass
                sock.recurse += 1
                if sock.recurse < sock.limit: 
                    sock.run()
                else:
                    print "%s:%d Closed" % (hostIP, port)

还有其他方法可以通过导入threading()模块来提高效率,该模块可用于一次监视大量套接字。

这是关于线程的文档。

参考这个,https://docs.python.org/2/library/threading.html#

希望这对你有帮助。万事如意。

票数 -1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32159974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档