关于adb相关记录

关于adb  key 验证相关。

http://blog.youkuaiyun.com/happy_6678/article/details/45340191


Q:

--------------------------------------------------------------------------
Allow USB debugging?

The computer's RSA key fingerprint is:
23:B2:47:E1:08:DE:5A:3B:58:5A:A5:A6:FA:98:E0:50

Always allow from this computer
--------------------------------------------------------------------------
允许USB调试吗?

这台计算机的RSA密钥指纹如下:
23:B2:47:E1:08:DE:5A:3B:58:5A:A5:A6:FA:98:E0:50

一律允许使用这台计算机进行调试
--------------------------------------------------------------------------

在手机端碰到上述提示,手贱得选了永久允许,但实际上不希望这样,我想回到从前
那种每次都提示我一下的状态,怎么办?

A: scz@nsfocus 2014-04-07 14:22

--------------------------------------------------------------------------
2012年8月开始,adb增加了公私钥认证机制,只允许授权主机使用USB调试接口。

当手机接入未授权主机时,主机上的adb daemon向手机发送主机公钥。手机上弹出信
息框,询问是否允许(或永久允许)主机使用USB调试接口。如果选择永久允许,主机公
钥将被保存到手机中。有可能在手机ROM发布阶段已经内置了一些主机公钥,当心!

主机端公私钥对如果不存在,在adb daemon启动时会自动生成,对于Win 7,保存在:

%USERPROFILE%\.android\adbkey       // 私钥
%USERPROFILE%\.android\adbkey.pub   // 公钥

在Windows上主机公钥总是以"unknown@unknown"结尾。

另有说法,主机端公私钥对保存在%ANDROID_SDK_HOME%或%ADB_VENDOR_KEYS%目录下,
我没碰上这种情形。

手机端厂商公钥保存在/adb_keys中,来自授权主机的主机公钥保存在:

/data/misc/adb/adb_keys

ADB协议如下:

主机连接手机。手机向主机发送AUTH TOKEN报文,包含源自/dev/urandom的20字节的
随机token。主机用自己的私钥对该随机token进行签名(SHA1+RSA),放在发往手机的
SIGNATURE报文中。手机检查签名,如果正确,响应以CONNECT报文,否则向主机发送
新的AUTH TOKEN报文,提供新的随机token。主机可以尝试另一组公私钥对。如果主机
已经尝试完所有公私钥对,则向手机发送AUTH RSAPUBLICKEY报文,包含一个主机公钥。
手机端的adbd将主机公钥发往framework,后者弹出信息框,询问是否允许(或永久允
许)主机使用USB调试接口,该信息框中一般会显示主机公钥的指纹(MD5),而不是主机
公钥本身。

可用如下命令生成主机公钥指纹:

$ awk "{print $1}" < adbkey.pub | openssl base64 -A -d -a | openssl md5 -c | awk "{print $2}" | tr "[:lower:]" "[:upper:]"
23:B2:47:E1:08:DE:5A:3B:58:5A:A5:A6:FA:98:E0:50
--------------------------------------------------------------------------
/*
* /system/build.prop
*/
ro.adb.secure=1

这是缺省设置,表示启用adb公私钥认证机制,没有GUI界面调整这个设置。为0表示
禁用。
--------------------------------------------------------------------------

对于原始需求,设法删除保存在/data/misc/adb/adb_keys中的主机公钥即可。注意,
该文件中可能有多个主机公钥,只需删除你想删除的那一个即可。该文件权限如下:

$ ls -l /data/misc/adb/adb_keys
-rw-r----- system   shell

如果有root权限,简单粗暴的办法是:

# cat /dev/null > /data/misc/adb/adb_keys

重启手机使之生效。理论上重启手机端adbd会重读/data/misc/adb/adb_keys:

stop adbd
start adbd

但这组操作不能在"adb shell"里进行,因为"adb shell"依赖adbd。如果你有其他
shell,可以一试。

据说Android 4.3的开发者选项里增加了"Revoke USB debugging authorizations",

它会清空/data/misc/adb/adb_keys,而不是删除单条主机公钥。



http://bbs.xiaomi.cn/thread-9561013-1-1.html


 

Android 如何开启与关闭adb 的认证机制(google adb secure) (adb RSA 指纹认证)


[Description]
如何开启与关闭adb 的认证机制(google adb secure)
[Keyword]
adb secure , ro.adb.secure , adb RSA 指纹认证
[Solution]
MTK 版本默认关闭adb 的地址认证机制,如果贵司需要开启,可以修改alps/build/core/main.mk
ifeq (true,$(strip $(enable_target_debugging)))
  # Target is more debuggable and adbd is on by default
  ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1
  ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1 ==> 如果想在ENG Load新增此功能,加这行
  # Include the debugging/testing OTA keys in this build.
  INCLUDE_TEST_OTA_KEYS := true
