diff --git a/dbfp.py b/dbfp.py index db6d36b..7849b1c 100644 --- a/dbfp.py +++ b/dbfp.py @@ -50,7 +50,7 @@ def createFingerprint(filein, verbose, app_name, app_ver, notes): print db.getErrorString(retVal) # -def fingerprintDir(): +def androidPull(): ap = android.AndroidAppPull() isRoot = ap.isADBRoot(); if (not isRoot): @@ -58,21 +58,42 @@ def fingerprintDir(): return if (not mkdir(BASE_DIR)): + logging.error("ERROR creating directory: {}".format(BASE_DIR)) return if (not mkdir(FP_BASE_DIR)): + logging.error("ERROR creating directory: {}".format(FP_BASE_DIR)) return dir_names = ap.getAppsDir() for dir_name in dir_names: + fq_dir = BASE_DIR + os.path.sep + 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: - cdir = BASE_DIR + os.path.sep + dir_name + os.path.sep + "databases" - logging.info("cdir=={}".format(cdir)) - files = os.listdir(cdir) + dirs = os.listdir(data_dir) + except: + 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: # not finding a databases folder is normal, not all apps use sqlite return @@ -82,16 +103,16 @@ def __createFingerprint(dir_name): logging.error('Error creating directory "{}"'.format(fdir)) return for filein in files: - ddir = cdir + os.path.sep + filein + ddir = db_dir + os.path.sep + filein logging.info('Parsing file "{}"'.format(ddir)) retVal = db.scanDBFile(ddir) if (retVal > 0): fname = dir_name + "__" + filein + "__dbfp" + ".json" fdir_name = fdir + os.path.sep + fname - fh = open(fdir_name, "w") + #fh = open(fdir_name, "w") db.setAppName(dir_name) - db.writeFingerprint(fh) - fh.close() + db.writeFingerprintFile(fdir_name) + #fh.close() # 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('-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('-an', '--app_name', required=False) + parser.add_argument('-an', '--app_name', required=False) parser.add_argument('-av', '--app_version', required=False) parser.add_argument('-n', '--notes', required=False) 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): compareFingerprintDir(args.file, args.fpdir) elif (args.data_dir): - pass + androidData(args.data_dir) elif (args.pull): - fingerprintDir() + androidPull() elif (args.file): createFingerprint(args.file, args.verbose, args.app_name, args.app_version, args.notes) else: diff --git a/libs/android.py b/libs/android.py index 2675cb9..6726015 100644 --- a/libs/android.py +++ b/libs/android.py @@ -56,4 +56,3 @@ class AndroidAppPull: if (0 < stdout.find('already running')): retval = True return retval - diff --git a/libs/fingerprint.py b/libs/fingerprint.py index 73ad1a2..264b866 100644 --- a/libs/fingerprint.py +++ b/libs/fingerprint.py @@ -85,30 +85,30 @@ class FingerprintDB: return try: - fileout = toolbox.ToolBox.getTimestampFilename(self.filein) - fh = open(fileout, "w") + filename = toolbox.ToolBox.getTimestampFilename(self.filein) + fh = open(filename, "w") try: self.__writeFingerprint(fh) finally: fh.close() except Exception, 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): return try: - fh = open(fileout, "w") + fh = open(filename, "w") try: self.__writeFingerprint(fh) finally: fh.close() except Exception, 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