一、项目简介
1.1 项目博客地址
https://www.cnblogs.com/wl0724/
1.2 项目完成的功能与特色
1.2.1项目功能
基于python web的在线端口扫描器,登陆网站即可进行扫描,可分别输入零散的多个端口,也可以输入连续的一系列端口进行扫描,可扫描出端口的开放情况,端口类型,端口上运行的服务以及运行该服务的软件及版本等信息,使用简单,运行快速。可供网络管理员查看网络信息,模拟渗透测试时使用。
1.2.2项目特色
扫描器是在线的,使用起来非常简单,仅需要打开网页即可操作;采用多线程架构,运行快速。
1.3项目借鉴源代码的地址
Flask框架:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017804650182592
Nmap使用:
https://xiaix.me/python-nmapxiang-jie/
二、项目采用的技术栈
2.1 html、css及js,号称前端三剑客;html为标签型语言,通过各种以<>
括起来的标签实现各种网页元素,文本,按钮以及表格等等;css可以设置网页的样式、颜色以及大小等,用于美化页面;js是html的脚本语言,可直接插在html任何位置运行,通过他处理各种逻辑。
2.2 ajax与json,ajax即Asynchronous Javascript And XML,通过ajax技术,即可让网站实现动态效果,只改变局部区域,而不是只有很小的改动时也要重新加载一个新页面;json是一种中间语言格式,由于前段采用js后端采用python,为了两者能够沟通数据,需要json数据格式沟通他们,即前段数据转化为json数据传给后端,后端解析使用之后,得出答案,将答案序列化为json数据,再返回前段处理。
2.3 nmap库,nmap是一款强大的网络嗅探工具,通过构造特殊的探针数据包去嗅探服务器网络情况,可以扫描出端口的开放情况等,本项目扫描部分基于此库实现。
2.4 flask框架,flask是一款符合wsgi规范的python web框架,封装了许多web相关的功能于此,如request读取前端数据,mvc技术等;实现了前后端分离,一个请求对应于一个处理函数,使用其开发web非常方便。
2.5 并发技术,扫描采用的是多线程扫描,每个线程均等的扫描一部分端口,提高运行速度。
三、自己负责的模块
3.1 自己负责模块列表
图1
3.2 各模块详细描述(名称,功能,运行截图,关键源代码)
项目共分三大模块,integrate模块负责运行网站,沟通前后端;complete模块负责完成具体的扫描功能;界面模块负责显示页面,与用户交互。
项目功能架构如图2:
图2
主要功能流程图如图3:
图3
运行示例如图4:
图4
3.3 前端界面
前端采用html、css构建基本外形,js处理数据逻辑,核心数据处理部分如下:
图5
图6
3.4 integrate模块
该模块使用了flask框架技术,一个请求对应一个处理函数,接受了前端传来的数据,根据数据构造出供complete模块使用的参数,然后调用complete模块开始扫描,扫描结果序列化为json数据,然后返回前端,核心如图:
图7
3.5 complete模块
该模块完成端口扫描工作,开启多个线程,构造适用于nmap的参数,调用nmap的scan函数完成扫描,核心实现如下:
图8
图9
图10
四、自己完成的工作量评估
完成的模块数:3个模块
代码行数
Home.html |
Complete.py |
Integrate.py |
234行 |
80行 |
56行 |
五、项目小结:
5.1 特点:
(1)本项目属于在线端口扫描,方便用户直接输入url就可以进入界面进行操作
(2)扫描功能比较全面,可以扫描一个或者多个端口,可以开多线程应用
5.2 不足之处:
(1)没有验证机制
(2)没有反反扫描功能,因为有些网站可能会进行反扫描技术或者防火墙保护,则该端口扫描就会出现扫描失败的情况
5.3.自我评分
刚开始学习Python语言我会感到很迷茫,但是跟随着老师课堂上的指导与分析最后做出这个项目真的感到不容易。这个项目我在入门阶段面临的是二八法则,就是20%的时间在写分析与写程序,80%的时间都在与Bug对抗,不断地去同学请教,向网络请教。在做项目过程中,面对难题我不断地去调整心态,通过重复学习与实践逐渐让我对python的应用有了大体的框架,也逐渐掌握了一些小技巧。从对端口扫描技术只有初步了解,需要一步一步地上网查阅资料,仔细分析运用到的各种技术的原理,初步确定好项目的框架,在结合所学知识尝试用各种方式去把理论与项目结合起来,虽然花了很多时间和精力,也经历了很多的困难与挫折,但是我自身的分析与设计能力同时也得到了很大的提升。
这是目前所学习的成果的一次验收,我也通过这个项目对照检查了自身的不足之处,并为今后的Python进阶学习奠定了更加明确的方向,学无止境,我要更加努力,让自己的编程技能更上一层楼!