NEW: added processing of an android data folder
This commit is contained in:
parent
2c1a131c30
commit
c87aea45f0
45
dbfp.py
45
dbfp.py
|
@ -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():
|
||||||
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue