MOD: improved scan handling, updated index schema

This commit is contained in:
JohnE 2016-02-29 17:12:19 -08:00
parent 8c1366d8cd
commit 40d10614a9
3 changed files with 30 additions and 32 deletions

View File

@ -154,7 +154,7 @@ def queryMD5(fp_dir, md5_db):
try:
fp = FingerprintIndex()
fp.openIndex(fp_dir)
results = fp.queryMetadata(md5_db)
results = fp.queryAppDetails(md5_db)
for row in results:
print "[{}]\nDB: {}\nFP: {}\nDate: {}\n".format(row[0], row[2], row[3], row[4])
except Exception as ex:

View File

@ -50,13 +50,13 @@ class FingerprintDB:
self.table_hashes = None
self.filein = ""
self.init = False
# fingerprint metadata
self.metadata = {}
self.metadata['db-name'] = ""
self.metadata['app-name'] = ""
self.metadata['app-ver'] = ""
self.metadata['notes'] = ""
self.metadata['scan-date'] = ""
# db file details
self.file_details = {}
self.file_details['db-name'] = ""
self.file_details['app-name'] = ""
self.file_details['app-ver'] = ""
self.file_details['notes'] = ""
self.file_details['scan-date'] = ""
#
def scanDBFile(self, filein):
@ -64,22 +64,20 @@ class FingerprintDB:
try:
(self.conn, self.cur) = self.__openDB(filein)
except Exception, ex:
logging.info(ex)
raise
try:
# extract file name from path+filename
self.metadata['db-name'] = os.path.basename(filein)
self.file_details['db-name'] = os.path.basename(filein)
except Exception as ex:
logging.error(ex)
self.metadata['db-name'] = filein
logging.warn(ex)
self.file_details['db-name'] = filein
try:
# read database schema, parse the schema
self.__readDatabase()
# concat all the table create statements, then md5
self.__createMD5DB()
except Exception as ex:
logging.error(ex)
raise
# create and index of table hashes
@ -166,7 +164,7 @@ class FingerprintDB:
dbmt = jsonData['db-metadata']
dbht = jsonData['db-metadata-hashes']
dbmd5 = jsonData['db-metadata-md5']
metadata = jsonData['_file-metadata']
metadata = jsonData['_file-details']
all_tables = tb.keys()
for table_name in all_tables:
@ -178,7 +176,7 @@ class FingerprintDB:
self.tables = tables
self.db_hash = dbmd5
self.table_hashes = dbht
self.metadata = metadata
self.file_details = metadata
except Exception as ex:
logging.error("ERROR: problem loading json file: \n{}\n{}".format(file_json, ex))
@ -305,7 +303,7 @@ class FingerprintDB:
dmhash = {}
shash = {}
mhash = {}
ahash['_file-metadata'] = mhash
ahash['_file-details'] = mhash
ahash['db-metadata'] = dmhash
ahash['db-metadata-hashes'] = shash
ahash['db-metadata-md5'] = None
@ -320,10 +318,10 @@ class FingerprintDB:
mhash['format-ver'] = self.format_ver
mhash['scanner-ver'] = self.scanner_ver
mhash['scanner-name'] = 'dbfp'
mhash['db-name'] = self.metadata['db-name']
mhash['app-name'] = self.metadata['app-name']
mhash['app-ver'] = self.metadata['app-ver']
mhash['notes'] = self.metadata['notes']
mhash['db-name'] = self.file_details['db-name']
mhash['app-name'] = self.file_details['app-name']
mhash['app-ver'] = self.file_details['app-ver']
mhash['notes'] = self.file_details['notes']
# tables
tables = self.tables.keys()
@ -356,15 +354,15 @@ class FingerprintDB:
#
def setAppName(self, name):
self.metadata['app-name'] = name
self.file_details['app-name'] = name
#
def setAppVer(self, version):
self.metadata['app-ver'] = version
self.file_details['app-ver'] = version
#
def setNotes(self, notes):
self.metadata['notes'] = notes
self.file_details['notes'] = notes
#
def getErrorString(self, errorCode):

View File

@ -98,8 +98,8 @@ class FingerprintIndex:
return rows
#
def queryMetadata(self, md5_db):
rows = self.__qMetadata(md5_db)
def queryAppDetails(self, md5_db):
rows = self.__qAppDetails(md5_db)
return rows
#
@ -141,11 +141,11 @@ class FingerprintIndex:
logging.error(ex)
#
def __qMetadata(self, md5_db):
def __qAppDetails(self, md5_db):
try:
rows = self.cur.execute('''
SELECT app_name, app_ver, db_file, fp_file, scan_date
FROM metadata
FROM file_details
WHERE md5_db=?
''', [md5_db])
@ -175,7 +175,7 @@ class FingerprintIndex:
fp_count INTEGER);
''')
self.db_conn.execute('''
CREATE TABLE metadata (
CREATE TABLE file_details (
md5_db TEXT,
app_name TEXT,
app_ver TEXT,
@ -207,7 +207,7 @@ class FingerprintIndex:
db.importJson(fq_file)
self.__insertMod_md5_all(db.db_hash, db.table_hashes.values(), file)
self.__insertMod_md5_tables(db.table_hashes.values(), file)
self.__insertMod_metadata(db, file)
self.__insertMod_file_details(db, file)
finCount = finCount+1
self.db_conn.commit()
except Exception as ex:
@ -266,12 +266,12 @@ class FingerprintIndex:
raise FingerprintIndexWrite("Error inserting a row\n{}".format(ex))
#
def __insertMod_metadata(self, db, filename):
def __insertMod_file_details(self, db, filename):
try:
self.db_conn.execute(
'''
INSERT INTO metadata VALUES(?, ?, ?, ?, ?, ?)
''', [db.db_hash, db.metadata['app-name'], db.metadata['app-ver'], db.metadata['db-name'], filename, db.metadata['scan-date']])
INSERT INTO file_details VALUES(?, ?, ?, ?, ?, ?)
''', [db.db_hash, db.file_details['app-name'], db.file_details['app-ver'], db.file_details['db-name'], filename, db.file_details['scan-date']])
except Exception as ex:
print ex
raise