From efcb1074d04d11d085f1967c4a2318c085816574 Mon Sep 17 00:00:00 2001 From: fong Date: Thu, 1 Feb 2024 12:12:58 +0800 Subject: [PATCH] updata readme Signed-off-by: fong --- README.md | 70 +++++++++++++++++++++++++++++++++++++--------------- img/tu1.png | Bin 0 -> 35065 bytes 2 files changed, 50 insertions(+), 20 deletions(-) create mode 100644 img/tu1.png diff --git a/README.md b/README.md index 96a64b7..88e79a7 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,55 @@ -## 项目地址 -[备用仓库][3] -[github][4] +# IP端口扫描工具 -## tcp_ip_scan -![Qt_logo_2016.svg.png][1] -摸了很长时间,又把QT捡起来学习了,突然想到的一个项目,想扫描一下网上有多少隐藏的Minecraft服务器。 -其实IP扫描器网上也有很多,我也用过来扫描我所在地区的ip段的80、25565端口,扫到了就进去参观一下。 - 然后我自己又写一个扫描器的初衷是想优化,输入的方式的。 -这是我在网上找的扫描器 -有一说一真的挺好用,就是只能扫1段,而且不支持域名。 -然后这个是我做的 -![捕获.PNG][2] -丑了一点,但也不是不能用。 -可以扫描多个个独立ip、多个ip段、多个域名的任意端口、端口段。 -支持多线程,不建议不建议超过100线程,我对QT的多线程还不是很理解,是不是线程会暴毙又或者无法正常结束。 -实测在Qt5.12下就会出现线程无法正常结束的问题,所以这是在Qt6.2.2下编译的。(其实问题依然存在)太多线程的时候会有那么一两个线程无法正常结束。正在研究中。 - 持续学习研究中,计划会加入IPv6的支持,会优化外观细节。 +> 可以批量对IP的端口进行扫描,如果端口是开放的就会展示出来。 + +支持多种IP列表示方式,例如: +1. 127.0.0.1 +2. 192.168.0.1-192.168.0.255 +3. 192.168.0.0/24 +4. domain.com +支持单个IPv6地址,暂不支持IPv6的批量扫描。 + +支持多种端口表达方式,例如: +1. 22 +2. 80;443 +3. 1-65525 + +## 使用指南 + +从以下仓库clone项目,由于github在内地无法使用,可在备用仓库clone +* [备用仓库][3] +* [github][4] + + + +### 项目使用条件 + +Windows下QT版本: +``` +Qt5.14.2 mingw73_64 +``` +目前仅在Windows下开发。 + +### 打包 +cd 到debug输出目录下执行 +``` +windeployqt ip_sacaner.exe +``` + +### 使用示例 + +![tu1](/img/tu1.png) + + +## 关于作者 + +* **Kevin Ng** - *Blog* - [Wnfed](https://Wnfed.com) + +## License 授权协议 + +这个项目 MIT 协议, 请点击 [LICENSE.md](LICENSE.md) 了解更多细节。 - [1]: https://wnfed.com/usr/uploads/2022/01/2803635156.png - [2]: https://wnfed.com/usr/uploads/2022/01/1412970345.png [3]: https://git.lmve.net/kevin/tcp_ip_scan - [4]: https://github.com/wuwenfengmi1998/tcp_ip_scan \ No newline at end of file + [4]: https://github.com/wuwenfengmi1998/tcp_ip_scan diff --git a/img/tu1.png b/img/tu1.png new file mode 100644 index 0000000000000000000000000000000000000000..973a482cec5e9652f2a831eac64e2dd5bc9e4803 GIT binary patch literal 35065 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