shadowbrokers-exploits/windows/Resources/Ops/PyScripts/survey.py
2017-04-14 11:45:07 +02:00

75 lines
No EOL
3.9 KiB
Python

from __future__ import print_function
import json
import os
import sys
from ops.parseargs import ArgumentParser
import dsz
import ops, ops.env, ops.survey, ops.cmd
import ops.survey.engines
import ops.override.commands
from ops.survey.engine.bugcatcher import bugcatcher, wasCaught, userQuitScript
def execute(config, sections=None, quiet=False):
if (not os.path.exists(config)):
raise RuntimeError, ('%s not found.' % config)
if (sections is None):
sections = ops.survey.DEFAULT_SECTIONS
ops.env.set('OPS_SIMPLE', False)
ops.survey.setupEnv()
success = True
try:
for i in sections:
bugcatcher((lambda : ops.survey.engines.run(fullpath=config, sections=[i])), bug_critical=True)
except Exception as e:
if wasCaught(e):
success = False
elif userQuitScript(e):
ops.error('User quit script.')
success = False
else:
raise
print()
ops.env.set('OPS_SIMPLE', True)
if (not quiet):
ops.info('Commands currently running in the background:')
ops.override.commands.main()
if (not success):
sys.exit((-1))
def main():
parser = ArgumentParser(prog='survey')
actiongrp = parser.add_mutually_exclusive_group(required=True)
actiongrp.add_argument('--run', dest='run', const=ops.survey.DEFAULT_CONFIG, nargs='?', metavar='SURVEY', help='Run specified survey. Uses default if none specified. (%(const)s)')
actiongrp.add_argument('--modify', dest='modify', action='store_true', default=False, help='Manipulate the settings for default survey.')
parser.add_argument('--sections', dest='sections', default=ops.survey.DEFAULT_SECTIONS, metavar='SECTION', nargs='+', help='Sections for --run or --override.')
modgrp = parser.add_argument_group(title='--modify options', description='These options are only used with the --modify option.')
modgrp.add_argument('--override', dest='override', help='Change the default survey file for all targets.')
modgrp.add_argument('--exclude', dest='exclude', nargs='+', metavar='GROUP', help='Adds the specified groups to the list of tasks to exclude when running survey configurations.')
modgrp.add_argument('--include', dest='include', nargs='+', metavar='GROUP', help='Removes the specified groups from the list of tasks to exclude when running survey configurations.')
modgrp.add_argument('--exclusions', dest='printex', action='store_true', default=False, help='Print out a list of excluded survey groups.')
parser.add_argument('--quiet', dest='quiet', action='store_true', default=False, help='Suppress some framework messages, including the running commands list at the end.')
options = parser.parse_args()
if ((not options.modify) and ((options.override is not None) or (options.exclude is not None) or (options.include is not None) or options.printex)):
parser.error('-modify is required for these options')
if options.modify:
if options.override:
ops.survey.override(options.override, options.sections)
if options.exclude:
if ops.survey.exclude(options.exclude):
ops.info(('%s added to exclusion list.' % options.exclude))
ops.survey.print_exclusion_list()
else:
ops.info(('%s already in exclusion list.' % options.exclude))
if options.include:
if ops.survey.include(options.include):
ops.info(('%s removed from exclusion list.' % options.include))
ops.survey.print_exclusion_list()
else:
ops.info(('%s not in exclusion list.' % options.include))
if options.printex:
ops.survey.print_exclusion_list()
else:
execute(options.run, options.sections, options.quiet)
if (__name__ == '__main__'):
main()