def _handleAvailable(output, msg):
    results = AvailableResult()
    results.Demarshal(msg)
    from mcl.object.XmlOutput import XmlOutput
    xml = XmlOutput()
    xml.Start('Available')
    if results.available:
        xml.SetText('true')
    else:
        xml.SetText('false')
    output.RecordXml(xml)
    if results.available:
        return mcl.target.CALL_SUCCEEDED
    else:
        return mcl.target.CALL_FAILED
Ejemplo n.º 2
0
def DataHandlerMain(namespace, InputFilename, OutputFilename):
    import mcl.imports
    import mcl.data.Input
    import mcl.data.Output
    import mcl.msgtype
    import mcl.status
    import mcl.target
    import mcl.object.Message
    mcl.imports.ImportNamesWithNamespace(namespace, 'mca.security.cmd.eventlogclear', globals())
    input = mcl.data.Input.GetInput(InputFilename)
    output = mcl.data.Output.StartOutput(OutputFilename, input)
    output.Start('EventLogClear', 'eventlogclear', [])
    msg = mcl.object.Message.DemarshalMessage(input.GetData())
    if input.GetStatus() != mcl.status.MCL_SUCCESS:
        errorMsg = msg.FindMessage(mcl.object.Message.MSG_KEY_RESULT_ERROR)
        moduleError = errorMsg.FindU32(mcl.object.Message.MSG_KEY_RESULT_ERROR_MODULE)
        osError = errorMsg.FindU32(mcl.object.Message.MSG_KEY_RESULT_ERROR_OS)
        output.RecordModuleError(moduleError, osError, errorStrings)
        output.EndWithStatus(input.GetStatus())
        return True
    results = Result()
    results.Demarshal(msg)
    from mcl.object.XmlOutput import XmlOutput
    xml = XmlOutput()
    xml.Start('Cleared')
    if len(results.target) > 0:
        xml.AddAttribute('target', results.target)
    xml.SetText(results.logName)
    output.RecordXml(xml)
    output.EndWithStatus(mcl.target.CALL_SUCCEEDED)
    return True
Ejemplo n.º 3
0
def DataHandlerMain(namespace, InputFilename, OutputFilename):
    import mcl.imports
    import mcl.data.Input
    import mcl.data.Output
    import mcl.status
    import mcl.target
    import mcl.object.Message
    mcl.imports.ImportNamesWithNamespace(namespace, 'mca.file.cmd.rmdir',
                                         globals())
    input = mcl.data.Input.GetInput(InputFilename)
    output = mcl.data.Output.StartOutput(OutputFilename, input)
    output.Start('Rmdir', 'rmdir', [])
    msg = mcl.object.Message.DemarshalMessage(input.GetData())
    if input.GetStatus() != mcl.status.MCL_SUCCESS:
        errorMsg = msg.FindMessage(mcl.object.Message.MSG_KEY_RESULT_ERROR)
        moduleError = errorMsg.FindU32(
            mcl.object.Message.MSG_KEY_RESULT_ERROR_MODULE)
        osError = errorMsg.FindU32(mcl.object.Message.MSG_KEY_RESULT_ERROR_OS)
        output.RecordModuleError(moduleError, osError, errorStrings)
        output.EndWithStatus(input.GetStatus())
        return True
    result = Result()
    result.Demarshal(msg)
    from mcl.object.XmlOutput import XmlOutput
    xml = XmlOutput()
    xml.Start('TargetDir')
    xml.SetText('%s' % result.fullPath)
    output.RecordXml(xml)
    output.EndWithStatus(mcl.target.CALL_SUCCEEDED)
    return True
