zoukankan      html  css  js  c++  java
  • Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥。

    Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥。

    #!/usr/bin/env python  
    # -*- coding: utf-8 -*-  
    import os  
    import sys  
    import zipfile  
    import re
    import hashlib #MD5和sha1算法
    def getAppBaseInfo(apkpath):  
        #print(apkpath)  
        #检查版本号等信息  
        output = os.popen("aapt.exe d badging %s" % apkpath).read()
        if not output:  
            raise Exception("can't find aapt.exe")  
        #print('output:' + output)  
        #package: name='com.student.xiaomuxc' versionCode='2016062800' versionName='3.2.1'  
        match = re.compile("package: name='(S+)' versionCode='(d+)' versionName='(S+)'").match(output)  
        if not match:  
            raise Exception("can't get packageinfo")  
      
        packagename = match.group(1)  
        versionCode = match.group(2)  
        versionName = match.group(3)
      
        print('packageName:' + packagename)  
        #print('versionCode:' + versionCode)  
        print('versionName:' + versionName)
        return packagename + versionCode + versionName
      
    def getCurrentDirApk():  
        for dir in os.walk(os.curdir):  
            for filename in dir[2]:  
                if os.path.splitext(filename)[1] == '.apk':  
                    #print('find apk:', filename)  
                    return filename
    
    def md5_encode(data):
        #调用md5算法,用一个变量接收
        m = hashlib.md5()
        #调用update对传来的data进行数据加密,encode utf-8的编码后才能用update
        m.update(data.encode('utf-8'))
        return m.hexdigest() #经过特殊处理之后以字符串形式返回
      
      
    if __name__ == "__main__":  
        #获得apk名  
        if len(sys.argv) == 1:  
            apkName = getCurrentDirApk()  
        else:  
            apkName = sys.argv[1]  
        if not apkName:  
            print('can not find apk!!!')  
            exit()  
        appinfo = getAppBaseInfo(apkName)  
        if not appinfo:  
            print('can not get appinfo!!!')  
            exit()
        #print('appinfo:' + appinfo)
        result1 = md5_encode(appinfo)
        print('Secretkey:' + result1)
    raw_input("Press <enter>")
        

    在windows7电脑上使用,需要先安装python-2.7.msi,
    把aapt.exe,Secretkey.py,目标apk放在同一个目录,
    通过点击Secretkey.py文件会生成一个秘钥。

    PS:aapt.exe文件在SDK内

  • 相关阅读:
    青石巷-仰天长笑出门去 七班岂是蓬嵩人
    D语言-变量、输入、输出、注释
    D语言-认识D语言&安装
    D语言-随机数游戏
    全网一定不是最好懂的C++线性筛素数
    【玩转SpringBoot】异步任务执行与其线程池配置
    【玩转SpringBoot】通过事件机制参与SpringBoot应用的启动过程
    【玩转SpringBoot】SpringBoot应用的启动过程一览表
    【玩转SpringBoot】让错误处理重新由web服务器接管
    【玩转SpringBoot】翻身做主人,一统web服务器
  • 原文地址:https://www.cnblogs.com/lipeineng/p/8317633.html
Copyright © 2011-2022 走看看