博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥。
阅读量:6147 次
发布时间:2019-06-21

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

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

#!/usr/bin/env python  # -*- coding: utf-8 -*-  import os  import sys  import zipfile  import reimport 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 filenamedef 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 
")

 

 

在windows7电脑上使用,需要先安装python-2.7.msi,

把aapt.exe,Secretkey.py,目标apk放在同一个目录,
通过点击Secretkey.py文件会生成一个秘钥。

PS:aapt.exe文件在SDK内

转载于:https://www.cnblogs.com/lipeineng/p/8317633.html

你可能感兴趣的文章
CCNA考试要点大搜集(二)
查看>>
ajax查询数据库时数据无法更新的问题
查看>>
Kickstart 无人职守安装,终于搞定了。
查看>>
linux开源万岁
查看>>
linux/CentOS6忘记root密码解决办法
查看>>
25个常用的Linux iptables规则
查看>>
集中管理系统--puppet
查看>>
分布式事务最终一致性常用方案
查看>>
Exchange 2013 PowerShell配置文件
查看>>
JavaAPI详解系列(1):String类(1)
查看>>
HTML条件注释判断IE<!--[if IE]><!--[if lt IE 9]>
查看>>
发布和逸出-构造过程中使this引用逸出
查看>>
Oracle执行计划发生过变化的SQL语句脚本
查看>>
使用SanLock建立简单的HA服务
查看>>
发现一个叫阿尔法城的小站(以后此贴为我记录日常常用网址的帖子了)
查看>>
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>
mysql做主从relay-log问题
查看>>