V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MLawliet
V2EX  ›  Android

Android adb 客户端是如何检测到自定义服务端端口的?

  •  
  •   MLawliet · 132 天前 · 1222 次点击
    这是一个创建于 132 天前的主题,其中的信息可能已经有所发展或是发生改变。

    adb 客户端能自动发现局域网中的 adb 服务端,当我手机开启 wireless adb 后,总能收到局域网内其他客户端发出的连接请求,开始以为是通过探测默认端口 5555 实现的,但我把服务端端口改成其他后,仍然能收到连接请求,不知道这是如何实现的,难道是服务端主动向局域网内广播自己的配置?

    9 条回复    2021-08-02 09:02:03 +08:00
    learningman
        1
    learningman  
       132 天前
    我知道有个叫 SSDP 的协议,估计是差不多的东西吧
    yukiww233
        2
    yukiww233  
       132 天前
    问下局域网内其他人(adb client)是怎么发送请求连接的呗
    没准人家写了个工具遍历局域网内端口
    wjploop
        3
    wjploop  
       132 天前
    有趣的问题

    我也认为不是服务端自己广播自己的配置,手机不该浪费自己电量来做这事,而是客户端主动探测出来的。

    客户端如何探测?

    使用 nmap 工具查询当前局域网活跃的主机以及开放的端口 /服务,我下载玩了会,当手机开放无线 adbd 时确实可以检测到,且手机开放的端口很少,根据手机开放端口很少这点,客户端只要尝试连接就行了。

    不知道现实中你指的客户端是谁,可能是公司的测试人员?由于 IP 动态分配的原因连上了你手机?
    jim9606
        4
    jim9606  
       132 天前   ❤️ 5
    Android 的 adbd 激活无线调试后会通过 mDNS 发布一个_adb-tls-connect._tcp 服务。
    adb v30 开始设置环境变量 ADB_MDNS_OPENSCREEN=1 后,adb devices 会利用 mDNS 自动发现设备。
    andyskaura
        5
    andyskaura  
       132 天前
    @jim9606 感谢 涨姿势了 通过 mdns 发现设备
    MLawliet
        6
    MLawliet  
    OP
       132 天前
    @wjploop 目前发现是局域网中跑着 Android studio 、Unity 这类工具的设备会主动向开启无线的 adbd 发起连接请求,这些设备上肯定没有人为跑检测程序

    @jim9606 非常感谢,第一次知道 mDNS...
    xingstar
        7
    xingstar  
       131 天前
    真是学习了,感谢(⊙o⊙)…
    aabbcc112233
        8
    aabbcc112233  
       130 天前
    @MLawliet AS 怎么能够向已开启无限调试的设备发起连接呢?没看到入口
    MLawliet
        9
    MLawliet  
    OP
       128 天前
    @aabbcc112233 自动的啊,AS 会自动执行 adb devices 命令查找局域网内开启调试的设备然后连接
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1165 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:34 · PVG 03:34 · LAX 11:34 · JFK 14:34
    ♥ Do have faith in what you're doing.