else # !enable_target_debugging
  # Target is less debuggable and adbd is off by default
  ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0
  ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1 ==> 如果想在USER Load新增此功能,加这行
endif # !enable_target_debugging

L 以后版本可以修改 /device/mediatek/mtXXXX/device.mk :
 
而ro.adb.secure 这个system property 对于adbd 的控制点在alps/system/core/adb/adb.c 中的
property_get("ro.adb.secure", value, "0");
auth_enabled = !strcmp(value, "1");
if (auth_enabled)
    adb_auth_init();//需要弹出对话框进行认证

需要注意的是,Google 现在强制要求在USER 版本中开启adb RSA 指纹认证,如果您关闭,将无法通过Google CTS 测试.



<think>好的,用户想知道如何查看手机的ADB连接记录或日志位置。首先,我需要回想一下关于ADB日志存储的位置和相关命令。根据用户提供的引用内容,有几个关键点: 引用[1]提到使用adb pull命令获取/data/log/android_logs等目录下的日志,这可能说明安卓系统的日志存放在这些位置。引用[2]和引用[4]提到adb logcat命令,用于查看实时日志,并且可以通过参数过滤日志。此外,引用[3]和[4]还涉及adb shell的操作,比如访问系统目录或使用shell命令查找文件。 首先,ADB连接记录可能不会单独存储,而是包含在系统日志中。用户可能需要查看logcat的输出,特别是与ADB服务相关的部分,比如查找含有“adb”或“usb”标签的日志。根据引用[2],adb logcat -c可以清空日志,然后重新连接设备,再运行adb logcat -v time > adb.log来保存日志到文件,这样可以检查连接时的记录。 另外,系统可能有特定的日志文件,比如/data/log/android_logs或者/data/log/dubai/systrace,如引用[1]所提到的,用户可以用adb pull命令将这些日志导出到电脑查看。不过需要root权限才能访问这些目录。 还要考虑ADB守护进程(adbd)的日志,但默认可能没有开启,需要设置环境变量来启用,如引用[4]中的adb shell指令可能需要su权限来修改配置。 用户可能需要检查设备上的logcat缓冲区,使用不同的参数如adb logcat -b radio查看radio相关的日志,有时候连接事件可能记录在这里。 总结步骤应该是:1. 使用logcat命令实时查看或导出日志;2. 检查系统日志目录下的文件;3. 可能需要root权限访问某些目录;4. 设置adbd的调试日志。同时注意不同安卓版本和厂商的差异,可能需要用户具体尝试。 最后,生成相关问题时,要围绕ADB日志的更多操作、权限问题和连接问题排错等方面,帮助用户扩展了解。</think>要查看手机的ADB连接记录或日志,可通过以下步骤操作: --- ### 一、通过`adb logcat`查看实时日志 1. **清空历史日志**(避免干扰) ```bash adb logcat -c # 清除缓存日志[^2] ``` 2. **保存日志到本地文件** ```bash adb logcat -v time > adb.log # 将带时间戳的日志输出到adb.log文件[^2] ``` 3. **过滤ADB相关日志** 在生成的`adb.log`中搜索关键词: ```bash grep -i "adb\|usb\|debug" adb.log # 筛选与ADB连接相关记录 ``` --- ### 二、检查系统日志目录 ADB连接事件可能记录在以下系统日志文件中(需root权限访问): 1. **通用日志路径** ```bash adb pull /data/log/android_logs # 导出系统日志目录[^1] ``` 2. **厂商定制日志** 如华为/小米等厂商可能存储日志在: ```bash adb pull /data/log/dubai/systrace # 示例路径,不同厂商可能不同 ``` --- ### 三、ADB守护进程日志(需调试模式) 1. **启用adbd调试日志** ```bash adb shell setprop persist.adb.trace_mask all # 开启详细日志[^4] adb reboot # 重启生效 ``` 2. **导出adbd日志** 重启后重新连接设备,日志会输出到: ```bash adb logcat -s adbd # 过滤adbd进程的日志 ``` --- ### 四、连接历史记录(非标准日志) 部分系统可能记录USB调试历史: ```bash adb shell cat /data/system/usb_devices.xml # 尝试查看USB设备连接记录(需root) ``` --- ### 注意事项 - **权限问题**:访问`/data/log/`等目录需root权限,普通设备需解锁+刷入Magisk等工具[^3] - **厂商差异**:不同品牌手机的日志路径可能不同,需参考具体文档 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值