NEW: added new command line switch "-idx" for the index
This commit is contained in:
parent
c91a0f74dd
commit
0465d31781
29
dbfp.py
29
dbfp.py
|
@ -6,9 +6,9 @@ import argparse
|
|||
import logging
|
||||
from subprocess import Popen, PIPE, check_call
|
||||
# our libs
|
||||
from libs import fingerprint
|
||||
from libs import android
|
||||
from libs.toolbox import ToolBox
|
||||
from libs.fingerprint import FingerprintDB
|
||||
from libs.fingerprint_index import FingerprintIndex
|
||||
|
||||
BASE_DIR = "data"
|
||||
|
@ -20,22 +20,16 @@ def main():
|
|||
logging.basicConfig(level=logging.DEBUG)
|
||||
parseArgs()
|
||||
|
||||
#
|
||||
def compareFingerprintDir(filein, fpdir):
|
||||
db = fingerprint.FingerprintDB()
|
||||
fp = FingerprintIndex()
|
||||
fp.openIndex()
|
||||
|
||||
#
|
||||
def compareFingerprint(filein, filejson):
|
||||
db = fingerprint.FingerprintDB()
|
||||
db = FingerprintDB()
|
||||
db.scanDBFile(filein)
|
||||
percent = db.compareDB(filejson)
|
||||
print "Percent match: {}".format(str(percent))
|
||||
|
||||
#
|
||||
def createFingerprint(filein, verbose, app_name, app_ver, notes):
|
||||
db = fingerprint.FingerprintDB()
|
||||
db = FingerprintDB()
|
||||
retVal = db.scanDBFile(filein)
|
||||
if (retVal > 0):
|
||||
if verbose:
|
||||
|
@ -50,6 +44,18 @@ def createFingerprint(filein, verbose, app_name, app_ver, notes):
|
|||
else:
|
||||
print db.getErrorString(retVal)
|
||||
|
||||
#
|
||||
def indexFingerprints(fp_dir):
|
||||
logging.info("fp_dir=={}".format(fp_dir))
|
||||
db = FingerprintDB()
|
||||
fp = FingerprintIndex()
|
||||
fp.openIndex(fp_dir)
|
||||
|
||||
#
|
||||
def compareFingerprintDir(file_in, fp_dir):
|
||||
db = FingerprintDB()
|
||||
fp = FingerprintIndex()
|
||||
|
||||
#
|
||||
def androidPull():
|
||||
ap = android.AndroidAppPull()
|
||||
|
@ -133,10 +139,11 @@ def parseArgs():
|
|||
parser.add_argument('-fd', '--fpdir', required=False, help="path to directory of fingerprint files")
|
||||
parser.add_argument('-fp', '--fingerprint', required=False, help="fingerprint file to use in comparison")
|
||||
parser.add_argument('-dd', '--data_dir', required=False, help="path to a directory with sqlite files")
|
||||
parser.add_argument('-idx', '--index_fingerprints', required=False, help="path to a directory with sqlite files")
|
||||
parser.add_argument('-an', '--app_name', required=False)
|
||||
parser.add_argument('-av', '--app_version', required=False)
|
||||
parser.add_argument('-n', '--notes', required=False)
|
||||
parser.add_argument('-pull', '--pull', required=False, action='store_true', help="automated physical ")
|
||||
parser.add_argument('-pull', required=False, action='store_true', help="automated pull of applications from a physical android phone")
|
||||
parser.add_argument('-v', '--verbose', action='store_true')
|
||||
# parser.add_argument('-t', '--title', required=False)
|
||||
args = parser.parse_args()
|
||||
|
@ -147,6 +154,8 @@ def parseArgs():
|
|||
compareFingerprintDir(args.file, args.fpdir)
|
||||
elif (args.data_dir):
|
||||
androidData(args.data_dir)
|
||||
elif (args.index_fingerprints):
|
||||
indexFingerprints(args.index_fingerprints)
|
||||
elif (args.pull):
|
||||
androidPull()
|
||||
elif (args.file):
|
||||
|
|
|
@ -47,7 +47,7 @@ class AndroidAppPull:
|
|||
stdout, stderr = process.communicate()
|
||||
return stdout, stderr
|
||||
|
||||
|
||||
#
|
||||
def isADBRoot(self):
|
||||
retval = False
|
||||
process = Popen(["adb", "root"], stdout=PIPE, stderr=PIPE)
|
||||
|
|
|
@ -7,6 +7,7 @@ import os
|
|||
import sys
|
||||
import logging
|
||||
import sqlite3 as sql
|
||||
from libs.exceptions import FingerprintIndexWrite
|
||||
from libs.fingerprint import FingerprintDB
|
||||
|
||||
# prefixed with "_" so that it will be listed first and visible
|
||||
|
@ -23,20 +24,25 @@ class FingerprintIndex:
|
|||
self.db_conn = None
|
||||
return
|
||||
|
||||
def openIndex(self, fpdir):
|
||||
fq_fpidx = fpdir + os.path.sep + INDEX_FILENAME
|
||||
#
|
||||
def openIndex(self, fp_dir):
|
||||
fq_fpidx = fp_dir + os.path.sep + INDEX_FILENAME
|
||||
try:
|
||||
if (os.path.isfile(fq_fpidx)):
|
||||
self.db_conn = sql.connect(fq_fpidx)
|
||||
logging.info("DB Open SUCCESSFUL")
|
||||
except:
|
||||
self.db_conn = None
|
||||
logging.info("No index file found, creating index now...")
|
||||
# create the Index file, also populate it with entrieds from the fingerprint
|
||||
self.creatIndex(fpdir)
|
||||
try:
|
||||
# create the Index file, also populate it with entrieds from the fingerprint
|
||||
self.createIndex(fp_dir)
|
||||
except:
|
||||
logging.info("ERROR: issue creating the index file")
|
||||
|
||||
#
|
||||
def createIndex(self, fpdir):
|
||||
fq_fpidx = fpdir + os.path.sep + INDEX_FILENAME
|
||||
def createIndex(self, fp_dir):
|
||||
fq_fpidx = fp_dir + os.path.sep + INDEX_FILENAME
|
||||
try:
|
||||
self.db_conn = sql.connect(fq_fpidx)
|
||||
self.db_conn.execute('''
|
||||
|
@ -46,28 +52,26 @@ class FingerprintIndex:
|
|||
file_name TEXT);
|
||||
''')
|
||||
logging.info("Successfully created index table")
|
||||
except:
|
||||
logging.error("Error creating index table")
|
||||
finally:
|
||||
if self.db_conn:
|
||||
self.db_conn.close()
|
||||
self.db_conn = None
|
||||
raise FingerprintIndexWrite("Error creating an index file")
|
||||
|
||||
self.__populateIndex(fpdir)
|
||||
self.__populateIndex(fp_dir)
|
||||
|
||||
|
||||
def __populateIndex(self, fpdir):
|
||||
def __populateIndex(self, fp_dir):
|
||||
#
|
||||
# read each file, pull md5, add row to database
|
||||
failCount = 0
|
||||
finCount = 0
|
||||
try:
|
||||
db = FingerprintDB()
|
||||
files = os.listdir(fpdir)
|
||||
files = os.listdir(fp_dir)
|
||||
for file in Files:
|
||||
try:
|
||||
fq_file = fpdir + os.path.sep + file
|
||||
fq_file = fp_dir + os.path.sep + file
|
||||
dbht = db.importJsonIndex(fq_file)
|
||||
md5_all = __createMD5Index(dbht)
|
||||
|
||||
|
|
Loading…
Reference in New Issue