python-网络编程<实现主机的端口扫描>

本文介绍了一个简单的端口扫描程序,使用Python的socket库实现。该程序能够针对指定的IP地址和端口列表进行扫描,并输出开放端口的信息。文章包含了完整的源代码及注释说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、源码

1、结果展示

  先给结论,咱再说,程序运行结果如下:我以127.0.0.1为例
在这里插入图片描述

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

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大法即可。

  欢迎关注,点赞。与我交流一同学习python、Django、爬虫、docker、路由交换、web安全等一切东西。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

先剃度再出家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值