Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥。
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的部分属性,再通过加密算法生成秘钥。的更多相关文章
- 生成二维码 加密解密类 TABLE转换成实体、TABLE转换成实体集合(可转换成对象和值类型) COOKIE帮助类 数据类型转换 截取字符串 根据IP获取地点 生成随机字符 UNIX时间转换为DATETIME\DATETIME转换为UNIXTIME 是否包含中文 生成秘钥方式之一 计算某一年 某一周 的起始时间和结束时间
生成二维码 /// <summary>/// 生成二维码/// </summary>public static class QRcodeUtils{private static ...
- Android 获取android安装apk框的安装状态(如点击取消、返回)
最近鼓捣android,碰到个问题,因为没有root权限,需要调用Intent安装apk,但需要获取用户是否安装了(如,用户点击了返回或取消),查了很多文章,最后可以解决,但有瑕疵,解决方法如下: p ...
- python使用adb获取Android Phone截图(解决Windows传输编码导致png文件损坏的问题)
使用adb命令 ./adb shell screencap -p 可以截取当前屏幕,并且作为stdout,传给外部.那么对于python,我们可以用如下代码获取数据流. 使用Popen创建子进程用于读 ...
- 获取Android运行apk的packagename 和activityname
自动化测试中经常遇到这个问题,关于这个题目,方法众多,咱的目的是找个比较简单靠谱的: 方法一: 先进入cmd窗口,adb shell 后: cd /data/data ls 可以看到包名了吧,缺点很明 ...
- Android中保存静态秘钥实践(转)
本文我们将讲解一个Android产品研发中可能会碰到的一个问题:如何在App中保存静态秘钥以及保证其安全性.许多的移动app需要在app端保存一些静态字符串常量,其可能是静态秘钥.第三方appId等. ...
- ssh秘钥免交互批量分发脚本
将以下内容保存为.sh文件后运行即可,需根据各自情况修改ip_up和ip_arr #!/bin/bash #脚本功能:ssh秘钥免交互批量分发 #制 作 人:罗钢 联系方式:278554547@qqc ...
- 获取Android自己写好了的apk以及反编译
今天,我们先说一下,获取Android自带的apk以及反编译它们来学习Android工程师是怎样写的,今天我们就以拿到Android自带的短信管理器的apk为例子 你可能有疑问,为什么要那么麻烦,从系 ...
- Python Python实现批量安装android apk包
基于Python实现批量安装android apk包 by:授客 QQ:1033553122 1.相关软件包及文件下载 下载地址:adb软件包及批量安装apk包的py文件.zip 2.测试环境 Win ...
- 获取Android APK JNI库
/************************************************************************** * 获取Android APK JNI库 * 说 ...
随机推荐
- Java中的锁——Lock和synchronized
上一篇Java中的队列同步器AQS 一.Lock接口 1.Lock接口和synchronized内置锁 a)synchronized:Java提供的内置锁机制,Java中的每个对象都可以用作一个实现同 ...
- [Swift]LeetCode57. 插入区间 | Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- ThinkPHP 数据库操作(五) : 存储过程、数据集、分布式数据库
存储过程 5.0支持存储过程,如果我们定义了一个数据库存储过程 sp_query ,可以使用下面的方式调用: $result = Db::query('call sp_query(8)'); 返回的是 ...
- beoplay(BO)耳机拒绝配对的解决方法
最近买了个beoplay h4,但是在换了手机之后怎么也不能配对,问客服也不知道,后来找了好久才找到答案: 按住音量+ 和 音量- 指示灯出现蓝色并闪烁时,手机搜索蓝牙就可以连接了
- BBS论坛(二十二)
22.1.七牛js上传轮播图图片 (1)common/zlqiniu.js 'use strict'; var zlqiniu = { 'setup': function (args) { var d ...
- BBS论坛(七)
7.1.修改邮箱界面完成 (1)cms/cms_resetemail.html {% extends 'cms/cms_base.html' %} {% block title -%} 修改邮箱 {% ...
- Java8虚拟机内存模型
1. Java虚拟机运行时数据区 在JDK1.8之前,JVM运行时数据区分为堆.虚拟机栈.本地方法栈.方法区.程序计数器.如下图所示: 虚拟机栈:线程私有,随线程创建而创建.栈里面是一个一个“栈帧” ...
- MongoDB exception:connection failed
根据http://www.runoob.com/mongodb/mongodb-window-install.html的教程配置了MongoDB,Mongod.exe配置为 --port 指令表明mo ...
- redis 系列20 服务器上
一.客户端与服务端交互 本篇简单介绍下服务器,服务器运行涉及的内部原理知识很多,主要了解Redis服务器内部要做哪些事情,需要开发人员去干预的比较少.Redis服务器负责与多个客户端建立网络连接,处理 ...
- Mac电脑C语言开发的入门帖
本文是写给Mac电脑开发新手的入门帖,诸神请退散. C语言 C语言可说是电脑环境中的"镇国神器",从发明至今,虽然C语言的使用者缓慢的减少,但从当前市场应用情况看,尚无一台电脑能够 ...