大家今天跟大家分享一下我最近捣鼓的一个小玩意——活跃IP段扫描器。作为一个喜欢折腾的博主,我总是喜欢尝试一些新东西,这回也不例外。好,闲话少说,咱们直接开始!
起因
事情是这样的,我最近在配置家里的网络,想看看有哪些设备连着我的 Wi-Fi。 网上找一圈,发现很多工具要么太复杂,要么就是收费的,这哪行?于是我就想着,干脆自己动手,丰衣足食!

准备工作
既然要扫描 IP 段,肯定得先解点基础知识。我简单查一下,发现有很多现成的工具可以用,比如 Angry IP Scanner、QuickPing 什么的,这些工具都挺厉害的,可以快速识别网络里活跃的 IP,还能扫描端口。但我这人就喜欢自己动手,所以决定自己写一个简单的。
我的思路是,先找到自己网络的IP段。然后从起始IP到末尾IP都尝试去ping下,如果ping通就说明是活跃的。
动手实践

我用的 Windows 系统,所以直接打开 PowerShell。你用命令提示符也行。
- 第一步,获取网关IP地址,在终端输入
ipconfig,找到“默认网关”,这个就是我的路由器地址,比如说我的是192.168.31.1。 - 第二步,确定 IP 扫描范围。通常情况下,我们扫描整个 C 类地址段就够,也就是
192.168.31.1到192.168.31.254这个范围。 - 第三步,开始扫描。 我偷个懒,用个简单的批处理脚本:

新建一个txt文件,复制以下内容到文件内,并且重命名为ip_*。
@echo off
echo 正在扫描活跃IP...
for /L %%i in (1,1,254) do (
ping -n 1 -w 500 192.168.31.%%i find "TTL=" && echo 192.168.31.%%i 活跃

echo 扫描完成!
pause
- 代码解释:
- @echo off 关闭回显。就是让结果更干净。
- for /L %%i in (1,1,254) do就是一个循环,从1循环到254。
- ping -n 1 -w 500就是发送一个ping包,等待500毫秒。
- find "TTL="就是查找结果里有没有“TTL=”,有的话说明ping通。
- && echo 192.168.31.%%i 活跃,有TTL,就输出这个ip是活跃的。


双击运行这个 ip_* 文件,等一会就能看到结果。
实践中遇到的问题与调整
在实践的过程中,会遇到一些小问题。比如有的设备防火墙开着,你ping它,它不理你,这时候就容易误判。不过对我来说,这已经够用,毕竟只是看看有哪些设备在线。
成果展示
跑完脚本,我看到一堆 IP 地址,有些是我认识的设备,比如我的手机、电脑,还有些我不认识的,可能是邻居蹭网的,哈哈!
扫描结果示例:

正在扫描活跃IP...
192.168.31.1 活跃
192.168.31.100 活跃
192.168.31.105 活跃
扫描完成!
总结
这回实践还是挺有意思的,虽然只是个简单的小工具,但自己动手的感觉还是挺爽的。这只是个入门级的玩意,还有很多可以改进的地方,比如可以加入多线程扫描,提高扫描速度,还可以增加端口扫描功能,看看设备都开哪些服务等等。等我有空再继续折腾!
好,今天的分享就到这里,希望对大家有所帮助。如果你也喜欢折腾,不妨试试自己动手做一个,相信你也能从中获得乐趣!

