端口扫描详解以及端口扫描器(万字小结)(下)

简介: 端口扫描详解以及端口扫描器(万字小结)

易语言版的端口扫描器


640.png

核心代码如下:(以下代码仅供学习交流使用)


    .版本 2.支持库 iext2.支持库 EThread.支持库 eAPI
    .程序集 窗口程序集1
    .子程序 __启动窗口_创建完毕
    .子程序 _按钮1_被单击.局部变量 末地址, 文本型.局部变量 始地址, 文本型.局部变量 循环地址, 整数型, , , 用IP地址作循环用.局部变量 循环端口, 整数型, , , 用作端口循环用.局部变量 I, 整数型
    已扫描数量 = 0进程数 = 0按下停止 = 假.如果真 (按钮1.标题 = “停止”)    按下停止 = 真    返回 ().如果真结束.如果真 (IP开始.地址 = “”)    信息框 (“你必须填写开始IP地址”, 0, )    返回 ().如果真结束.如果 (IP结束.地址 = “”)    末地址 = IP开始.地址    末地址 = 取文本左边 (末地址, 倒找文本 (末地址, “.”, , 假))    末地址 = 末地址 + “254”    IP结束.地址 = 末地址.否则
    .如果结束.如果真 (IP结束.地址 = “”)    信息框 (“IP格式不对”, 0, ).如果真结束始地址 = IP开始.地址末地址 = IP结束.地址.如果 (比较IP大小 (始地址, 末地址) = 假)    信息框 (“开始地址不能大于结束地址”, 0, )    返回 ().否则
    .如果结束得到IP范围 (始地址, 末地址)  ' 调用过程给IP地址赋值.如果真 (得到端口号 () = 假)    信息框 (“你的端口设置有误,请检查”, 0, )    编辑框1.起始选择位置 = 1    编辑框1.被选择字符数 = 取文本长度 (编辑框1.内容).如果真结束
    扫描端口 ()
    .子程序 得到端口号, 逻辑型, , 将端口号存入数组,输入有错就返回假.局部变量 临时文本, 文本型, , "0".局部变量 开始端口, 文本型.局部变量 结束端口, 文本型.局部变量 临时数值, 整数型.局部变量 I, 整数型.局部变量 临时端口, 文本型
    重定义数组 (端口号, 假, 0).如果真 (删首尾空 (编辑框1.内容) = “”)    信息框 (“没有填端口号”, 0, )    返回 (假).如果真结束.如果真 (寻找文本 (编辑框1.内容, “-”, , 假) > 0)    开始端口 = 取文本左边 (编辑框1.内容, 寻找文本 (编辑框1.内容, “-”, , 假) - 1)    结束端口 = 取文本右边 (编辑框1.内容, 取文本长度 (编辑框1.内容) - 寻找文本 (编辑框1.内容, “-”, , 假))    .如果真 (到数值 (开始端口) > 到数值 (结束端口))        返回 (假)    .如果真结束    临时数值 = 到数值 (结束端口) - 到数值 (开始端口)    临时端口 = 开始端口    .计次循环首 (临时数值, I)        加入成员 (端口号, 临时端口)        临时端口 = 到文本 (到数值 (临时端口) + 1)    .计次循环尾 ()    加入成员 (端口号, 结束端口)    返回 (真).如果真结束端口号 = 分割文本 (编辑框1.内容, “,”, )返回 (真)
    .子程序 扫描端口, , 公开, 开始扫描.局部变量 I, 整数型.局部变量 J, 整数型
    进度条1.最大位置 = 取数组成员数 (IP地址) × 取数组成员数 (端口号)进度条1.最小位置 = 1进度条1.位置 = 1按钮1.标题 = “停止”列表框1.清空 ()
    .计次循环首 (取数组成员数 (IP地址), I)    .如果真 (按下停止 = 真)        编辑框1.禁止 = 假        按钮1.标题 = “开始(&S)”        返回 ()    .如果真结束    启动线程 (&扫描, I)  ' 启动进程进行扫描.计次循环尾 ()
    .子程序 扫描.参数 IP, 整数型.局部变量 J, 整数型
    .计次循环首 (取数组成员数 (端口号), J)    扫描子程序 (到整数 (端口号 [J]), IP地址 [IP])    .如果真 (按下停止 = 真)        编辑框1.禁止 = 假        按钮1.标题 = “开始(&S)”        返回 ()    .如果真结束
    .计次循环尾 ()
    .子程序 扫描子程序.参数 端口, 整数型, , 要检测的端口.参数 IP, 文本型, , 要检测的IP地址
    信息.标题 = “当前IP地址:” + IP + “ 检测端口:” + 到文本 (端口)
    .如果真 (端口检测 (端口, IP))    列表框1.加入项目 (IP + “:” + 格式化文本 (“%-5ld”, 端口) + “开放”, ).如果真结束' 输出调试文本 (当前IP + “:” + 到文本 (端口) + “ 已扫描了:” + 到文本 (已扫描数量))进度条1.位置 = 进度条1.位置 + 1.如果真 (按下停止 = 真)    编辑框1.禁止 = 假    按钮1.标题 = “开始(&S)”    返回 ().如果真结束.如果真 (进度条1.位置 ≥ 进度条1.最大位置)    进度条1.位置 = 0    编辑框1.禁止 = 假    按钮1.标题 = “开始(&S)”.如果真结束进程数 = 进程数 - 1退出许可区 (许可证号)
    .子程序 得到IP范围.参数 开始地址, 文本型.参数 结束地址, 文本型.局部变量 临时变量1, 文本型.局部变量 临时变量2, 文本型.局部变量 尾数, 文本型, , , 保存循环时的IP地址最尾那个数
    临时变量1 = 开始地址重定义数组 (IP地址, 假, 0)IP数量 = 0.判断循环首 (比较IP大小 (临时变量1, 结束地址))    加入成员 (IP地址, 临时变量1)    临时变量1 = IP加1 (临时变量1)    IP数量 = IP数量 + 1    ' 列表框1.加入项目 (IP地址 [IP数量], ).判断循环尾 ()
    .子程序 IP加1, 文本型, , 将一个IP 地址的值加1.参数 开始地址, 文本型.局部变量 J, 整数型.局部变量 分隔点位置1, 整数型, , "3".局部变量 临时变量1, 文本型, , "4".局部变量 临时位置, 整数型.局部变量 临时变量, 文本型
    J = 1.计次循环首 (取文本长度 (开始地址), 临时位置)    .如果真 (取文本中间 (开始地址, 临时位置, 1) = “.”)        分隔点位置1 [J] = 临时位置        .如果真 (J = 1)            临时变量1 [J] = 取文本中间 (开始地址, 1, 分隔点位置1 [J] - 1)        .如果真结束        .如果真 (J = 2)            临时变量1 [J] = 取文本中间 (开始地址, 分隔点位置1 [J - 1] + 1, 分隔点位置1 [J] - 分隔点位置1 [J - 1] - 1)        .如果真结束        .如果真 (J = 3)            临时变量1 [J] = 取文本中间 (开始地址, 分隔点位置1 [J - 1] + 1, 分隔点位置1 [J] - 分隔点位置1 [J - 1] - 1)            临时变量1 [J + 1] = 取文本右边 (开始地址, 取文本长度 (开始地址) - 分隔点位置1 [J])            跳出循环 ()        .如果真结束        J = J + 1    .如果真结束
    .计次循环尾 ()J = 4.判断循环首 (J > 0)    .如果真 (到数值 (临时变量1 [J]) ≤ 254)        .如果真 (J = 1)            临时变量 = 到文本 (到数值 (临时变量1 [J]) + 1) + “.1.1.1”            跳出循环 ()        .如果真结束        .如果真 (J = 4)            临时变量 = 临时变量1 [1] + “.” + 临时变量1 [2] + “.” + 临时变量1 [3] + “.” + 到文本 (到数值 (临时变量1 [J]) + 1)            跳出循环 ()        .如果真结束        .如果真 (J = 2)            临时变量 = 临时变量1 [1] + “.” + 到文本 (到数值 (临时变量1 [J]) + 1) + “.1.1”            跳出循环 ()        .如果真结束        .如果真 (J = 3)            临时变量 = 临时变量1 [1] + “.” + 临时变量1 [2] + “.” + 到文本 (到数值 (临时变量1 [J]) + 1) + “.1”            跳出循环 ()        .如果真结束
        .如果真结束    J = J - 1.判断循环尾 ()' 结果:返回 (临时变量)
    .子程序 比较IP大小, 逻辑型, , 如果开始IP大于结束IP则返回真,否则返回假.参数 开始地址, 文本型.参数 结束地址, 文本型.局部变量 临时位置, 整数型.局部变量 临时变量1, 文本型, , "4".局部变量 临时变量2, 文本型, , "4".局部变量 J, 整数型.局部变量 分隔点位置1, 整数型, , "3".局部变量 分隔点位置2, 整数型, , "3"
    .如果真 (开始地址 = 结束地址)    返回 (真).如果真结束J = 1.计次循环首 (取文本长度 (开始地址), 临时位置)    .如果真 (取文本中间 (开始地址, 临时位置, 1) = “.”)        分隔点位置1 [J] = 临时位置        .如果真 (J = 1)            临时变量1 [J] = 取文本中间 (开始地址, 1, 分隔点位置1 [J] - 1)        .如果真结束        .如果真 (J = 2)            临时变量1 [J] = 取文本中间 (开始地址, 分隔点位置1 [J - 1] + 1, 分隔点位置1 [J] - 分隔点位置1 [J - 1] - 1)        .如果真结束        .如果真 (J = 3)            临时变量1 [J] = 取文本中间 (开始地址, 分隔点位置1 [J - 1] + 1, 分隔点位置1 [J] - 分隔点位置1 [J - 1] - 1)            临时变量1 [J + 1] = 取文本右边 (开始地址, 取文本长度 (开始地址) - 分隔点位置1 [J])            跳出循环 ()        .如果真结束        J = J + 1    .如果真结束
    .计次循环尾 ()J = 1.计次循环首 (取文本长度 (结束地址), 临时位置)    .如果真 (取文本中间 (结束地址, 临时位置, 1) = “.”)        分隔点位置2 [J] = 临时位置        .如果真 (J = 1)            临时变量2 [J] = 取文本中间 (结束地址, 1, 分隔点位置2 [J] - 1)        .如果真结束        .如果真 (J = 2)            临时变量2 [J] = 取文本中间 (结束地址, 分隔点位置2 [J - 1] + 1, 分隔点位置2 [J] - 分隔点位置2 [J - 1] - 1)        .如果真结束        .如果真 (J = 3)            临时变量2 [J] = 取文本中间 (结束地址, 分隔点位置2 [J - 1] + 1, 分隔点位置2 [J] - 分隔点位置2 [J - 1] - 1)            临时变量2 [J + 1] = 取文本右边 (结束地址, 取文本长度 (结束地址) - 分隔点位置2 [J])            跳出循环 ()        .如果真结束        J = J + 1    .如果真结束
    .计次循环尾 ().计次循环首 (4, J)    .如果真 (到数值 (临时变量1 [J]) < 到数值 (临时变量2 [J]))        ' 输出调试文本 (开始地址 + “<” + 结束地址)        返回 (真)    .如果真结束
    .计次循环尾 ()返回 (假)
    .子程序 _IP开始_字符输入, 整数型.参数 字符代码, 整数型
    输出调试文本 (IP开始.地址)
    .子程序 _保存_被选择.局部变量 文件号, 整数型.局部变量 I, 整数型
    .如果真 (列表框1.取项目数 () < 1)    信息框 (“没有扫描到可用内容”, 0, )    返回 ().如果真结束通用对话框1.文件名 = IP开始.地址 + “-” + IP结束.地址通用对话框1.过滤器 = “文本文件(*.txt)|*.txt|所有文件(*.*)|*.*”通用对话框1.默认文件后缀 = “.txt”.如果真 (通用对话框1.打开 ())    .如果真 (通用对话框1.文件名 ≠ “”)        文件号 = 打开文件 (通用对话框1.文件名 + 通用对话框1.默认文件后缀, #重写, )        .如果真 (文件号 = 0)            返回 ()        .如果真结束        .计次循环首 (列表框1.取项目数 (), I)            写文本行 (文件号, 列表框1.取项目文本 (I))        .计次循环尾 ()        关闭文件 (文件号)        信息框 (“保存成功:” + 通用对话框1.文件名 + 通用对话框1.默认文件后缀, 0, )    .如果真结束
    .如果真结束
    .子程序 _退出_被选择
    结束 ()
    .子程序 _浏览器打开_被选择.局部变量 HTTP地址, 文本型
    HTTP地址 = “http://” + 到IP地址 ()' 系统执行 (取窗口句柄 (), “Open”, HTTP地址, “\0”, “\0”, 1)运行 (#引号 + “C:\Program Files\Internet Explorer\IEXPLORE.EXE” + #引号 + “ ” + HTTP地址 + “:” + 列表端口 (), 假, )
    .子程序 到IP地址, 文本型, , 返回列表框中的经过格式化后的IP 地址
    返回 (取文本左边 (列表框1.取项目文本 (列表框1.现行选中项), 寻找文本 (列表框1.取项目文本 (列表框1.现行选中项), “:”, , 假) - 1))
    .子程序 _FTP打开_被选择
    运行 (#引号 + “C:\Program Files\Internet Explorer\IEXPLORE.EXE” + #引号 + “ ” + “FTP://” + 到IP地址 () + “:” + 列表端口 (), 假, )
    .子程序 _SQL打开_被选择
    .如果真 (到IP地址 () = “”)    返回 ().如果真结束.如果 (信息框 (“你想用图形方式吗?”, #确认取消钮, ) = #确认钮)    运行 (“isqlw -S ” + 到IP地址 (), 假, ).否则    运行 (“cmd.exe /c isql -S ” + 到IP地址 () + “:” + 列表端口 (), 假, ).如果结束
    .子程序 _超级终端打开_被选择
    .如果 (到IP地址 () = “”)    返回 ().否则
        运行 (“mstsc -V ” + 到IP地址 () + “:” + 列表端口 (), 假, )
    .如果结束
    .子程序 列表端口, 文本型, , 列表项选中项的端口
    ' 临时文本=取文本中间(列表框1.取项目文本(,返回 (删首尾空 (取文本中间 (列表框1.取项目文本 (列表框1.现行选中项), 寻找文本 (列表框1.取项目文本 (列表框1.现行选中项), “:”, , 假) + 1, 5)))
    .子程序 _删除此项_被选择
    .如果真 (列表框1.取项目数 () = 0)    返回 ().如果真结束列表框1.删除项目 (列表框1.现行选中项)
    .子程序 _关于端口扫描器_被选择
    信息框 (“lmonlove7端口扫描器V1.0” + #换行符 + “程序设计:lemonlove7” + #换行符 + “ QQ:2103950795”, 0, , )
    .子程序 _按钮2_被单击
    编辑框1.内容 = “21,25,80,135,138,139,445,1433,3389,4889,5631”
    .子程序 _列表框1_鼠标右键被按下, 逻辑型.参数 横向位置, 整数型.参数 纵向位置, 整数型.参数 功能键状态, 整数型
    .如果真 (列表框1.取项目数 () > 0)    弹出菜单 (IP操作, 取鼠标水平位置 () - 10, 取鼠标垂直位置 () - 15)
    .如果真结束
    .子程序 __启动窗口_可否被关闭, 逻辑型
    .子程序 _按钮3_被单击
    IP结束.地址 = IP开始.地址置剪辑板文本 (IP开始.地址)
    .子程序 _按钮4_被单击
    载入 (域名转IP, , 真)


    使用效果

    如下图


    640.png


    结尾


    扫描器并不是一个直接的攻击网络漏洞的程序,它仅仅能帮助我们发现目标机的某些内在的弱点。以后会持续输出文章,师傅们轻喷

    防止链接失效,完整代码以及便携版



    相关文章
    |
    网络协议 Unix 网络安全
    端口扫描详解以及端口扫描器(万字小结)(上)
    端口扫描详解以及端口扫描器(万字小结)
    端口扫描详解以及端口扫描器(万字小结)(上)
    |
    4月前
    |
    弹性计算 应用服务中间件 Linux
    阿里云服务器开放端口完整图文教程
    笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
    697 1
    阿里云服务器开放端口完整图文教程
    |
    4月前
    |
    弹性计算 运维 数据安全/隐私保护
    云服务器 ECS产品使用问题之如何更改服务器的IP地址或端口号
    云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
    |
    3月前
    |
    缓存 NoSQL 网络安全
    【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
    【Azure Redis 缓存】使用开源工具redis-copy时遇见6379端口无法连接到Redis服务器的问题
    |
    4月前
    |
    网络协议 Linux Unix
    面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
    面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
    129 0
    面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
    |
    3月前
    |
    网络协议
    【qt】TCP的监听 (设置服务器IP地址和端口号)
    【qt】TCP的监听 (设置服务器IP地址和端口号)
    207 0
    |
    4月前
    |
    存储 安全 网络安全
    服务器设置了端口映射之后外网还是访问不了服务器
    服务器设置了端口映射之后外网还是访问不了服务器
    若依修改,若依部署在本地运行时的注意事项,后端连接了服务器,本地的vue.config.js要先改成localhost:端口号与后端匹配,部署的时候再改公网IP:端口号
    若依修改,若依部署在本地运行时的注意事项,后端连接了服务器,本地的vue.config.js要先改成localhost:端口号与后端匹配,部署的时候再改公网IP:端口号
    |
    5月前
    |
    Java Android开发
    Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。
    【6月更文挑战第23天】 Java Socket编程示例:服务器开启在8080端口监听,接收客户端连接并打印消息。客户端连接服务器,发送&quot;Hello, Server!&quot;后关闭。注意Android中需避免主线程进行网络操作。
    103 4