kabirschandra/Network-scanner

GitHub: kabirschandra/Network-scanner

一个用 C# 编写的纯原生、无外部依赖的 IPv4 网络工具包,旨在从底层实现 Ping、DNS、端口扫描等功能以帮助理解网络工具的工作原理。

Stars: 0 | Forks: 0

# 网络扫描器 一个用于 IPv4 的 C# 网络工具包 编写为 .NET 控制台项目。无外部库。 ## 功能 - IPv4 ping - IPv4 DNS 查询 - Traceroute - TCP 端口扫描 - /24 子网扫描 - 用于运行命令的 Shell 包装器 - 带有 PASS/FAIL 输出的基础测试脚本 ## 项目结构 | 目录/文件 | 内容 | |---|---| | `./src` | C# 源文件和 `.csproj` | | `./testing` | Shell 测试脚本 | | `./run.sh` | 命令包装器 | | `./README.md` | 项目文档 | ## 要求 - .NET SDK 8.0 或更高版本 - Linux 或 WSL - 网络访问 ## 快速开始 在项目根目录下: ``` dotnet build src/src.csproj ``` 使用包装器运行: ``` chmod +x run.sh ./run.sh ping 8.8.8.8 ``` ## 命令 ### Ping ``` ./run.sh ping 8.8.8.8 ``` 示例输出: ``` Address: 8.8.8.8 Status : Success Time : 18 ms ``` ### DNS 查询 ``` ./run.sh dns google.com ``` 示例输出: ``` IPv4 Addresses: 172.217.213.102 172.217.213.100 172.217.213.139 ``` ### 端口扫描器 扫描单个端口: ``` ./run.sh ports 192.168.0.1 80 80 ``` 扫描范围: ``` ./run.sh ports 192.168.0.1 1 1024 ``` 示例输出: ``` OPEN : 80 ``` ### 子网扫描器 扫描从 `.1` 到 `.254` 的 `/24` 子网。 ``` ./run.sh subnet 192.168.0 ``` 示例输出: ``` 192.168.0.1 192.168.0.2 192.168.0.50 ``` ### Traceroute ``` ./run.sh tracert google.com ``` 在 Linux/WSL 上,traceroute 可能需要权限: ``` sudo ./run.sh tracert google.com ``` ## 测试 测试脚本位于: ``` ./testing ``` 运行所有测试: ``` chmod +x run.sh chmod +x testing/*.sh ./testing/test_all.sh run ``` 运行单个测试: ``` ./testing/test_all.sh dns ./testing/test_all.sh ping ./testing/test_all.sh ports ./testing/test_all.sh subnet ``` ## 手动测试值 您可以覆盖默认的测试目标。 Ping 测试: ``` PING_IP=192.168.0.1 ./testing/test_all.sh ping ``` 端口扫描器测试: ``` TARGET_IP=192.168.0.1 TARGET_PORT=80 ./testing/test_all.sh ports ``` DNS 测试: ``` DNS_HOST=google.com ./testing/test_all.sh dns ``` 子网测试: ``` SUBNET=192.168.0 ./testing/test_all.sh subnet ``` ## 源文件 | 文件 | 用途 | |---|---| | `Program.cs` | 读取命令并分发到正确的工具 | | `PingTool.cs` | 发送 ICMP ping 请求 | | `DnsQueryTool.cs` | 将主机名解析为 IPv4 地址 | | `PortScannerTool.cs` | 检查 TCP 端口 | | `SubnetScannerTool.cs` | Ping `/24` 子网中的每个主机 | | `TracertTool.cs` | 发送具有递增 TTL 值的 ping | ## 注意事项 此项目仅适用于 IPv4。 子网扫描器仅支持简单的 `/24` 扫描,例如: ``` ./run.sh subnet 192.168.0 ``` 端口扫描器仅打印打开的端口。如果没有任何输出,则该端口可能已关闭或被过滤。 ## 限制 - 仅支持 IPv4 - 仅支持基础 `/24` 子网扫描 - 仅支持 TCP 端口扫描 - 无异步扫描 - 大范围端口扫描可能会比较慢 - 在 Linux/WSL 上 Traceroute 可能需要提升权限 ## 为什么开发此项目 开发此项目是为了通过直接使用 C# 实现基础网络工具来理解它们。目标不是替换 `nmap`、`ping` 或 `traceroute` 等工具,而是从基础层面了解这些工具的内部工作原理。
标签:Cutter, 网络工具, 网络扫描器