MOD: added a timestamp to the fingerprints folder to avoid collisions, fingerprints_2015-12-02_131904

This commit is contained in:
JohnE 2015-12-02 13:22:31 -08:00
parent 78c1727afa
commit c91a0f74dd
3 changed files with 24 additions and 12 deletions

18
dbfp.py
View File

@ -8,6 +8,7 @@ from subprocess import Popen, PIPE, check_call
# our libs # our libs
from libs import fingerprint from libs import fingerprint
from libs import android from libs import android
from libs.toolbox import ToolBox
from libs.fingerprint_index import FingerprintIndex from libs.fingerprint_index import FingerprintIndex
BASE_DIR = "data" BASE_DIR = "data"
@ -68,7 +69,7 @@ def androidPull():
for dir_name in dir_names: for dir_name in dir_names:
fq_dir = BASE_DIR + os.path.sep + dir_name fq_dir = BASE_DIR + os.path.sep + dir_name
ap.pullApp(BASE_DIR, dir_name) ap.pullApp(BASE_DIR, dir_name)
__createFingerprint(fq_dir, dir_name) __createFingerprint(fq_dir, FP_BASE_DIR, dir_name)
# #
def androidData(data_dir): def androidData(data_dir):
@ -78,19 +79,20 @@ def androidData(data_dir):
except: except:
return return
if (not mkdir(FP_BASE_DIR)): out_dir = FP_BASE_DIR + "_" + ToolBox.getTimestampStr()
if (not mkdir(out_dir)):
logging.error("ERROR creating directory: {}".format(FP_BASE_DIR)) logging.error("ERROR creating directory: {}".format(FP_BASE_DIR))
return return
for ddir in dirs: for ddir in dirs:
fq_dir = data_dir + os.path.sep + ddir in_dir = data_dir + os.path.sep + ddir
__createFingerprint(fq_dir, ddir) __createFingerprint(in_dir, out_dir, ddir)
# in_dir: fully qualified directory path to find sqlite files # in_dir: fully qualified directory path to find sqlite files
def __createFingerprint(fq_dir, dir_name): def __createFingerprint(in_dir, out_dir, dir_name):
try: try:
db_dir = fq_dir + os.path.sep + "databases" db_dir = in_dir + os.path.sep + "databases"
logging.info("fq_dir=={}".format(db_dir)) logging.info("in_dir=={}".format(db_dir))
files = os.listdir(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
@ -102,7 +104,7 @@ def __createFingerprint(fq_dir, dir_name):
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"
fq_name = FP_BASE_DIR + os.path.sep + fname fq_name = out_dir + os.path.sep + fname
db.setAppName(dir_name) db.setAppName(dir_name)
db.writeFingerprintFile(fq_name) db.writeFingerprintFile(fq_name)

View File

@ -7,7 +7,7 @@ import sqlite3
import hashlib import hashlib
import time import time
import logging import logging
from libs import toolbox from libs.toolbox import ToolBox
from libs.exceptions import FingerprintWrite from libs.exceptions import FingerprintWrite
delimeter = "|" delimeter = "|"
@ -66,7 +66,7 @@ class FingerprintDB:
try: try:
# extract file name from path+filename # extract file name from path+filename
self.dbName = toolbox.ToolBox.parseFilenameIncExt(filein) self.dbName = ToolBox.parseFilenameIncExt(filein)
except: except:
self.dbName = filein self.dbName = filein
try: try:
@ -87,7 +87,7 @@ class FingerprintDB:
return return
try: try:
filename = toolbox.ToolBox.getTimestampFilename(self.filein) filename = ToolBox.getTimestampFilename(self.filein)
fh = open(filename, "w") fh = open(filename, "w")
try: try:
self.__writeFingerprint(fh) self.__writeFingerprint(fh)

View File

@ -44,7 +44,17 @@ class ToolBox:
@staticmethod @staticmethod
def getTimestampFilename(fqfilename): def getTimestampFilename(fqfilename):
""" return output file name """ """ return output file name """
timestr = time.strftime('%Y-%m-%d_%H%M%S', time.localtime(time.time())) timestr = getTimestampStr()
filename = ToolBox.parseFilename(fqfilename) filename = ToolBox.parseFilename(fqfilename)
fileout = filename + "_" + timestr + '.json' fileout = filename + "_" + timestr + '.json'
return fileout return fileout
#
@staticmethod
def getTimestampStr():
timestr = '000'
try:
timestr = time.strftime('%Y-%m-%d_%H%M%S', time.localtime(time.time()))
except:
pass
return timestr