如何从私钥获取adbkey.pub?

时间:2019-04-03 00:15:21

标签: adb rsa

我正在尝试创建一个脚本,该脚本将通过adb connect通过OpenSTF建立连接来控制服务器场中的android设备。设备接受来自客户端的连接的要求之一是在OpenSTF中提供adbkey.pub的内容。

但是,似乎新版本的ADB不再仅通过私钥生成此文件。从我可以从AOSP存储库中收集的信息来看,这是有意的https://github.com/aosp-mirror/platform_system_core/commit/2dc4cabe0639c71014d729dd92eff19289429c89

在审查了AOSP提交之后,我意识到ADB密钥对是使用RSA协议进行的,并且我找到了一个如何从专用in this Stack Exchange question获取公用密钥的示例。但是,OpenSSL输出和adbkey.pub的公钥格式不同。起初我以为它只是用base64编码的,但是即使如此,输出也不匹配。

这是来自adb keygen的使用旧版ADB的ADB公钥的示例。

QAAAAFNrmDYl72IeYbMQiOlKulhv2lH3CKyeK6EgwyUxptsdPmvCCRmxtvecilLzE74OzoRVQKZeCBI/qMnWj1hBU8t6YE0FQ1CUKAFO5UYp/S7GH/+tlHKunl/mmm/Izjs4L6ajl+kp3XBBrYryIJtRH5iJRi9T96gRq2ya+h9v/v/ITNvdCKLNVObBCLCj+4fmkoxVEXnSLyQtyPAl/AiMAiK/WXryatNkuBdAr6m9M/ay693Oj07I3UFxLqzwHhoeb2CZzC0//AwUDgRHtyxDyrAKaoxirhoaJ4Q8Tbn6jRtOaV0uvtCBfs4kIUoM/DLPfjZq8Al8PHPuEwvOMaAGF+JSXHywjWfstcxT3c7xjn2Zq19R4kuf63dfEqtv+NA/PhH94oMQtiZsp92JpT0h22tWAoQAF9jr2puwVzMj8i/k0iDLMRnp/5E6UVsziP8PG9DgIpeTjL2NMjE0Kheq+CufIozhcvGudg+MJaJED4XHK7hQrU0QCvu1kOqO+/VtW4zmTCfg8nY556A73vtllrMLsG2OgZTyQT0SrBOBd2AaYOB90l7//hlfpqAA8XANG0MHkyPsi/xtKga6Zsu+a2L9Hl2rUWNB6T9AEmyzmapCMUBilAuNtZ+Pt9esqzD9+/aKSIHdUu1gPKZtKTgh+pqYNgyipq0UMWpexkZfpMsLTddGIgEAAQA= carolinadp@carolinadp-GL62M-7RD

这是使用相同的私钥使用OpenSSL制作的公钥

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsHxcUuIXBqAxzgsT7nM8
fAnwajZ+zzL8DEohJM5+gdC+Ll1pThuN+rlNPIQnGhquYoxqCrDKQyy3RwQOFAz8
Py3MmWBvHhoe8KwucUHdyE6Pzt3rsvYzvamvQBe4ZNNq8npZvyICjAj8JfDILSQv
0nkRVYyS5of7o7AIweZUzaII3dtMyP/+bx/6mmyrEaj3Uy9GiZgfUZsg8oqtQXDd
KemXo6YvODvOyG+a5l+ernKUrf8fxi79KUblTgEolFBDBU1gestTQViP1smoPxII
XqZAVYTODr4T81KKnPe2sRkJwms+HdumMSXDIKErnqwI91Hab1i6SumIELNhHmLv
JQIDAQAB
-----END PUBLIC KEY-----

如何获取ADB公钥?

3 个答案:

答案 0 :(得分:1)

当我的adb版本升级到28.0.2-5303910版本时,我在OpenSTF上遇到了“连接被拒绝”问题(因此adbkey.pub消失了)

Android Debug Bridge version 1.0.40
Version 28.0.2-5303910

现在我终于解决了,只需将adb升级到最新版本

Android Debug Bridge version 1.0.41
Version 29.0.6-6198805

希望这会有所帮助。

答案 1 :(得分:0)

您可以使用ssh-keygen从私钥中检索公钥,如下所示:

  

ssh-keygen -y -f adbkey> adbkey.pub

也许您需要从生成的发布密钥文件中删除“ ssh-rsa”。

答案 2 :(得分:0)

我认为您应该使用adb生成一个新的私钥和公钥对(假设使用Linux):

cp ~/.android/adbkey ~/.android/adbkey.bak (backup existing key)  
rm ~/.android/adbkey
cd $ANDROID_HOME/platform-tools
./adb keygen adb

注意: 我假设您已经在要生成adbkey.pub的计算机上安装了android sdk,因此现有的$ ANDROID_HOME路径