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

#!/usr/bin/env python
# -*- coding: utf- -*-
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='' 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()
versionCode = match.group()
versionName = match.group() 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[]:
if os.path.splitext(filename)[] == '.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) == :
apkName = getCurrentDirApk()
else:
apkName = sys.argv[]
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内

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. Android 音视频开发(六): MediaCodec API 详解

    在学习了Android 音视频的基本的相关知识,并整理了相关的API之后,我们应该对基本的音视频有一定的轮廓了. 下面开始接触一个Android音视频中相当重要的一个API: MediaCodec.通 ...

  2. [Swift]LeetCode1 .两数之和 | Two Sum

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  3. [SQL]LeetCode178. 分数排名 | Rank Scores

    Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ra ...

  4. [Swift]LeetCode890. 查找和替换模式 | Find and Replace Pattern

    You have a list of words and a pattern, and you want to know which words in words matches the patter ...

  5. 第一次写html网页

    步骤一:(在notpad中写) <html> <head> <title>登录页面</title> </head> <body> ...

  6. Python—day17时间模块、系统模块、递推遍历、序列化

    一.time'''时间戳(timestamp):time.time()延迟线程的运行:time.sleep(secs)(指定时间戳下的)当前时区时间:time.localtime([secs])(指定 ...

  7. [Abp 源码分析]四、模块配置

    0.简要介绍 在 Abp 框架当中通过各种 Configuration 来实现模块的配置,Abp 本身提供的很多基础设施功能的一些在运行时的行为是通过很多不同的 Configuration 来开放给用 ...

  8. HBase篇--HBase操作Api和Java操作Hbase相关Api

    一.前述. Hbase shell启动命令窗口,然后再Hbase shell中对应的api命令如下. 二.说明 Hbase shell中删除键是空格+Ctrl键. 三.代码 1.封装所有的API pa ...

  9. Python内置函数(55)——round

    英文文档: round(number[, ndigits]) Return the floating point value number rounded to ndigits digits afte ...

  10. JVM基础系列第13讲:JVM参数之追踪类信息

    我们都知道 JVM 在启动的时候会去加载类信息,那么我们怎么得知他加载了哪些类,又卸载了哪些类呢?我们这一节就来介绍四个 JVM 参数,使用它们我们就可以清晰地知道 JVM 的类加载信息. 为了方便演 ...