zoukankan      html  css  js  c++  java
  • python解析AndroidManifest.xml文件

      在写分析报告的时候需要贴上apk的权限,手动一个一个粘贴上去感觉很麻烦,于是自己写了个脚本自动获取权限,同时能给出相应的中文说明。不废话了,先来介绍python的几个函数:

      1、Python 去除字符串空格的函数为:strip()去除两边空格,lstrip()去除左边空格,rstrip()去除右边空格。    

    # 例去除字符串左右空格
    a = ' Python '
    a = a.strip()        # 去除空格后保存变量
    print a        # 输出变量a
    >> Python

      2、startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某个字符结束。

      3、字符串查找:变量.find("要查找的内容"[,开始位置,结束位置]),开始位置和结束位置,表示要查找的范围,为空则表示查找所有。查找到后会返回位置,位置从0开始算,如果没找到则返回-1。在python中-1被认为是True,切记!

    str = 'a,hello'
    print str.find('hello')    # 在字符串str里查找字符串hello
    >> 2            # 输出结果

      本文主要用到find函数。通过查找“uses-permission”来定位权限描述所在的位置,然后通过列表的“:”操作符来截取权限信息。具体代码如下:  

     1 #-*-coding:utf-8-*-
     2 
     3 ''' uses-permission Array '''
     4 usesPermissionArray = []
     5 ''' sdk version '''
     6 sdkVersion = ''
     7 ''' localesArray '''
     8 localesArray = []
     9 ''' icon file name '''
    10 #iconFileArray = []
    11 
    12 f = open(r"C:\Users\***\Desktop\AndroidManifest.xml", "r+")
    13 xmlinfo = f.readlines()
    14 
    15 for line in xmlinfo:
    16     if line.find('uses-permission') > -1 :
    17         usesPermissionArray.append(line[line.find('"')+1:line.rfind('"')])
    18     elif line.find('sdkVersion:') > -1 :
    19         sdkVersion = line[line.find('"')+1:line.rfind('"')] #get sdkVersion
    20     elif line.find('locales:') > -1 :
    21         localesArray = line[line.find(':')+2:].split(' ')
    22 print usesPermissionArray

     这是我以前写的博客,后来发现github上有更全面的方法:https://github.com/antitree/AxmlParserPY

  • 相关阅读:
    SpeedPHP多入口设置 前台和后台入口分开
    php重定向 htaccess文件的编写
    SpeedPHP关于一对一和一对多关联关系的建立 model建立
    SpringMVC与Struts2关于controller线程安全问题
    编码问题 关于hibernate jdbc数据库连接在xml配置与在properties文件配置的差异
    SpringMVC可以配置多个拦截后缀*.html和.do等
    JavaSE replaceAll 方法
    Promise.race 的原理
    Promise.all 的原理
    标签联合
  • 原文地址:https://www.cnblogs.com/goodhacker/p/3029424.html
Copyright © 2011-2022 走看看