You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测同一网络内主机的操作系统(含Android客户端实现)

Android客户端环境下的可行方案

你已经通过ARP表拿到了IP、MAC、厂商和主机名,这能帮你缩小范围,结合下面这些方法就能实现OS检测:

  • 轻量TCP指纹探测(注意权限):在Android上做简化版的TCP指纹识别。可以试着给目标的常见端口(80、443、22)发SYN包,抓响应的TCP头部信息(TTL、窗口大小),再和预定义的OS特征库匹配。不过要注意:非root的Android没法直接发原始TCP包,你可以用Java的Socket建连接,通过getInputStream()拿间接的响应特征,或者用封装好的第三方网络库简化操作。
  • ICMP TTL初步判断:用ICMP echo请求的TTL值做初步筛选。比如响应TTL接近128的大概率是Windows,接近64的可能是Linux/macOS。Android上可以用InetAddress.isReachable()方法,但这个方法拿不到TTL,要精准获取可能需要root权限,或者用native代码实现ICMP包的收发解析。
  • 结合已有信息辅助推断:
    • 主机名:带DESKTOP-前缀的基本是Windows设备,MacBook-或iMac-前缀的是苹果设备;
    • MAC厂商:比如苹果的MAC前缀(像00:16:CB、00:24:9B)对应iOS/macOS,微软的前缀对应Windows设备,用厂商信息缩小范围后,再结合探测结果准确性更高。
  • mDNS/NetBIOS服务探测:
    • mDNS:苹果设备和部分Linux默认开mDNS服务,你在Android上用MulticastSocket发mDNS查询包,收到响应的话大概率是苹果或开了mDNS的Linux设备;
    • NetBIOS:Windows默认开NetBIOS服务,发NetBIOS名称查询包,收到响应就能判定是Windows系统。这俩方法都不需要root,只要申请CHANGE_WIFI_MULTICAST_STATE和INTERNET权限就行。

内容的提问来源于stack exchange,提问作者vbp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:00:48