端口扫描的实现
- 一、源码
- 1、结果展示
- 2、源码
- 二、源码注释
- 1、所使用依赖包
- 2、函数功能
- 3、代码拓展
- 三、可运行环境
一、源码
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大法即可。