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

  1. #!/usr/bin/env python
  2. # -*- coding: utf- -*-
  3. import os
  4. import sys
  5. import zipfile
  6. import re
  7. import hashlib #MD5和sha1算法
  8. def getAppBaseInfo(apkpath):
  9. #print(apkpath)
  10. #检查版本号等信息
  11. output = os.popen("aapt.exe d badging %s" % apkpath).read()
  12. if not output:
  13. raise Exception("can't find aapt.exe")
  14. #print('output:' + output)
  15. #package: name='com.student.xiaomuxc' versionCode='' versionName='3.2.1'
  16. match = re.compile("package: name='(\S+)' versionCode='(\d+)' versionName='(\S+)'").match(output)
  17. if not match:
  18. raise Exception("can't get packageinfo")
  19.  
  20. packagename = match.group()
  21. versionCode = match.group()
  22. versionName = match.group()
  23.  
  24. print('packageName:' + packagename)
  25. #print('versionCode:' + versionCode)
  26. print('versionName:' + versionName)
  27. return packagename + versionCode + versionName
  28.  
  29. def getCurrentDirApk():
  30. for dir in os.walk(os.curdir):
  31. for filename in dir[]:
  32. if os.path.splitext(filename)[] == '.apk':
  33. #print('find apk:', filename)
  34. return filename
  35.  
  36. def md5_encode(data):
  37. #调用md5算法,用一个变量接收
  38. m = hashlib.md5()
  39. #调用update对传来的data进行数据加密,encode utf-8的编码后才能用update
  40. m.update(data.encode('utf-8'))
  41. return m.hexdigest() #经过特殊处理之后以字符串形式返回
  42.  
  43. if __name__ == "__main__":
  44. #获得apk名
  45. if len(sys.argv) == :
  46. apkName = getCurrentDirApk()
  47. else:
  48. apkName = sys.argv[]
  49. if not apkName:
  50. print('can not find apk!!!')
  51. exit()
  52. appinfo = getAppBaseInfo(apkName)
  53. if not appinfo:
  54. print('can not get appinfo!!!')
  55. exit()
  56. #print('appinfo:' + appinfo)
  57. result1 = md5_encode(appinfo)
  58. print('Secretkey:' + result1)
  59. raw_input("Press <enter>")

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

PS:aapt.exe文件在SDK内

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

  1. 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间

    生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...

  2. Android 获取android安装apk框的安装状态(如点击取消、返回)

    最近鼓捣android,碰到个问题,因为没有root权限,需要调用Intent安装apk,但需要获取用户是否安装了(如,用户点击了返回或取消),查了很多文章,最后可以解决,但有瑕疵,解决方法如下: p ...

  3. python使用adb获取Android Phone截图(解决Windows传输编码导致png文件损坏的问题)

    使用adb命令 ./adb shell screencap -p 可以截取当前屏幕,并且作为stdout,传给外部.那么对于python,我们可以用如下代码获取数据流. 使用Popen创建子进程用于读 ...

  4. 获取Android运行apk的packagename 和activityname

    自动化测试中经常遇到这个问题,关于这个题目,方法众多,咱的目的是找个比较简单靠谱的: 方法一: 先进入cmd窗口,adb shell 后: cd /data/data ls 可以看到包名了吧,缺点很明 ...

  5. Android中保存静态秘钥实践(转)

    本文我们将讲解一个Android产品研发中可能会碰到的一个问题:如何在App中保存静态秘钥以及保证其安全性.许多的移动app需要在app端保存一些静态字符串常量,其可能是静态秘钥.第三方appId等. ...

  6. ssh秘钥免交互批量分发脚本

    将以下内容保存为.sh文件后运行即可,需根据各自情况修改ip_up和ip_arr #!/bin/bash #脚本功能:ssh秘钥免交互批量分发 #制 作 人:罗钢 联系方式:278554547@qqc ...

  7. 获取Android自己写好了的apk以及反编译

    今天,我们先说一下,获取Android自带的apk以及反编译它们来学习Android工程师是怎样写的,今天我们就以拿到Android自带的短信管理器的apk为例子 你可能有疑问,为什么要那么麻烦,从系 ...

  8. Python Python实现批量安装android apk包

    基于Python实现批量安装android apk包 by:授客 QQ:1033553122 1.相关软件包及文件下载 下载地址:adb软件包及批量安装apk包的py文件.zip 2.测试环境 Win ...

  9. 获取Android APK JNI库

    /************************************************************************** * 获取Android APK JNI库 * 说 ...

随机推荐

  1. 【RL-TCPnet网络教程】第4章 RL-TCPnet网络协议栈简介

    第4章        RL-TCPnet网络协议栈简介 本章节介绍RL-TCPnet网络协议栈,让大家对 RL-TCPnet有一个整体的了解,RL-TCPnet是一款小型网络协议栈,适用于 ARM 内 ...

  2. 深入理解Spring Redis的使用 (五)、常见问题汇总

    目前我所知道的Redistemplate里面,我没有使用到的就是管道.这个可以进行批量的读写.类似于jdbc的batch.还有就是Redis的集群部署.但是由于我业务里没有这种需求,所以没有使用无法给 ...

  3. [Swift]LeetCode299. 猜数字游戏 | Bulls and Cows

    You are playing the following Bulls and Cows game with your friend: You write down a number and ask ...

  4. Kafka对Java程序员有多重要?连阿里都再用它处理亿万级数据统计

    一.了解淘宝Kafka架构 在ActiveMQ.RabbitMQ.RocketMQ.Kafka消息中间件之间,我们为什么要选择Kafka?下面详细介绍一下,2012年9月份我在支付宝做余额宝研发,20 ...

  5. Python内置函数(53)——repr

    英文文档: repr(object) Return a string containing a printable representation of an object. For many type ...

  6. Java代码复用的三种常用方式:继承、组合和代理

    复用代码是Java众多引人注目的功能之一.这句话很通顺,没什么问题,但问题在于很多人并不清楚“复用”是什么.就好像我说“沉默王二是一个不止会写代码的程序员”,唉,沉默王二是谁? 我们需要来给“复用”下 ...

  7. react-native学习(RN)--之Window环境下搭建环境配置,以及初始化建立react-native项目,(真机和模拟器运行的相关错误解决办法,android打包报错)

    react-native以后会更火的 一.安装java 二.安装Android Studio 三.安装react-native需要的Android studio额外部分 四.安装nodeJS  五.安 ...

  8. 死磕 java集合之HashMap源码分析

    欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. 简介 HashMap采用key/value存储结构,每个key对应唯一的value,查询和修改 ...

  9. Owin学习笔记(一) Owin的前生今世

    ASP.NET框架至今为止已经存在了数十年了,大量的网站使用ASP.NET框架进行开发.随着网站应用开发技术的进步,  许多网站应用开发框架有了新的流行趋势 轻量化 模块化 可移植 ASP.NET框架 ...

  10. Android--SoundPool

    前言 在Android中播放音频文件经常会用到MediaPlayer,但是MediaPlayer存在一些不足的地方,如:资源占用量较高.加载延迟时间较长.不支持多个音频同时播放等.这些缺点决定了Med ...