用于提取Android apk机密的DeStringCare

DeStringCare的Python项目详细描述


破坏性护理

这是什么?在

它是一个用于提取Android apk文件中的StringCare模糊机密的工具。 其中一些受StringCare保护的机密可能包含API地址和API密钥。在

Warning:不建议在客户端存储重要的API密钥,尤其是第三方服务的密钥。 更好的方法是拥有自己的API服务,并为每个应用程序用户创建唯一的API密钥。 这允许撤销API密钥并在必要时禁止用户使用。在

安装

pip install DeStringCare

使用

用法:destringcare.py [-h] [-r] [-o] apk [replaced]

从Android APK中提取StringCare秘密。在

位置参数:

  • apk-apk的路径
  • replaced-被替换值的路径

可选参数:

  • -h--help显示此帮助消息并退出
  • -r--resign辞职并保存xml文件
  • -o--other包括其他机密的列表

示例:

^{pr2}$

替换值

创建mapped.json

{"firebase_database_url":"https://some-path.somewhere.io","google_storage_bucket":"another-path.appspot.com"}

然后使用附加参数运行destringcare

destringcare --resign Appname_v1.0.2494.apk mapped.json

打印其他额外属性

某些公共属性键可能不由Stringcare编码。 这些可以是明文形式,因此包含在输出中。在

destringcare --other Appname_v1.0.2494.apk

如何使用它?哪里可以得到apk?在

  1. 首先下载一个Android apk。在

    • 使用像https://apkpure.com/这样的网站(注意应用程序可能被篡改,因此不建议使用)。在
    • 使用GPlayCli/GPlayWeb使用自己的Gmail凭据下载。在
    • 使用adb工具从Android设备或模拟器中提取apk
      1. 通过Google Play store将应用程序下载到Android设备或模拟器上。在
      2. 列出软件包并找到你想要的应用程序。
        adb shell pm list packages
        
      3. apk文件的打印路径。
        adb shell pm path
        
      4. 拉出apk文件。
        adb pull /full/path/to/the.apk
        
  2. 提取StringCare的秘密。在

    destringcare Appname_v1.0.2494.apk
    

    您将得到一个JSON文件的输出:

    {"mixpanel_api_key":"7b23daa71cdbb9e6d07f29a36de960f3"}

如何放弃StringCare的秘密?在

^{pr2}$

它从密钥库文件~/.android/debug.keystore加载第一个密钥。在

然后它重新加密apk机密,并将其作为xml文件保存在resigned-strings.xml中。在

用您自己的密钥重新命名StringCare机密允许您重新打包应用程序并在Android设备中使用它。 您需要将原始的strings.xml替换为resigned-strings.xml文件。在

哪里可以使用辞职版本?在

使用apktool可以对应用程序进行解码,然后再重新打包。在

因为为了让它在Android上正常工作,必须放弃应用程序, 还需要使用新的签名密钥更新StringCare保护的文件。在

典型工作流程:

  1. 使用apktool将apk解码到apk目录中。在

    apktool d Appname_v1.0.2494.apk -o apk
    
  2. 运行DeStringCare以提取包含机密的{}并将其放弃。在

    ^{pr2}$ 在
  3. 替换路径apk/res/values/strings.xml处受StringCare保护的xml文件。在

    它可能包含如下行:

    <stringname="mixpanel_api_key">367E864309B5E7E3E6642483AF380497...</string>
  4. 重建apk。在

    apktool b -d apk -o app-unsigned.apk
    
  5. 辞去apk的职务。在

    jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -storepass android app-unsigned.apk androiddebugkey
    
  6. 用拉链把apk打开。在

    zipalign -v 4 app-unsigned.apk app.apk
    

如何贡献?在

如果您有问题或改进意见,打开一个问题。在

如果您对代码进行了改进,请创建一个merge request。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaJSonarray不会从SeekBar读取double   使用另一个类从Java中的2D数组打印用户输入   java ClassNotFoundException的原因   spring调用两个方法以返回Java中的不同页面   httpurlconnection Java禁止的代码错误,但浏览器错误(2)   java画布矩阵转换   java:在另一个java映射中使用“Map”作为值   java“未找到用于解密的证书”(Apache CXF,WSSecurity)   java如何查看JTable中选择的行   java在没有xmlwrappers的情况下重复xml元素序列集   java将垂直直方图打印到控制台   java Spring JDBCTemplate:构造不带特殊字符的JSON   java PayPal RestApi获取用户信息