如何在Linux上检测已知的无线设备加入我的无线局域网

5
我将使用运行Linux操作系统的单板计算机(SBC)制作移动设备检测器。 SBC将拥有USB / 802.11无线适配器,并且将是DHCP服务器。 移动设备将加入SBC的无线网络(adhoc或基础架构,不重要)。 当移动设备加入网络时,SBC将检测到它。 它将使用一组接受的地址检查传入移动设备的MAC地址。 如果匹配,则SBC将执行一个命令。
我具有基本的Linux知识。 我无法编写shell脚本,但我了解C ++ / Qt。 我不知道从哪里开始。 您知道在此项目中使用的相关命令行实用程序或库吗?
附言:也许我只需要一种方法来检测dhcp客户端列表何时更改。 结合mac地址过滤,这可能有效。

你需要学习一点shell脚本。如果你编写一个守护进程,你必须为init.d编写启动和停止脚本。嗯,这并不难,但你需要了解基础知识 :-) - rekire
我可以从现有的启动/停止脚本中创建一个。这不是问题。 - niw3
你应该提供更多的细节,例如,那个SBC将运行什么样的软件?做一些像软件AP这样的事情需要hostapd,我相信它内置了MAC过滤功能。 - Daniel Kamil Kozar
我不知道在软件接入点上该使用什么。谢谢您的评论,我会先阅读有关软件接入点的操作指南。 - niw3
2个回答

0

您可以使用nmap来发现您的网络。这里您可以找到一些示例。

然后,您应该解析它的输出。例如:

while true; do
    nmap -v -sT 192.168.0.0/24 | fgrep "YOUR_SEARCHED_IP" && \
    echo BINGO "YOUR_SEARCHED_IP" IS IN THE 192.168.0.0/24 NETWORK
done  

nmap 还有一个 -sn 选项可以跳过端口检查。

更棒的是,你可以使用 ip neighbor show 来查看邻居网络的 IP 地址。

或者你可以使用一个简单的 ping 测试,例如:

for ip in $(seq 1 254); do 
    ping -c 1 192.168.1.$ip>/dev/null && \
    echo “192.168.1.$ip is UP"
done

同时你可以结合nslookup使用来查看主机名。


谢谢。然而,nmap搜索开放的端口,因此移动设备必须有开放的端口,否则它将无法被检测到。 - niw3
如果你执行 nmap -o $IP_RANGE 命令,它会报告类似于 Nmap scan report on $IP 的信息,然后在下一行显示 host is up。但请查看我的更新答案。 - Zsolt Botykai

0

nmap测试IP层,但无线设备不一定需要使用它。

您还可以在无线接口上使用“监控”模式,并结合适当的监听程序,例如airdump-ng。请注意,如果无线网络使用客户端隔离,则您可能会看到比实际参与者少得多的客户端,并且请注意,就像正确切换的以太网一样,您不一定会看到位于另一个段中的远程客户端。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接