一、项目 1:简易端口扫描器(Python 实现)—— 理解网络资产探测
项目目标
开发一个能扫描指定 IP 开放端口,并识别对应服务的工具(类似简化版 Nmap),掌握'TCP 连接扫描'原理,熟悉 socket 编程。
适合阶段
大二刚学 Python,想入门网络安全'资产探测'方向。
技术栈
- 核心语言:Python(3.8+)
- 关键库:socket(建立 TCP 连接)、threading(多线程加速扫描)
- 开发工具:PyCharm(社区版免费)
- 测试环境:本地 Windows/Linux 虚拟机(VMware 免费版)
实现步骤(共 5 步,2-3 天可完成)
1. 明确核心功能
需要实现 3 个基础功能:
- 输入目标 IP(如 192.168.1.10)和端口范围(如 1-1000);
- 扫描开放端口,记录端口对应的服务(如 80 端口→HTTP、22 端口→SSH);
- 输出扫描结果(开放端口列表 + 服务类型)。
2. 编写 TCP 连接扫描核心代码
import socket
import threading
# 定义扫描函数:检测单个端口是否开放
def scan_port(ip, port):
try:
# 创建 TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1) # 超时 1 秒,避免卡壳
result = sock.connect_ex((ip, port)) # 连接端口,0 表示开放
if result == 0:
# 尝试获取服务名
try:
service = socket.getservbyport(port)
except:
service = "Unknown"
print(f"[+] 端口 {port} 开放,服务:{service}")
sock.close()
except:
pass
# 定义主函数:多线程扫描端口范围
def main():
target_ip = input("请输入目标 IP:")
start_port = (())
end_port = (())
()
port (start_port, end_port + ):
thread = threading.Thread(target=scan_port, args=(target_ip, port))
thread.start()
__name__ == :
main()


