NEW: added processing of an android data folder

This commit is contained in:
JohnE 2015-11-30 17:35:15 -08:00
parent 2c1a131c30
commit c87aea45f0
3 changed files with 40 additions and 20 deletions

47
dbfp.py
View File

@ -50,7 +50,7 @@ def createFingerprint(filein, verbose, app_name, app_ver, notes):
print db.getErrorString(retVal) print db.getErrorString(retVal)
# #
def fingerprintDir(): def androidPull():
ap = android.AndroidAppPull() ap = android.AndroidAppPull()
isRoot = ap.isADBRoot(); isRoot = ap.isADBRoot();
if (not isRoot): if (not isRoot):
@ -58,21 +58,42 @@ def fingerprintDir():
return return
if (not mkdir(BASE_DIR)): if (not mkdir(BASE_DIR)):
logging.error("ERROR creating directory: {}".format(BASE_DIR))
return return
if (not mkdir(FP_BASE_DIR)): if (not mkdir(FP_BASE_DIR)):
logging.error("ERROR creating directory: {}".format(FP_BASE_DIR))
return return
dir_names = ap.getAppsDir() dir_names = ap.getAppsDir()
for dir_name in dir_names: for dir_name in dir_names:
fq_dir = BASE_DIR + os.path.sep + dir_name
ap.pullApp(BASE_DIR, dir_name) ap.pullApp(BASE_DIR, dir_name)
__createFingerprint(dir_name) __createFingerprint(fq_dir, dir_name)
# #
def __createFingerprint(dir_name): def androidData(data_dir):
dir_names = []
try: try:
cdir = BASE_DIR + os.path.sep + dir_name + os.path.sep + "databases" dirs = os.listdir(data_dir)
logging.info("cdir=={}".format(cdir)) except:
files = os.listdir(cdir) return
if (not mkdir(FP_BASE_DIR)):
logging.error("ERROR creating directory: {}".format(FP_BASE_DIR))
return
for ddir in dirs:
#logging.info("ddir=={}".format(ddir))
fq_dir = data_dir + os.path.sep + ddir
__createFingerprint(fq_dir, ddir)
# in_dir: fully qualified directory path to find sqlite files
def __createFingerprint(fq_dir, dir_name):
try:
#cdir = BASE_DIR + os.path.sep + dir_name + os.path.sep + "databases"
db_dir = fq_dir + os.path.sep + "databases"
logging.info("fq_dir=={}".format(db_dir))
files = os.listdir(db_dir)
except: except:
# not finding a databases folder is normal, not all apps use sqlite # not finding a databases folder is normal, not all apps use sqlite
return return
@ -82,16 +103,16 @@ def __createFingerprint(dir_name):
logging.error('Error creating directory "{}"'.format(fdir)) logging.error('Error creating directory "{}"'.format(fdir))
return return
for filein in files: for filein in files:
ddir = cdir + os.path.sep + filein ddir = db_dir + os.path.sep + filein
logging.info('Parsing file "{}"'.format(ddir)) logging.info('Parsing file "{}"'.format(ddir))
retVal = db.scanDBFile(ddir) retVal = db.scanDBFile(ddir)
if (retVal > 0): if (retVal > 0):
fname = dir_name + "__" + filein + "__dbfp" + ".json" fname = dir_name + "__" + filein + "__dbfp" + ".json"
fdir_name = fdir + os.path.sep + fname fdir_name = fdir + os.path.sep + fname
fh = open(fdir_name, "w") #fh = open(fdir_name, "w")
db.setAppName(dir_name) db.setAppName(dir_name)
db.writeFingerprint(fh) db.writeFingerprintFile(fdir_name)
fh.close() #fh.close()
# #
def __getFileName(): def __getFileName():
@ -118,7 +139,7 @@ def parseArgs():
parser.add_argument('-fd', '--fpdir', required=False, help="path to directory of fingerprint files") parser.add_argument('-fd', '--fpdir', required=False, help="path to directory of fingerprint files")
parser.add_argument('-fp', '--fingerprint', required=False, help="fingerprint file to use in comparison") parser.add_argument('-fp', '--fingerprint', required=False, help="fingerprint file to use in comparison")
parser.add_argument('-dd', '--data_dir', required=False, help="path to a directory with sqlite files") parser.add_argument('-dd', '--data_dir', required=False, help="path to a directory with sqlite files")
parser.add_argument('-an', '--app_name', required=False) parser.add_argument('-an', '--app_name', required=False)
parser.add_argument('-av', '--app_version', required=False) parser.add_argument('-av', '--app_version', required=False)
parser.add_argument('-n', '--notes', required=False) parser.add_argument('-n', '--notes', required=False)
parser.add_argument('-pull', '--pull', required=False, action='store_true', help="automated physical ") parser.add_argument('-pull', '--pull', required=False, action='store_true', help="automated physical ")
@ -131,9 +152,9 @@ def parseArgs():
elif (args.file and args.fpdir): elif (args.file and args.fpdir):
compareFingerprintDir(args.file, args.fpdir) compareFingerprintDir(args.file, args.fpdir)
elif (args.data_dir): elif (args.data_dir):
pass androidData(args.data_dir)
elif (args.pull): elif (args.pull):
fingerprintDir() androidPull()
elif (args.file): elif (args.file):
createFingerprint(args.file, args.verbose, args.app_name, args.app_version, args.notes) createFingerprint(args.file, args.verbose, args.app_name, args.app_version, args.notes)
else: else:

View File

@ -56,4 +56,3 @@ class AndroidAppPull:
if (0 < stdout.find('already running')): if (0 < stdout.find('already running')):
retval = True retval = True
return retval return retval

View File

@ -85,30 +85,30 @@ class FingerprintDB:
return return
try: try:
fileout = toolbox.ToolBox.getTimestampFilename(self.filein) filename = toolbox.ToolBox.getTimestampFilename(self.filein)
fh = open(fileout, "w") fh = open(filename, "w")
try: try:
self.__writeFingerprint(fh) self.__writeFingerprint(fh)
finally: finally:
fh.close() fh.close()
except Exception, ex: except Exception, ex:
logging.error(ex) logging.error(ex)
raise FingerprintWrite("Problem writing the fingerprint to a file") raise FingerprintWrite("Problem writing the fingerprint to a file, file=={}".format(filename))
# #
def writeFingerprintFile(self, fileout): def writeFingerprintFile(self, filename):
if (not self.scanned): if (not self.scanned):
return return
try: try:
fh = open(fileout, "w") fh = open(filename, "w")
try: try:
self.__writeFingerprint(fh) self.__writeFingerprint(fh)
finally: finally:
fh.close() fh.close()
except Exception, ex: except Exception, ex:
logging.error(ex) logging.error(ex)
raise FingerprintWrite("Problem writing the fingerprint to a file") raise FingerprintWrite("Problem writing the fingerprint to a file, file=={}".format(filename))
# import fingerprint from a json file # import fingerprint from a json file