aleixbaldich/local-port-scanner

GitHub: aleixbaldich/local-port-scanner

一个用 Java 编写的简易命令行端口扫描器,帮助初学者在本地环境中学习网络与网络安全基础。

Stars: 0 | Forks: 0

# 本地端口扫描器 本地端口扫描器是一个简单的 Java 命令行工具,用于检查用户指定主机上开放的端口。 本项目旨在作为一个适合初学者的网络和网络安全练习。其重点在于在安全的实验环境中学习 socket、端口和本地服务的工作原理。 ## 功能 - 接受目标主机作为命令行参数 - 如果未提供参数,则以交互方式询问目标主机 - 检查 `1` 到 `1024` 之间的端口 - 仅打印开放的端口 - 使用连接超时以避免在关闭的端口上等待过长时间 - 在本地运行,不需要外部库 ## 项目结构 ``` local-port-scanner/ src/ PortScanner.java README.md LICENSE ``` ## 用法 编译程序: ``` javac -d out src/PortScanner.java ``` 以交互模式运行: ``` java -cp out PortScanner ``` 然后在提示时输入主机: ``` Enter host to scan: localhost ``` 或者直接将主机作为参数传入: ``` java -cp out PortScanner localhost ``` 你也可以使用你拥有或有权扫描的本地或实验 IP 地址: ``` java -cp out PortScanner 127.0.0.1 ``` Windows 上的输出示例: ``` Enter host to scan: localhost Scanning host: localhost Port OPEN: 135 Port OPEN: 445 Scan completed. ``` 根据正在运行的服务不同,你的机器上开放的端口可能会有所不同。 ## 工作原理 扫描器将第一个命令行参数作为目标主机。如果未提供参数,它会以交互方式询问主机。 然后,它会尝试与 `1-1024` 范围内的每个端口建立 socket 连接。 如果连接成功,则认为该端口是开放的: ``` Port OPEN: 135 ``` 如果连接失败或超时,则将该端口视为已关闭,并且不予打印。 当前每个端口的超时时间设置为 `200 ms`。 ## 常见的本地端口 你可能会在本地机器上看到的一些常见端口: - `22`:SSH - `80`:HTTP - `135`:Windows RPC - `443`:HTTPS - `445`:SMB / Windows 文件共享 ## 当前限制 - 端口范围硬编码为 `1` 到 `1024` - 顺序扫描端口 - 不会自动识别服务 - 暂未包含自动化测试 ## 未来改进 - 接受起始和结束端口作为命令行参数 - 为已知端口显示常见的服务名称 - 计算并显示开放端口的总数 - 改进输出格式 ## 道德规范 请仅在 `localhost`、你自己的机器上,或在你已获得明确许可的实验环境中使用此工具。请勿使用它来扫描你不拥有或管理的系统。
标签:JS文件枚举, 云存储安全, 域名枚举, 插件系统, 数据统计, 文档结构分析, 端口扫描, 网络安全, 网络扫描, 网络编程, 隐私保护