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文件枚举, 云存储安全, 域名枚举, 插件系统, 数据统计, 文档结构分析, 端口扫描, 网络安全, 网络扫描, 网络编程, 隐私保护