티스토리 뷰

#-*- coding: utf-8 -*-

 

import sys, os

from subprocess import *

import re

import OptionHelper

 

class PackageNameMatch(object):

'''

'''

 

def __init__(self):

'''

'''

 

def match(self, s):

permReg = re.compile(r'<manifest.+package="(.+?)" .+>$')

res = permReg.match(s)

if res is not None:

return res.group(1)

return None

 

def Option_I(argv):

apkName = argv.pop(0)

process = Popen(["python", "../androguard-master/androaxml.py","-i",apkName], stdout=PIPE)

(output, err) = process.communicate()

exit_code = process.wait()

outputArray = output.splitlines()

 

# 패키지명을 출력한다.

p = PackageNameMatch()

for s in outputArray:

res = p.match(s)

if res is not None:

print res

return 0

 

option_0 = {"type" : "option", "name" : "-i", "value" : "<APK File>", "desc" : "input apk file"}

option_1 = {"type" : "comment","name" : "output",  "desc" : "print pacakage name in apk"}

options = [option_0, option_1]

 

def PrintOption(name, argv):

global options

o = OptionHelper.OptionParser(name, options)

o.printOption()

exit()

 

def main(argc, argv):

# 옵션과 그 옵션을 줄경우 호출할 함수를 정의한다.

optionMap = {

"-i"        : Option_I,

"-help"        : PrintOption,

"-h"         : PrintOption,

 

}

 

scriptName = argv.pop(0)

if argc == 1:

PrintOption(scriptName, argv)

exit()

# 인자에 따른 함수 호출

try:

while argv:

arg = argv.pop(0)

optionMap.get(arg)(argv)

except:

PrintOption(scriptName, argv)

return

 

if __name__ == '__main__':

main(len(sys.argv),sys.argv)        

댓글