Linexxx13/Port-Scanner
GitHub: Linexxx13/Port-Scanner
一个由学生团队开发的 Python 端口扫描器教学项目,通过四个阶段的代码迭代展示了从基础单端口测试到带图形界面的并发扫描器的完整构建过程。
Stars: 0 | Forks: 0
Emilly Linardi, Lucas Oliveira, Miguel Boscolo
项目总结:Python 端口扫描器
这个项目展示了我们团队如何使用 Python 创建并逐步改进一个端口扫描器。我们从一个非常简单的基础代码开始,不断修改,直到将其变成一个功能完整的程序,包含图形界面、并发多端口测试以及报告保存功能。我们的主要想法是在实践中了解网络是如何运作的,并看清像 Nmap 这样的著名工具在底层是如何工作的。
代码的演进
我们将项目分为四个阶段进行,以便逐步测试和学习:
起步阶段(port-scanner.py):一个非常简单的测试。代码尝试连接到单个 IP 和单个特定端口(端口 80)。如果成功,系统会返回数字零。
测试更多功能(port-scanner_v2.py):由于只测试一个端口太无聊了,我们创建了一个包含多个端口的列表,并在代码中加入逻辑,让它以文本形式返回端口是“开启(ABERTA)”还是“关闭(FECHADA)”,而不是仅仅显示数字。
实现自动化(port-scanner_v2.1.py):我们配置了脚本,使其一次性测试整个区间(1 到 1024 端口)。为了不耗费太长时间,我们缩短了计算机等待响应的超时时间。
完整程序(port_scan_brabo.py):最终且最快的版本。我们让代码并发执行多个测试(并行),从而在几分钟内测试数千个端口。我们还制作了一个可视化的小窗口(图形界面)来输入 IP 并查看进度,此外还增加了一项功能,可以将结果保存为文本文件或电子表格。
值得一提的是,我们在开发过程中没有遇到任何困难。这是因为我们跟随了 YouTube 上的视频教程,这些教程非常完整且具有很好的教学性,详细地解释了每一行代码及其确切的工作原理。
Python 与 Nmap:关于其局限性我学到了什么
通过编写这个程序,我明白了为什么我们的 Python 脚本虽然能解决问题,但远不如专业人士使用的 Nmap 那样强大:
速度慢的问题:我们的脚本在测试每个端口时,都会与目标计算机建立完整的连接过程。这会消耗 PC 的内存并使网络变慢。Nmap 则进行“半开”测试:它发送一个信号来查看端口是否有响应,但随后立即中断会话,这使得测试变得非常快速和轻量。
防火墙盲区:我们的代码只能判断端口是响应了还是报错了。它无法知道端口是真的关闭了,还是有安全系统在拦截我们的信号。Nmap 则可以通过分析响应的类型以及响应消失所需的时间来察觉这种拦截。
猜测错误:我们的脚本仅仅根据端口号来猜测该端口上运行的是什么。如果有人将服务伪装在不同的端口上,脚本就会出错。而 Nmap 会向端口发送智能消息,以发现其中运行的程序的真实名称和版本。
标签:DNS枚举, Python, 图形界面, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全工具, 网络编程, 逆向工具