def DataHandlerMain(namespace, InputFilename, OutputFilename):
    import mcl.imports
    import mcl.data.Input
    import mcl.data.Output
    import mcl.status
    import mcl.target
    import mcl.object.Message
    mcl.imports.ImportNamesWithNamespace(namespace, 'mca.status.cmd.windows',
                                         globals())
    input = mcl.data.Input.GetInput(InputFilename)
    output = mcl.data.Output.StartOutput(OutputFilename, input)
    output.Start('Windows', 'windows', [])
    msg = mcl.object.Message.DemarshalMessage(input.GetData())
    if input.GetStatus() != mcl.status.MCL_SUCCESS:
        errorMsg = msg.FindMessage(mcl.object.Message.MSG_KEY_RESULT_ERROR)
        moduleError = errorMsg.FindU32(
            mcl.object.Message.MSG_KEY_RESULT_ERROR_MODULE)
        osError = errorMsg.FindU32(mcl.object.Message.MSG_KEY_RESULT_ERROR_OS)
        if input.GetStatus() == ERR_INJECT_SETUP_FAILED or input.GetStatus(
        ) == ERR_INJECT_FAILED:
            import mcl.injection.errors
            output.RecordModuleError(moduleError, 0, errorStrings)
            output.RecordModuleError(osError, 0,
                                     mcl.injection.errors.errorStrings)
        else:
            output.RecordModuleError(moduleError, osError, errorStrings)
        output.EndWithStatus(input.GetStatus())
        return True
    if msg.GetCount() == 0:
        from mcl.object.XmlOutput import XmlOutput
        xml = XmlOutput()
        xml.Start('Info')
        xml.SetText('Action completed')
        output.RecordXml(xml)
        output.EndWithStatus(input.GetStatus())
        return True
    rtn = mcl.target.CALL_SUCCEEDED
    for entry in msg:
        if entry['key'] == MSG_KEY_RESULT_BUTTON:
            if _handleButtonsData(msg, output) != mcl.target.CALL_SUCCEEDED:
                rtn = mcl.target.CALL_FAILED
        elif entry['key'] == MSG_KEY_RESULT_SCREENSHOT:
            if _handleScreenShotData(msg, output) != mcl.target.CALL_SUCCEEDED:
                rtn = mcl.target.CALL_FAILED
        elif entry['key'] == MSG_KEY_RESULT_WINDOW_STATION:
            if _handleWindowStationData(msg,
                                        output) != mcl.target.CALL_SUCCEEDED:
                rtn = mcl.target.CALL_FAILED
        elif entry['key'] == MSG_KEY_RESULT_WINDOW_INFO:
            if _handleWindowsData(msg, output) != mcl.target.CALL_SUCCEEDED:
                rtn = mcl.target.CALL_FAILED
        else:
            output.RecordError('Unhandled data key (0x%08x)' % entry['key'])
            rtn = mcl.target.CALL_FAILED

    output.EndWithStatus(rtn)
    return True
def _handleString(output, msg):
    results = StringResult()
    results.Demarshal(msg)
    from mcl.object.XmlOutput import XmlOutput
    xml = XmlOutput()
    xml.Start('String')
    xml.SetText(results.str)
    output.RecordXml(xml)
    return mcl.target.CALL_SUCCEEDED
Ejemplo n.º 6
0
def DataHandlerMain(namespace, InputFilename, OutputFilename):
    import mcl.imports
    import mcl.data.Input
    import mcl.data.Output
    import mcl.status
    import mcl.target
    import mcl.object.Message
    mcl.imports.ImportNamesWithNamespace(namespace,
                                         'mca.zbng.cmd.authentication',
                                         globals())
    input = mcl.data.Input.GetInput(InputFilename)
    output = mcl.data.Output.StartOutput(OutputFilename, input)
    output.Start('Authentication', 'authentication', [])
    msg = mcl.object.Message.DemarshalMessage(input.GetData())
    if input.GetStatus() != mcl.status.MCL_SUCCESS:
        errorMsg = msg.FindMessage(mcl.object.Message.MSG_KEY_RESULT_ERROR)
        moduleError = errorMsg.FindU32(
            mcl.object.Message.MSG_KEY_RESULT_ERROR_MODULE)
        osError = errorMsg.FindU32(mcl.object.Message.MSG_KEY_RESULT_ERROR_OS)
        if input.GetStatus() == ERR_LIBRARY_CALL_FAILED:
            try:
                mcl.imports.ImportWithNamespace(namespace, 'lib_exba.errors',
                                                globals())
                output.RecordModuleError(moduleError, osError, errorStrings,
                                         True, lib_exba.errors.errorStrings)
            except:
                raise
                output.RecordModuleError(moduleError, osError, errorStrings,
                                         False)

        else:
            output.RecordModuleError(moduleError, osError, errorStrings)
        output.EndWithStatus(input.GetStatus())
        return True
    if msg.GetCount() == 0:
        output.EndWithStatus(mcl.target.CALL_SUCCEEDED)
        return True
    results = Result()
    results.Demarshal(msg)
    from mcl.object.XmlOutput import XmlOutput
    xml = XmlOutput()
    xml.Start('UserModified')
    xml.SetText(results.user)
    output.RecordXml(xml)
    output.GoToBackground()
    output.End()
    return True
def _handleScreenShotData(msg, output):
    import os
    import mcl.data.env
    data = msg.FindData(MSG_KEY_RESULT_SCREENSHOT)
    if len(data) == 0:
        output.RecordError('Invalid data for screenshot')
        return mcl.target.CALL_FAILED
    else:
        suffix = '.unk'
        for prefixData in _imgPrefixes:
            matched = 0
            i = 0
            while i < len(prefixData['bytes']):
                if i + prefixData['offset'] >= len(data):
                    break
                if data[i + prefixData['offset']] == prefixData['bytes'][i]:
                    matched = matched + 1
                i = i + 1

            if matched == len(prefixData['bytes']):
                suffix = prefixData['suffix']
                break

        f, path, logName = output.CreateLogFile(prefix='ScreenShot',
                                                suffix=suffix,
                                                subDir=SCREENSHOT_DIR,
                                                utf8=False)
        if f == None:
            output.RecordError('Failed to create file for screenshot in %s' %
                               SCREENSHOT_DIR)
            return False
        try:
            f.write(data)
        finally:
            f.close()

        from mcl.object.XmlOutput import XmlOutput
        xml = XmlOutput()
        xml.Start('ScreenShot')
        xml.AddAttribute('path', path)
        xml.AddAttribute('subdir', SCREENSHOT_DIR)
        xml.SetText(logName)
        output.RecordXml(xml)
        return mcl.target.CALL_SUCCEEDED
Ejemplo n.º 8
0
def _handleModuleRead(namespace, output, msg):
    import os.path
    result = ResultModuleRead()
    result.Demarshal(msg)
    f, path, logName = output.CreateLogFile(prefix='demi',
                                            suffix='get',
                                            subDir='DemiOutput',
                                            utf8=False)
    if f == None:
        output.RecordError('Failed to create log file for 0x%08x' % results.id)
        return mcl.target.CALL_FAILED
    else:
        try:
            f.write(result.data)
            f.flush()
        finally:
            f.close()

        from mcl.object.XmlOutput import XmlOutput
        xml = XmlOutput()
        xml.Start('KiSuReadModuleSuccess')
        xml.AddAttribute('id', '0x%08x' % result.id)
        xml.AddAttribute('instance', '0x%08x' % result.instance)
        xml.AddAttribute('bytes', '%u' % len(result.data))
        xml.SetText(os.path.normpath('%s/%s' % (path, logName)))
        output.RecordXml(xml)
        import mcl.tools
        verInfo = mcl.tools.GetVersion('DeMi')
        if verInfo != None:
            mcl.tools.RecordUsage('DeMi',
                                  verInfo['full'],
                                  mcl.tools.USAGE_FLAG_EXERCISED,
                                  mcl.tools.USAGE_STATUS_SUCCESSFUL,
                                  comments='Read module 0x%08x to 0x%08x' %
                                  (result.id, result.instance))
        return mcl.target.CALL_SUCCEEDED
Ejemplo n.º 9
0
def OutputError(str):
    from mcl.object.XmlOutput import XmlOutput
    xml = XmlOutput()
    xml.Start('ErrorString')
    xml.SetText(str)
    OutputXml(xml)
Ejemplo n.º 10
0
 def RecordError(self, errorStr):
     from mcl.object.XmlOutput import XmlOutput
     xml = XmlOutput()
     xml.Start('ErrorString')
     xml.SetText(errorStr)
     self.RecordXml(xml)