bitzermoloney/Socket-Scanner
GitHub: bitzermoloney/Socket-Scanner
一个基于 Python 的子网主机发现与 TCP 端口扫描工具,通过 socket 连接检测目标网络中存活主机及常用端口的开放状态。
Stars: 0 | Forks: 0
# Socket-Scanner
该程序接收子网的一个 IP 地址,尝试确定哪些主机在线,检查常见的 TCP 端口是否开放,并显示结果。
# 相关信息
作为一名主修 CS 与网络安全 (CSCS) 的本科生,我决定我的下一个项目应该围绕网络和网络安全展开。该项目旨在提升我在 Python 网络方面的技能。
# 规划
该项目需要实现以下功能:
1. 接收一个 IP 地址或子网。
2. 确定(或尝试确定)哪些主机在线。
3. 检查常见的 TCP 端口是否开放,例如 22、80 或 443。
4. 显示结果。
# 学习心得
创建该程序的第一步是学习 socket 的相关知识。Python 的 socket 模块允许我们开发者尝试建立 TCP 连接,但连接能否成功取决于运行该程序的设备权限以及相关的法律法规/策略。我发现可以使用 .connect_ex() 函数来判断端口是否开放(如前所述)。如果端口开放则返回 0,否则返回其他值。
# 单次扫描
到这一步,我们已经拥有了一个可以正常工作的程序,它能在找到的 socket 上尝试建立 TCP 连接,检查端口是否开放,并输出结果。接下来,我需要让程序能够扫描单个主机。为此,主要的不同之处在于我们使用一个 for 循环来检查最常见的端口(例如遍历 22、80、443)。
# 批量扫描
接下来,我需要改进程序,使其能够检查多个 IP 地址。为此,我可以使用 Python 的 ipaddress 模块,该模块允许我们获取子网中的所有地址。我们可以使用 .ip_network() 函数来实现这一点。我们可以将获取到的地址保存为数组,并通过一个简洁的 for 循环依次遍历它们。
# 综合应用
既然我已经能够使用 Python 的 socket 和 ipaddress 模块,针对选定的常见开放端口检查子网上的所有 IP 地址,我就可以综合运用这些技能来编写完整的程序,该程序将执行以下操作:
1. 查找子网上的 IP 地址。
2. 遍历每台主机...
3. 遍历常见开放端口 (22, 80, 443) 中的每个端口...
4. 尝试建立 TCP 连接。
5. 记录结果。
# 任务完成
标签:Maven构建, Python, 云存储安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络发现, 网络安全, 网络扫描, 逆向工具, 隐私保护