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

2021-07-29 09:50:38 +08:00
 MLawliet

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

4616 次点击
所在节点    Android
9 条回复
learningman
2021-07-29 14:03:26 +08:00
我知道有个叫 SSDP 的协议,估计是差不多的东西吧
yukiww233
2021-07-29 14:05:14 +08:00
问下局域网内其他人(adb client)是怎么发送请求连接的呗
没准人家写了个工具遍历局域网内端口
wjploop
2021-07-29 14:46:58 +08:00
有趣的问题

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

客户端如何探测?

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

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

@jim9606 非常感谢,第一次知道 mDNS...
xingstar
2021-07-30 12:35:01 +08:00
真是学习了,感谢(⊙o⊙)…
aabbcc112233
2021-07-31 22:35:15 +08:00
@MLawliet AS 怎么能够向已开启无限调试的设备发起连接呢?没看到入口
MLawliet
2021-08-02 09:02:03 +08:00
@aabbcc112233 自动的啊,AS 会自动执行 adb devices 命令查找局域网内开启调试的设备然后连接

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/792401

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX