Beispiel #1
0
def main(args):

    logging.basicConfig()

    # debug
    if args.debug:
        logger.setLevel(logging.DEBUG)

    if not args.filter_path:
        logger.error(
            "Please specify a file containing the memory filter to be applied."
        )
        sys.exit(0)

    # open the filter
    f = open(args.filter_path, 'r')
    filter_string = f.read()
    f.close()

    filter_dict = ast.literal_eval(filter_string)

    mem_filter = MemoryFilter(filter_dict)

    import lophi_automation.database.datastore as datastore
    db_uri = 'mongodb://' + args.db_host + ':27017/lophi_db'
    analysis_datastore = datastore.Datastore(db_uri + G.DB_ANALYSES)
    results = analysis_datastore.db.collection.find({
        'status':
        'COMPLETED',
        "machine_type":
        args.machine_type,
        "analysis_script":
        args.analysis_script,
        "volatility_profile":
        args.volatility_profile
    })

    logger.info("Processing %d analyses..." % results.count())

    for result in results:
        mem_results = result['memory_analysis']

        filtered_results_dict = mem_filter.apply_filter(mem_results)

        analysis_datastore.db.collection.update(
            {'_id': result['_id']},
            {'$set': {
                'memory_analysis_filtered': filtered_results_dict
            }})

        logger.info("Filtered results for %s" % result['_id'])