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:
|
try:
|
||||||
fp = FingerprintIndex()
|
fp = FingerprintIndex()
|
||||||
fp.openIndex(fp_dir)
|
fp.openIndex(fp_dir)
|
||||||
results = fp.queryMetadata(md5_db)
|
results = fp.queryAppDetails(md5_db)
|
||||||
for row in results:
|
for row in results:
|
||||||
print "[{}]\nDB: {}\nFP: {}\nDate: {}\n".format(row[0], row[2], row[3], row[4])
|
print "[{}]\nDB: {}\nFP: {}\nDate: {}\n".format(row[0], row[2], row[3], row[4])
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
|
|
@ -50,13 +50,13 @@ class FingerprintDB:
|
||||||
self.table_hashes = None
|
self.table_hashes = None
|
||||||
self.filein = ""
|
self.filein = ""
|
||||||
self.init = False
|
self.init = False
|
||||||
# fingerprint metadata
|
# db file details
|
||||||
self.metadata = {}
|
self.file_details = {}
|
||||||
self.metadata['db-name'] = ""
|
self.file_details['db-name'] = ""
|
||||||
self.metadata['app-name'] = ""
|
self.file_details['app-name'] = ""
|
||||||
self.metadata['app-ver'] = ""
|
self.file_details['app-ver'] = ""
|
||||||
self.metadata['notes'] = ""
|
self.file_details['notes'] = ""
|
||||||
self.metadata['scan-date'] = ""
|
self.file_details['scan-date'] = ""
|
||||||
|
|
||||||
#
|
#
|
||||||
def scanDBFile(self, filein):
|
def scanDBFile(self, filein):
|
||||||
|
@ -64,22 +64,20 @@ class FingerprintDB:
|
||||||
try:
|
try:
|
||||||
(self.conn, self.cur) = self.__openDB(filein)
|
(self.conn, self.cur) = self.__openDB(filein)
|
||||||
except Exception, ex:
|
except Exception, ex:
|
||||||
logging.info(ex)
|
|
||||||
raise
|
raise
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# extract file name from path+filename
|
# 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:
|
except Exception as ex:
|
||||||
logging.error(ex)
|
logging.warn(ex)
|
||||||
self.metadata['db-name'] = filein
|
self.file_details['db-name'] = filein
|
||||||
try:
|
try:
|
||||||
# read database schema, parse the schema
|
# read database schema, parse the schema
|
||||||
self.__readDatabase()
|
self.__readDatabase()
|
||||||
# concat all the table create statements, then md5
|
# concat all the table create statements, then md5
|
||||||
self.__createMD5DB()
|
self.__createMD5DB()
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
logging.error(ex)
|
|
||||||
raise
|
raise
|
||||||
|
|
||||||
# create and index of table hashes
|
# create and index of table hashes
|
||||||
|
@ -166,7 +164,7 @@ class FingerprintDB:
|
||||||
dbmt = jsonData['db-metadata']
|
dbmt = jsonData['db-metadata']
|
||||||
dbht = jsonData['db-metadata-hashes']
|
dbht = jsonData['db-metadata-hashes']
|
||||||
dbmd5 = jsonData['db-metadata-md5']
|
dbmd5 = jsonData['db-metadata-md5']
|
||||||
metadata = jsonData['_file-metadata']
|
metadata = jsonData['_file-details']
|
||||||
|
|
||||||
all_tables = tb.keys()
|
all_tables = tb.keys()
|
||||||
for table_name in all_tables:
|
for table_name in all_tables:
|
||||||
|
@ -178,7 +176,7 @@ class FingerprintDB:
|
||||||
self.tables = tables
|
self.tables = tables
|
||||||
self.db_hash = dbmd5
|
self.db_hash = dbmd5
|
||||||
self.table_hashes = dbht
|
self.table_hashes = dbht
|
||||||
self.metadata = metadata
|
self.file_details = metadata
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
logging.error("ERROR: problem loading json file: \n{}\n{}".format(file_json, ex))
|
logging.error("ERROR: problem loading json file: \n{}\n{}".format(file_json, ex))
|
||||||
|
|
||||||
|
@ -305,7 +303,7 @@ class FingerprintDB:
|
||||||
dmhash = {}
|
dmhash = {}
|
||||||
shash = {}
|
shash = {}
|
||||||
mhash = {}
|
mhash = {}
|
||||||
ahash['_file-metadata'] = mhash
|
ahash['_file-details'] = mhash
|
||||||
ahash['db-metadata'] = dmhash
|
ahash['db-metadata'] = dmhash
|
||||||
ahash['db-metadata-hashes'] = shash
|
ahash['db-metadata-hashes'] = shash
|
||||||
ahash['db-metadata-md5'] = None
|
ahash['db-metadata-md5'] = None
|
||||||
|
@ -320,10 +318,10 @@ class FingerprintDB:
|
||||||
mhash['format-ver'] = self.format_ver
|
mhash['format-ver'] = self.format_ver
|
||||||
mhash['scanner-ver'] = self.scanner_ver
|
mhash['scanner-ver'] = self.scanner_ver
|
||||||
mhash['scanner-name'] = 'dbfp'
|
mhash['scanner-name'] = 'dbfp'
|
||||||
mhash['db-name'] = self.metadata['db-name']
|
mhash['db-name'] = self.file_details['db-name']
|
||||||
mhash['app-name'] = self.metadata['app-name']
|
mhash['app-name'] = self.file_details['app-name']
|
||||||
mhash['app-ver'] = self.metadata['app-ver']
|
mhash['app-ver'] = self.file_details['app-ver']
|
||||||
mhash['notes'] = self.metadata['notes']
|
mhash['notes'] = self.file_details['notes']
|
||||||
|
|
||||||
# tables
|
# tables
|
||||||
tables = self.tables.keys()
|
tables = self.tables.keys()
|
||||||
|
@ -356,15 +354,15 @@ class FingerprintDB:
|
||||||
|
|
||||||
#
|
#
|
||||||
def setAppName(self, name):
|
def setAppName(self, name):
|
||||||
self.metadata['app-name'] = name
|
self.file_details['app-name'] = name
|
||||||
|
|
||||||
#
|
#
|
||||||
def setAppVer(self, version):
|
def setAppVer(self, version):
|
||||||
self.metadata['app-ver'] = version
|
self.file_details['app-ver'] = version
|
||||||
|
|
||||||
#
|
#
|
||||||
def setNotes(self, notes):
|
def setNotes(self, notes):
|
||||||
self.metadata['notes'] = notes
|
self.file_details['notes'] = notes
|
||||||
|
|
||||||
#
|
#
|
||||||
def getErrorString(self, errorCode):
|
def getErrorString(self, errorCode):
|
||||||
|
|
|
@ -98,8 +98,8 @@ class FingerprintIndex:
|
||||||
return rows
|
return rows
|
||||||
|
|
||||||
#
|
#
|
||||||
def queryMetadata(self, md5_db):
|
def queryAppDetails(self, md5_db):
|
||||||
rows = self.__qMetadata(md5_db)
|
rows = self.__qAppDetails(md5_db)
|
||||||
return rows
|
return rows
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -141,11 +141,11 @@ class FingerprintIndex:
|
||||||
logging.error(ex)
|
logging.error(ex)
|
||||||
|
|
||||||
#
|
#
|
||||||
def __qMetadata(self, md5_db):
|
def __qAppDetails(self, md5_db):
|
||||||
try:
|
try:
|
||||||
rows = self.cur.execute('''
|
rows = self.cur.execute('''
|
||||||
SELECT app_name, app_ver, db_file, fp_file, scan_date
|
SELECT app_name, app_ver, db_file, fp_file, scan_date
|
||||||
FROM metadata
|
FROM file_details
|
||||||
WHERE md5_db=?
|
WHERE md5_db=?
|
||||||
''', [md5_db])
|
''', [md5_db])
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ class FingerprintIndex:
|
||||||
fp_count INTEGER);
|
fp_count INTEGER);
|
||||||
''')
|
''')
|
||||||
self.db_conn.execute('''
|
self.db_conn.execute('''
|
||||||
CREATE TABLE metadata (
|
CREATE TABLE file_details (
|
||||||
md5_db TEXT,
|
md5_db TEXT,
|
||||||
app_name TEXT,
|
app_name TEXT,
|
||||||
app_ver TEXT,
|
app_ver TEXT,
|
||||||
|
@ -207,7 +207,7 @@ class FingerprintIndex:
|
||||||
db.importJson(fq_file)
|
db.importJson(fq_file)
|
||||||
self.__insertMod_md5_all(db.db_hash, db.table_hashes.values(), file)
|
self.__insertMod_md5_all(db.db_hash, db.table_hashes.values(), file)
|
||||||
self.__insertMod_md5_tables(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
|
finCount = finCount+1
|
||||||
self.db_conn.commit()
|
self.db_conn.commit()
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
@ -266,12 +266,12 @@ class FingerprintIndex:
|
||||||
raise FingerprintIndexWrite("Error inserting a row\n{}".format(ex))
|
raise FingerprintIndexWrite("Error inserting a row\n{}".format(ex))
|
||||||
|
|
||||||
#
|
#
|
||||||
def __insertMod_metadata(self, db, filename):
|
def __insertMod_file_details(self, db, filename):
|
||||||
try:
|
try:
|
||||||
self.db_conn.execute(
|
self.db_conn.execute(
|
||||||
'''
|
'''
|
||||||
INSERT INTO metadata VALUES(?, ?, ?, ?, ?, ?)
|
INSERT INTO file_details VALUES(?, ?, ?, ?, ?, ?)
|
||||||
''', [db.db_hash, db.metadata['app-name'], db.metadata['app-ver'], db.metadata['db-name'], filename, db.metadata['scan-date']])
|
''', [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:
|
except Exception as ex:
|
||||||
print ex
|
print ex
|
||||||
raise
|
raise
|
||||||
|
|
Loading…
Reference in New Issue