shadowbrokers-exploits/windows/Resources/Ops/PyScripts/lib/ops/data/services.py

33 lines
2.5 KiB
Python
Raw Normal View History

from ops.data import OpsClass, OpsField, DszObject, DszCommandObject, cmd_definitions
import dsz
class ServicesCommandData(DszCommandObject, ):
def __init__(self, cmdid=None, cmdname='', debug=False, **kwargs):
DszCommandObject.__init__(self, cmdid, cmdname, debug)
self.update(debug)
self._quickdict = None
def _makedict(self):
self._quickdict = dict()
for service in self.service:
self._quickdict[service.servicename.lower()] = service
def __contains__(self, key):
key = key.lower()
if (self._quickdict is None):
self._makedict()
return (key in self._quickdict)
def __getitem__(self, key):
key = key.lower()
if (self._quickdict is None):
self._makedict()
if (key in self._quickdict):
return self._quickdict[key]
raise KeyError(('There is no service named %s in the service list' % key))
if ('services' not in cmd_definitions):
dszservice = OpsClass('service', {'servicename': OpsField('servicename', dsz.TYPE_STRING), 'state': OpsField('state', dsz.TYPE_STRING), 'displayname': OpsField('displayname', dsz.TYPE_STRING), 'acceptedcodes': OpsClass('acceptedcodes', {'acceptspowerevent': OpsField('acceptspowerevent', dsz.TYPE_BOOL), 'acceptsshutdown': OpsField('acceptsshutdown', dsz.TYPE_BOOL), 'acceptsnetbindchange': OpsField('acceptsnetbindchange', dsz.TYPE_BOOL), 'acceptspausecontinue': OpsField('acceptspausecontinue', dsz.TYPE_BOOL), 'acceptshardwareprofchange': OpsField('acceptshardwareprofchange', dsz.TYPE_BOOL), 'acceptsparamchange': OpsField('acceptsparamchange', dsz.TYPE_BOOL), 'acceptssessionchange': OpsField('acceptssessionchange', dsz.TYPE_BOOL), 'acceptsstop': OpsField('acceptsstop', dsz.TYPE_BOOL), 'value': OpsField('value', dsz.TYPE_INT)}, DszObject, single=True), 'servicetype': OpsClass('servicetype', {'servicesharesprocess': OpsField('servicesharesprocess', dsz.TYPE_BOOL), 'servicefilesystemdriver': OpsField('servicefilesystemdriver', dsz.TYPE_BOOL), 'serviceownprocess': OpsField('serviceownprocess', dsz.TYPE_BOOL), 'servicedevicedriver': OpsField('servicedevicedriver', dsz.TYPE_BOOL), 'serviceinteractiveprocess': OpsField('serviceinteractiveprocess', dsz.TYPE_BOOL), 'value': OpsField('value', dsz.TYPE_INT)}, DszObject, single=True)}, DszObject, single=False)
servicescommand = OpsClass('services', {'service': dszservice}, ServicesCommandData)
cmd_definitions['services'] = servicescommand