コード例 #1
0
def main():
    """MAIN PROGRAM"""

    logging.info("Script starting...")
    params = Params()
    logging.info("Parsing parameters...")
    try:
        params.get_args()

    except (errors.InputError, errors.ParamError) as e:
        sys.stderr.write(str(e) + '\n')
        exit(1)

    logging.info("Parsing system calls log file...")

    # Position of system call names in the log
    if params.time_included:
        column_pos = 1
    else:
        column_pos = 0

    parser = LogParser(params.input_log, column_pos)

    #print("Calls analysed: {}".format(parser.system_calls_num)) # TODO

    if params.ngram is not None:
        logging.info("Getting Ngram...")

        feature_vector = parser.ngram(params.ngram, params.normalise, params.syscalls_list)
        #print("Unique sequences: {}".format(len(feature_vector)))

    elif params.co_occurrence_matrix is not None:
        logging.info("Getting Co-occurrence matrix...")

        feature_vector = parser.co_occurrence_matrix(params.co_occurrence_matrix, params.normalise,
                                                           params.syscalls_list)
    else:
        if not params.histogram:
            sys.stderr.write("No option selected, using histogram.\n")

        logging.info("Getting Histogram...")
        feature_vector = parser.histogram(params.normalise, params.syscalls_list)

    if params.csv_values:
        #print(feature_vector.get_csv_values(), file=params.output)
        writer = csv.writer(params.output, lineterminator="\n")
        writer.writerow(feature_vector.get_values())
    else:
        print(feature_vector, file=params.output, end='')

    params.cleanup()