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