MOD: improved scan handling, updated index schema
This commit is contained in:
parent
8c1366d8cd
commit
40d10614a9
2
dbfp.py
2
dbfp.py
|
@ -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:
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue