一、项目简介
1.1 项目博客地址
https://www.cnblogs.com/wl0724/
1.2 项目完成的功能与特色
功能:本项目采用的是B/S架构,用户只需在浏览器上输入运行之后的URL,就可以直接进入到界面当中,用户根据需要检测的端口输入到“请输入测试目标参数”的一下三个输入框中,点击开始扫描则后端开始进行扫描端口的操作,扫描结束后的结果就会返回到下方的Scan Result之中展示给用户。
特色:采用的是Python+Flask框架+Ajax技术+ Scapy模块+Nmap+多线程扫描实现端口的扫描查看开放的端口。
1.3 项目采用的技术栈
(1) Web前端框架采用HTML(通过使用框架,可以实现在同一浏览器窗口中加载多个页面的效果)+css(包含了基本的元素重置,页面排版、网格布局、表单样式、通用规则等代 码块,用于简化web前端开发的工作,提高工作效率)+js(将常用的方法进行封装,方便调取使用)
前端负责与人进行交互,读入数据并传入后端,接着后端进行逻辑处理,再由后端把数据传回前端,通过前端展示出来。
(2) Python编程技术:是一款高效的脚本语言,运用分支结构、循环结构、函数设计、多线程编程的方法来设计本项目,并且运用模块化的结构方式,使得调用第三方的模块更加简单有效。
(3) Flask框架:是一种轻量级框架,自由、灵活,可扩展性强,能结合最流行最强大的Python库,可以动态构建URL,开发效率更高
(4) Ajax技术:是由javascript、xml、XMLHttpRequest组合在一起、能实现异步提交的功能,是一种创建交互式网页应用的网页开发技术。
很早以前的网页技术是点一个链接,然后发送一个http请求,然后网页就会处于一个空白的状态,需要等待响应后才会显示网页.本项目是采用ajax异步请求的技术,发送请求后网页保持不变,等数据返回再发生局部的变化。
(5) Scapy模块:是一个强大的交互式数据包处理程序,它能够对数据包进行伪造或解包,包括发送数据包、 包嗅探、应答和反馈匹配等功能。可以用在处理网络扫描、路由跟踪、 服务探测、单元测试等方面,可以实现TCP协议方式对服务可用性的探测,通过对数据包的分析嗅探出端口的开放信息,服务的开发信息。
(6) Nmap:是Network Mapper的简称,是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具(是一款常见的漏洞分析工具,被称为“扫描之王”)可以检测目标机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息,支持数十种不同的扫描方式,支持多种目标对象的扫描。
1.4 项目借鉴源代码的地址
Flask框架:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017804650182592
Nmap使用:
https://xiaix.me/python-nmapxiang-jie/
1.5 团队成员任务分配表
成员:王琳 设计与实现基于Python Web的端口扫描项目
二、项目的需求分析
本项目实现了基本的网络端口扫描,通过扫描了解开放了哪些端口,以TCP还是UDP形式开放;基本的服务发现功能,探测出各端口上运行的服务,运行服务的软件,以及软件的版本等信息,根据扫描得出的这些信息,可以在网上搜索到相应版本的服务或软件的安全漏洞。由此我们可以知道,这些信息对于管理员、对于网络安全,真的太重要了!
前端界面需求分析:用户通过前端界面来与计算机进行信息交换,前端界面的质量直接关系到该项目的性能能否充分发挥,要求页面整体需要给用户一个很直观的、友好性的感受,让用户一进入这个页面就能清晰的明白主题,色彩搭配让用户视觉体验舒服,并且使用户能够有一次高效简单易用的操作体验。
输入输出需求分析:在一个项目中,数据能否正确读取以及分析与展示是至关重要的,由于项目的设计要首先考虑用户的体验为主,这就要求用户在数据的输入时要有合法性的检查,检查正确输入之后;软件需要对给定的IP地址和端口进行逻辑处理,而后将处理后的数据正确地展示端口上的端口号、协议、服务、版本情况等显示在界面上。
后端需求分析:在该在线网络端口扫描项目中,最核心的是后端的扫描功能和数据处理功能。首先要求执行效率要高,执行速度要快,接收前端传来的IP与端口信息,使用轻量级的Flask框架,响应速度较快,浏览器解析响应报文并进行渲染;运用Ajax技术与后端进行交互,最后将数据实时显示在前端界面,让用户更加方便、全面的掌握计算机安全信息,也协助管理人员更方便的维护系统的安全。
三、项目功能架构图、主要功能流程图
项目功能架构图
主要功能流程图
四、系统模块说明
4.1 系统模块列表
1.前端界面模块
2.后端模块
3.扫描模块
4.2 各模块详细描述(名称,功能,运行截图,关键源代码)
1.前端界面模块:
(1)功能:负责把设计好的界面展示出来,该前端界面采用的是Html/Css/Js技术以及Ajax技术和Json(中间语言)与后端进行交互,把IP与端口的信息发送到到后端并接收后端经过处理后的信息,界面上的按钮以及输入框在用户输入信息后进行合法性检查,为用户要实现的功能提供基础。
(2)运行截图:
图1
(3)关键源代码:
图2
图3
2. 后端模块:
(1)功能:1.后端模块是支撑和运行web运用,输入网址会有反应,如果没有启动后端,则网页没有反应。 2.读取前端传过来的数据,把一些二进制的字节流转换成字符串,进行数据的解析 3.负责统筹调用扫描功能模块,然后负责把数据封装好再传回前端。4.将代码运行成功,用户浏览器上输入url,就可以进入扫描端口的界面。
(2)运行截图:
图4
(3)关键源代码:
图5
2. 扫描模块:
(1)功能:1.在前端界面点击开始扫描按钮,新建一个请求,代码中则执行scan 函数开始扫描,中间都是采用回调函数进行处理,然后界面状态把开始扫描变成正在扫描,最后在Scan Result下方的指定表格之中把扫描结果显示出来。
2.方便一些用户发送数据包到目标计算机的特定端口,检测远程或本地主机安全性弱点的程序,本项目通过使用扫描器可以不留痕迹并且清楚地发现远程服务器的各种TCP端口的分配端口号、协议信息及提供的服务和它们的软件版本,这就能够让用户直接或者间接可以了解到远程主机所存在的安全问题。
(2)运行截图:
图6
(3)关键源代码:
图7
图8
五、项目总结
5.1 特点
(1)本项目属于在线端口扫描,方便用户直接输入url就可以进入界面进行操作
(2)扫描功能比较全面,可以扫描一个或者多个端口,可以开多线程应用
5.2 不足之处
1.没有验证机制
2.没有反反扫描功能,因为有些网站可能会进行反扫描技术或者防火墙保护,则该端口扫描就会出现扫描失败的情况
5.3 自我评分
刚开始学习Python语言我会感到很迷茫,但是跟随着老师课堂上的指导与分析最后做出这个项目真的感到不容易。这个项目我在入门阶段面临的是二八法则,就是20%的时间在写分析与写程序,80%的时间都在与Bug对抗,不断地去同学请教,向网络请教。在做项目过程中,面对难题我不断地去调整心态,通过重复学习与实践逐渐让我对python的应用有了大体的框架,也逐渐掌握了一些小技巧。从对端口扫描技术只有初步了解,需要一步一步地上网查阅资料,仔细分析运用到的各种技术的原理,初步确定好项目的框架,在结合所学知识尝试用各种方式去把理论与项目结合起来,虽然花了很多时间和精力,也经历了很多的困难与挫折,但是我自身的分析与设计能力同时也得到了很大的提升。
这是目前所学习的成果的一次验收,我也通过这个项目对照检查了自身的不足之处,并为今后的Python进阶学习奠定了更加明确的方向,学无止境,我要更加努力,让自己的编程技能更上一层楼!
图1
原文:https://www.cnblogs.com/wl0724/p/12048845.html