Created
September 20, 2016 01:18
-
-
Save leesoh/1de93710c632c61210e1e3fba8a52e2f to your computer and use it in GitHub Desktop.
Visual Studio Code snippet for an Empire module
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"Empire module": { | |
"prefix": "emp", | |
"description": "Skeleton for an Empire module", | |
"body": [ | |
"from lib.common import helpers", | |
"", | |
"", | |
"class Module:", | |
"", | |
" def __init__(self, mainMenu, params=[]):", | |
"", | |
" # metadata info about the module, not modified during runtime", | |
" self.info = {", | |
" # name for the module that will appear in module menus", | |
" 'Name': '${1}',", | |
"", | |
" # list of one or more authors for the module", | |
" 'Author': ['$2'],", | |
"", | |
" # more verbose multi-line description of the module", | |
" 'Description': ('$3'),", | |
"", | |
" # True if the module needs to run in the background", | |
" 'Background': $4,", | |
"", | |
" # File extension to save the file as", | |
" 'OutputExtension': $5,", | |
"", | |
" # True if the module needs admin rights to run", | |
" 'NeedsAdmin': $6,", | |
"", | |
" # True if the method doesn't touch disk/is reasonably opsec safe", | |
" 'OpsecSafe': $7,", | |
"", | |
" # The minimum PowerShell version needed for the module to run", | |
" 'MinPSVersion': '$8',", | |
"", | |
" # list of any references/other comments", | |
" 'Comments': [", | |
" '$9',", | |
" ]", | |
" }", | |
"", | |
" # any options needed by the module, settable during runtime", | |
" self.options = {", | |
" # format:", | |
" # value_name : {description, required, default_value}", | |
" 'Agent': {", | |
" # The 'Agent' option is the only one that MUST be in a module", | |
" 'Description' : 'Agent to execute script on.',", | |
" 'Required' : True,", | |
" 'Value' : ''", | |
" },", | |
" }", | |
"", | |
" # save off a copy of the mainMenu object to access external functionality", | |
" # like listeners/agent handlers/etc.", | |
" self.mainMenu = mainMenu", | |
"", | |
" # During instantiation, any settable option parameters", | |
" # are passed as an object set to the module and the", | |
" # options dictionary is automatically set. This is mostly", | |
" # in case options are passed on the command line", | |
" if params:", | |
" for param in params:", | |
" # parameter format is [Name, Value]", | |
" option, value = param", | |
" if option in self.options:", | |
" self.options[option]['Value'] = value", | |
"", | |
" def generate(self):", | |
" script = \"\"\"function ${1} {", | |
" ${10:Function body}", | |
" }${1}\"\"\"", | |
"", | |
" # add any arguments to the end execution of the script", | |
" for option, values in self.options.iteritems():", | |
" if option.lower() != \"agent\":", | |
" if values['Value'] and values['Value'] != '':", | |
" if values['Value'].lower() == \"true\":", | |
" # if we're just adding a switch", | |
" script += \" -\" + str(option)", | |
" else:", | |
" script += \" -\" + str(option) + \" \" + str(values['Value'])", | |
"", | |
" return script", | |
"" | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment