class DbStorage(Storage): def __init__(self, db=''): self.db = DBGateway(db + '.sqlite') def open(self): try: self.db.create_table(TABLE, cols=[ ' '.join([col, 'TEXT']) for col in COLUMNS], primary=PRIMARY) except Exception: return False else: return True def store(self, data_dict): data_tuple = self.align_kwargs(data_dict) if not self.db.insert(TABLE, cols=COLUMNS, vals=data_tuple): err_tuple = (data_dict.get('pdf_md5'), 'DB_ERROR: %s' % self.db.get_error()) self.db.insert(TABLE, cols=['pdf_md5', 'errors'], vals=err_tuple) def close(self): self.db.disconnect() def contains(self, key, val): return self.db.count(TABLE, key, val)
class DbStorage(Storage): def __init__(self, db=''): self.db = DBGateway(db + '.sqlite') def open(self): try: self.db.create_table( TABLE, cols=[' '.join([col, 'TEXT']) for col in COLUMNS], primary=PRIMARY) except Exception: return False else: return True def store(self, data_dict): data_tuple = self.align_kwargs(data_dict) if not self.db.insert(TABLE, cols=COLUMNS, vals=data_tuple): err_tuple = (data_dict.get('pdf_md5'), 'DB_ERROR: %s' % self.db.get_error()) self.db.insert(TABLE, cols=['pdf_md5', 'errors'], vals=err_tuple) def close(self): self.db.disconnect() def contains(self, key, val): return self.db.count(TABLE, key, val)
print 'Mapping: %s' % func.name if func.setup: print '\tsetup:\t%s\n\t\t%s' % func.setup if not self.setup(func.setup): continue while func.proceed: if not self.db.query(func.query_cmd()): sys.stderr.write("query: %s\n" % self.db.get_error()) else: func.run(self.db.db_curr.fetchone()) if not self.db.query(func.update, func.subs): sys.stderr.write("update: %s\n" % self.db.get_error()) if __name__ == '__main__': try: dbpath = sys.argv[1] if not os.path.exists(dbpath): raise IndexError MIN = sys.argv[2] MAX = sys.argv[3] except IndexError as e: print 'Invalid args: %s' % e sys.exit(0) else: db = DBGateway(os.path.basename(dbpath), os.path.dirname(dbpath)) functions = [ JSHasher(MIN, MAX), ] mapper = Mapper(db, functions) mapper.start() db.disconnect()
store(log, 'clarified', col, val) elif JSFLASH == 'flash': msg = 'FL CNT: %6d\tRID: %6d\tFile: %s\n' % (cnt, rid, pdf) logmsg(log, msg) try: ascript = decompile_flash(code) as_sdhash = make_sdhash(ascript, log) except Exception as e: ascript = 'error: %s' % e logmsg(log, 'Decompilation error [%s]: %s\n' % (pdf, str(e))) col = ('pdf_md5', 'swf', 'actionscript', 'actionscript_sdhash') val = (pdf, code, ascript, as_sdhash) store(log, 'clarified', col, val) try: log.close() except Exception: pass ''' Finish ''' DB.commit() DBout.commit() DB.disconnect() DBout.disconnect()
col = ('pdf_md5', 'js', 'de_js', 'de_js_sdhash') val = (pdf, code, de_js, de_js_sdhash) store(log, 'clarified', col, val) elif JSFLASH == 'flash': msg = 'FL CNT: %6d\tRID: %6d\tFile: %s\n' % (cnt, rid, pdf) logmsg(log, msg) try: ascript = decompile_flash(code) as_sdhash = make_sdhash(ascript, log) except Exception as e: ascript = 'error: %s' % e logmsg(log, 'Decompilation error [%s]: %s\n' % (pdf, str(e))) col = ('pdf_md5', 'swf', 'actionscript', 'actionscript_sdhash') val = (pdf, code, ascript, as_sdhash) store(log, 'clarified', col, val) try: log.close() except Exception: pass ''' Finish ''' DB.commit() DBout.commit() DB.disconnect() DBout.disconnect()
print '\tsetup:\t%s\n\t\t%s' % func.setup if not self.setup(func.setup): continue while func.proceed: if not self.db.query(func.query_cmd()): sys.stderr.write("query: %s\n" % self.db.get_error()) else: func.run(self.db.db_curr.fetchone()) if not self.db.query(func.update, func.subs): sys.stderr.write("update: %s\n" % self.db.get_error()) if __name__ == '__main__': try: dbpath = sys.argv[1] if not os.path.exists(dbpath): raise IndexError MIN = sys.argv[2] MAX = sys.argv[3] except IndexError as e: print 'Invalid args: %s' % e sys.exit(0) else: db = DBGateway(os.path.basename(dbpath), os.path.dirname(dbpath)) functions = [ JSHasher(MIN, MAX), ] mapper = Mapper(db, functions) mapper.start() db.disconnect()