使用adb工具查询安卓端口对应的程序

最近在捣腾路由器的时候发现手机对应的ip地址下总是显示正在使用UPnP服务,而应用描述还是我不认识的软件(cloudsee),考虑到这是一家负责安防监控的厂商,出于安全考虑我尝试查找使用这一端口的软件。

使用手机:华为P20(EML-AL00 EMUI10.0 未root)
使用路由器:荣耀路由X2增强版
使用到的工具:adb工具(下载链接见参考5,百度搜索下载也可以)
注:本教程不需要root。由于水平有限,用词和操作均有可能不专业或不准确的地方,请见谅。

问题描述

使用adb工具查询安卓端口对应的程序
这里显示cloudsee,但是我对这个描述一点印象都没有,查了下似乎是个生产监控的厂家。
使用adb工具查询安卓端口对应的程序
处于安全考虑我开始进一步的分析。

操作步骤

  1. 手机进入开发者模式并打开adb调试
    打开方法:设置-关于手机-狂按版本号直至提示需要输入锁屏密码(没有锁屏密码的应该会直接进入开发者模式)
    操作结束后,设置-系统与更新 下即会出现“开发人员选项”,单击它。找到“USB调试”并打开,弹出的对话框点确定即可。
    使用adb工具查询安卓端口对应的程序

注:这种情况下只有在手机连接电脑后处于非“仅充电”模式下才会允许USB调试。如果需要在“仅充电”模式下进行USB调试,应该需要打开位于这个选项下面的“‘仅充电’模式下允许ADB调试”。这里我没有打开,所以每次连接电脑时需要改变连接方式为“传输文件”。

  1. 电脑端下载adb工具,并进入命令行模式(cmd)
    打开adb.exe所在的目录,按住shift键,右击文件夹空白处,选择“在此处打开Powershell窗口”,输入“cmd”并回车。
    使用adb工具查询安卓端口对应的程序
    使用adb工具查询安卓端口对应的程序

  2. 将手机连接至电脑
    仅充电模式下是不能进行ADB调试的,而手机插入电脑默认为仅充电模式。所以这里,将连接模式从“仅充电”改为“传输文件”。此时手机上可能会出现如下的提示:“是否允许USB调试?”,勾选“始终允许使用这台计算机进行调试”,点确定。
    使用adb工具查询安卓端口对应的程序
    此时在电脑的命令行窗口(Powershell)中输入“adb devices",可以看到如下的信息。
    使用adb工具查询安卓端口对应的程序
    如果没有在手机端允许USB调试,或者没有允许这台计算机进行USB调试,提示应该是上图上半部分显示的样子,即“unauthorized(未授权)”。如果看到变成了下半部分所示的“device”则进行下一步操作。

  3. 查看端口使用情况
    输入“adb shell”,我这里的命令行变成了“HWEML:/ $”,不同品牌的手机应该不一样,不过没有影响。
    接着输入“cat /proc/net/udp”。cat命令代表查看文件内容。
    这里的udp是根据路由器后台UPnP服务页面显示正在使用的协议类型决定的,我这里cloudsee哪一行显示的协议是UDP。如果是TCP的话则将udp改成tcp。输入完毕后回车,可以看到显示了一大堆信息。
    使用adb工具查询安卓端口对应的程序
    上图的local address下面是使用十六进制显示的ip地址和对应的端口号。根据我们路由器的后台显示,cloudsee服务对应的内部端口为43389,十六进制为A97D,对应第一行的00000000:A97D。
    随后我们看到这一行的uid列,此时的对应数值是10161,这是程序对应的编号,每个程序对应唯一的uid号。
    :这一步骤中并非每一次都能在上图的列表中找到对应的端口。我发现荣耀路由反映的UPnP信息不是实时的,可能对应的进程已经不在使用服务了,但是路由器里面还有显示。我的解决方法是将路由器重启,清空UPnP页面显示的信息后,等待新的UPnP信息出现,然后立即在电脑输入上面的cat命令,此时成功率较高。

  4. 查看uid对应的包(app)
    接着输入pm list packages --uid XXXXX,pm为包管理器。
    这里的XXXXX改成上面的对应数值10161,可以看到出现了下图的提示,说明uid10161对应包“com.yueme.itv”
    使用adb工具查询安卓端口对应的程序
    其实如果这里包的名字比较熟悉的话已经可以知道对应的是哪个应用了,不过看着还是不大眼熟,itv的话可能与电信有关,先把包的名字直接百度看看。
    使用adb工具查询安卓端口对应的程序
    可以看到应该是“小翼管家”APP,我的手机上确实安装了这个,是我用来宽带提速的。最后再确认一下为什么这个APP的应用描述为什么是cloudsee,我在它的智能家居页面下找到了cloudsee对应的厂家,问题解决。
    使用adb工具查询安卓端口对应的程序
    可能是连接监控时需要的服务吧。不过既然已经定位到具体的APP,不放心的话直接删除程序就好了。

参考

  1. security - List of open ports on Android - Android Enthusiasts Stack Exchange
  2. applications - How can I find app name by UID? - Android Enthusiasts Stack Exchange
  3. Android pm 命令详解 - 许忠慧 - 博客园
  4. android Linux cat 命令_wang18323834864的博客
  5. adb下载安装及使用_weixin_43927138的博客