端口扫描的实现

  • 一、源码
  • 1、结果展示
  • 2、源码
  • 二、源码注释
  • 1、所使用依赖包
  • 2、函数功能
  • 3、代码拓展
  • 三、可运行环境


一、源码

1、结果展示

  先给结论,咱再说,程序运行结果如下:我以127.0.0.1为例

python 实现扫描局域网ip python 局域网主机扫描_主函数

  可见功能是成功实现了的。那废话不多说,上源码。

2、源码

  源码如下:

import socket

# 计数全局变量
total = 0

def main(Host,Port):
    for IP in Host:
        print("-----主机:"+IP+"扫描开始"+"-----")
        for port in Port:
            Scaning(IP,port)

        print("-----主机:"+IP+"扫描结束"+"-----")
        print(IP + "共有"+ str(total) +"个端口开启!")
        print()

def Scaning(IP,port):
    # 计数
    global total
    try:
    	# socket.AF_INET是IP协议;socket.SOCK_STREAM是TCP链接 
        Socket_tcp = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        # 发起连接,连接不成功会返回socket.error错误
        Socket_tcp.connect((IP,port))
        # 计数
        total += 1
        print("%s已开启端口:%d"%(IP,port))
        # 关闭连接
        Socket_tcp.close()
    except:
        pass

# 函数入口
if __name__ == '__main__':
    # 需扫描的主机IP,list中为字符串,可写多个IP
    Host = ["127.0.0.1"]
    # 需扫描的端口
    Port = [22, 80, 110, 445, 8080, 818, 443, 53, 3389, 3306, 63342]
    # 沉默1秒
    socket.setdefaulttimeout(1)

    # 主函数
    main(Host,Port)

二、源码注释

1、所使用依赖包

  这个程序非常简单,只用到了一个sockrt库:菜鸟教程

# 它可以封装实现向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯
import socket

  编程实现端口扫描中,我们就是通过模拟客户端连接到主机。主要是用的是:socket.connect(hosname, port ) 方法打开一个 TCP 连接到主机为 hostname 端口为 port 的目的主机。操作完成后需要关闭连接。

2、函数功能

  就俩函数,一个主函数,一个功能函数。

# 主函数,可看出程序执行顺序
def main(Host,Port):

# 功能函数,实现连接指定的主机
def Scaning(IP,port):

3、代码拓展

  这段代码特别的简单,但是它存在着很大的问题,此代码仅是实现了端口扫描的功能,但还是效率非常非常低!!!有兴趣的朋友可以使用多线程操作,这样可以非常有效的提升程序的运行效率。
  作者出代码改进的话 ,再等等吧。哈哈哈哈。。。。。

三、可运行环境

  编程是在python3.8.5版本下实现的,应该均可运行,没有不能的吧。也没有什么需要修改
的,CV大法即可。