#!/usr/bin/python # -*- coding: utf-8 -*- __author__ = 'Austin Taylor' from vulnwhisp.vulnwhisp import vulnWhisperer from vulnwhisp.utils.cli import bcolors import os import argparse import sys def isFileValid(parser, arg): if not os.path.exists(arg): parser.error("The file %s does not exist!" % arg) else: return arg def main(): parser = argparse.ArgumentParser(description=""" VulnWhisperer is designed to create actionable data from\ your vulnerability scans through aggregation of historical scans.""") parser.add_argument('-c', '--config', dest='config', required=False, default='frameworks.ini', help='Path of config file', type=lambda x: isFileValid(parser, x.strip())) parser.add_argument('-s', '--section', dest='section', required=False, help='Section in config') parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', default=True, help='Prints status out to screen (defaults to True)') parser.add_argument('-u', '--username', dest='username', required=False, default=None, type=lambda x: x.strip(), help='The NESSUS username') parser.add_argument('-p', '--password', dest='password', required=False, default=None, type=lambda x: x.strip(), help='The NESSUS password') args = parser.parse_args() try: if args.config and not args.section: print('{red} ERROR: {error}{endc}'.format(red=bcolors.FAIL, error='Please specify a section using -s. \ \nExample vuln_whisperer -c config.ini -s nessus', endc=bcolors.ENDC)) else: vw = vulnWhisperer(config=args.config, profile=args.section, verbose=args.verbose, username=args.username, password=args.password) vw.whisper_vulnerabilities() sys.exit(1) except Exception as e: if args.verbose: print('{red} ERROR: {error}{endc}'.format(red=bcolors.FAIL, error=e, endc=bcolors.ENDC)) sys.exit(2) if __name__ == '__main__': main()