博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android设备adb授权的原理【转】
阅读量:6320 次
发布时间:2019-06-22

本文共 1229 字,大约阅读时间需要 4 分钟。

本文转载自:

http://blog.csdn.net/sowhat_ah/article/details/43307907

 

 

error: device unauthorized. Please check the confirmation dialog on your device.

用adb调试android设备时,首次连接时,会出现一个授权提示:

error: device unauthorized. Please check the confirmation dialog on your device.

这时候,正常情况下,在手机上会出现一个提示框,让用户确认是否授权这个PC设备允许调试,你只需要点击确认就可以了!

 

工作原理是什么?

原来在我们的PC机(以windows为例)上启动了adb.exe进程时,adb会在本地生成一对密钥adbkey(私钥)与adbkey.pub(公钥);

根据弹框提示“The computer's RSA key fingerprint is:xxxx”,可以看出是一对RSA算法的密钥,其中公钥是用来发送给手机的;

当你执行“adb shell”时,adb.exe会将当前PC的公钥(或者公钥的hash值)(fingerprint)发送给android设备;这时,如果android上已经保存了这台PC的公钥,则匹配出对应的公钥进行认证,建立adb连接;如果android上没有保存这台PC的公钥,则会弹出提示框,让你确认是否允许这台机器进行adb连接,当你点击了允许授权之后,android就会保存了这台PC的adbkey.pub(公钥);

 

当然手机厂商也有可能会内置一些adbkey.pub(公钥);

 

那么问题来了,这些密钥在PC与Android上分别存储在哪里?

首先PC上,以Windows7为例,当你首次启动adb.exe时,会在C盘的当前用户的目录下生成一个".android"目录,其中adbkey与adbkey.pub就在这个目录下;(adb.exe会在启动时读取这两个文件(没有就重新生成),所以如果你要是删除或者修改了这两个文件之后,必须要关闭adb.exe进程,重启之后才能生效;)

其次Android上,PC的公钥被保存在一个文件中"/data/misc/adb/adb_keys";

 

在知道了adb这种认证的原理之后,你可以在不希望自己android设备授权任何PC设备进行adb链接时,清除"/data/misc/adb/adb_keys"文件;

也可以在没有屏幕的情况下,让已经认证过的PC将你PC上的adbkey.pub中的公钥导入到android中的"/data/misc/adb/adb_keys"文件中,或者将已经认证过的PC机上的adbkey与adbkey.pub拷贝到本机上覆盖你自己的adbkey与adbkey.pub,然后重启adb.exe,即可执行adb命令;

你可能感兴趣的文章
ARP协议分析
查看>>
python基础--函数
查看>>
收集Cocos2d提供的字体!共57种
查看>>
Struts2--标签tag
查看>>
实现基于Keepalived主从高可用集群网站架构
查看>>
父窗口jquery触发iframe按钮事件(转载)
查看>>
.Net Core下发送WebRequest请求的两种方式
查看>>
java 构造方法
查看>>
Bash,Vim,gdb&git常用命令
查看>>
没有好看的 Terminal 怎么能够快乐地写代码
查看>>
hitTest和pointInside如何响应用户点击事件
查看>>
es6 Module语法
查看>>
A Color Picker based on manifold learning
查看>>
深入理解 JavaScript Function
查看>>
MySQL<事务与存储过程>
查看>>
分页技巧_实现第一个分页功能(回复列表中的分页)
查看>>
输入某年某月某日,判断这一天是这一年的第几天?
查看>>
PhpCms V9调用指定栏目子栏目文章的方法
查看>>
Python之Fabric
查看>>
AFNetworking 3.0 断点续传 使用记录
查看>>