Ejemplo n.º 1
0
def run(args):
    opts = parse_args(args)

    fix_pypath()

    if opts.port == -1:
        opts.port = 443 if not opts.disable_ssl else 80

    if os.name == 'posix' and os.geteuid() and (opts.port <= 1024
                                                or opts.enable_privileged):
        print('You must run this server as root to continue...')
        os.execvp('sudo', ['sudo'] + sys.argv)

    fix_binpath(config['default/path'])

    transforms = {}

    print('Loading transform packages...')

    try:
        for pkg_name in opts.packages:

            if not pkg_name.endswith('.transforms'):
                pkg_name = ('%s.transforms' % pkg_name)

            print('Loading transform package %s' % pkg_name)

            transform_package = import_package(pkg_name)

            for transform_name in transform_package.__all__:

                transform_name = ('%s.%s' % (pkg_name, transform_name))
                transform_module = import_transform(transform_name)

                if not hasattr(transform_module, 'dotransform'):
                    continue

                if os.name == 'posix' and hasattr(transform_module.dotransform, 'privileged') and \
                        (os.geteuid() or not opts.enable_privileged):
                    continue

                if hasattr(transform_module.dotransform,
                           'remote') and transform_module.dotransform.remote:
                    print('Loading %s at /%s...' %
                          (transform_name, transform_name))
                    inputs = []
                    if hasattr(transform_module.dotransform, 'inputs'):
                        for category, entity_type in transform_module.dotransform.inputs:
                            inputs.append(entity_type.type)
                            inputs.append(entity_type._v2type_)
                    transforms['/%s' %
                               transform_name] = (transform_module.dotransform,
                                                  inputs)

    except Exception, e:
        print(str(e))
        print('Failed to load transforms... exiting')
        exit(-1)
Ejemplo n.º 2
0
def run(args):

    opts = parser.parse_args(args)

    fix_pypath()

    if opts.port == -1:
        opts.port = 443 if not opts.disable_ssl else 80

    if name == "posix" and geteuid() and (opts.port <= 1024 or opts.enable_privileged):
        print("You must run this server as root to continue...")
        execvp("sudo", ["sudo"] + list(argv))

    fix_binpath(config["default/path"])

    transforms = {}

    print("Loading transform packages...")

    try:
        for p in opts.packages:

            if not p.endswith(".transforms"):
                p = "%s.transforms" % p

            print("Loading transform package %s" % p)

            m = import_package(p)

            for t in m.__all__:

                t = "%s.%s" % (p, t)
                m2 = import_transform(t)

                if not hasattr(m2, "dotransform"):
                    continue

                if (
                    name == "posix"
                    and hasattr(m2.dotransform, "privileged")
                    and (geteuid() or not opts.enable_privileged)
                ):
                    continue

                if hasattr(m2.dotransform, "remote") and m2.dotransform.remote:
                    print("Loading %s at /%s..." % (t, t))
                    if hasattr(m2.dotransform, "inputs"):
                        inputs = [e[1]("").type for e in m2.dotransform.inputs]
                        inputs = inputs + [i.split(".")[-1] for i in inputs]
                        transforms["/%s" % t] = (m2.dotransform, inputs)
                    else:
                        transforms["/%s" % t] = (m2.dotransform, [])

    except Exception, e:
        print(str(e))
        print("Failed to load transforms... exiting")
        exit(-1)
Ejemplo n.º 3
0
def run(args):

    opts = parse_args(args)

    fix_pypath()

    if opts.port == -1:
        opts.port = 443 if not opts.disable_ssl else 80

    if os.name == 'posix' and os.geteuid() and (opts.port <= 1024 or opts.enable_privileged):
        print ('You must run this server as root to continue...')
        os.execvp('sudo', ['sudo'] + sys.argv)

    fix_binpath(config['default/path'])


    transforms = {}

    print ('Loading transform packages...')

    try:
        for p in opts.packages:

            if not p.endswith('.transforms'):
                p = ('%s.transforms' % p)

            print ('Loading transform package %s' % p)

            m = import_package(p)

            for t in m.__all__:

                t = ('%s.%s' % (p, t))
                m2 = import_transform(t)

                if not hasattr(m2, 'dotransform'):
                    continue

                if os.name == 'posix' and hasattr(m2.dotransform, 'privileged') and (os.geteuid() or not opts.enable_privileged):
                    continue

                if hasattr(m2.dotransform, 'remote') and m2.dotransform.remote:
                    print ('Loading %s at /%s...' % (t, t))
                    if hasattr(m2.dotransform, 'inputs'):
                        inputs = [e[1]('').type for e in m2.dotransform.inputs]
                        inputs = inputs + [i.split('.')[-1] for i in inputs]
                        transforms['/%s' % t] = (m2.dotransform, inputs)
                    else:
                        transforms['/%s' % t] = (m2.dotransform, [])

    except Exception, e:
        print (str(e))
        print ('Failed to load transforms... exiting')
        exit(-1)
Ejemplo n.º 4
0
def run(args):
    opts = parse_args(args)

    fix_pypath()

    if opts.port == -1:
        opts.port = 443 if not opts.disable_ssl else 80

    if os.name == 'posix' and os.geteuid() and (opts.port <= 1024 or opts.enable_privileged):
        print ('You must run this server as root to continue...')
        os.execvp('sudo', ['sudo'] + sys.argv)

    fix_binpath(config['default/path'])

    transforms = {}

    print ('Loading transform packages...')

    try:
        for pkg_name in opts.packages:

            if not pkg_name.endswith('.transforms'):
                pkg_name = ('%s.transforms' % pkg_name)

            print ('Loading transform package %s' % pkg_name)

            transform_package = import_package(pkg_name)

            for transform_name in transform_package.__all__:

                transform_name = ('%s.%s' % (pkg_name, transform_name))
                transform_module = import_transform(transform_name)

                if not hasattr(transform_module, 'dotransform'):
                    continue

                if os.name == 'posix' and hasattr(transform_module.dotransform, 'privileged') and \
                        (os.geteuid() or not opts.enable_privileged):
                    continue

                if hasattr(transform_module.dotransform, 'remote') and transform_module.dotransform.remote:
                    print ('Loading %s at /%s...' % (transform_name, transform_name))
                    inputs = []
                    if hasattr(transform_module.dotransform, 'inputs'):
                        for category, entity_type in transform_module.dotransform.inputs:
                            inputs.append(entity_type.type)
                            inputs.append(entity_type._v2type_)
                    transforms['/%s' % transform_name] = (transform_module.dotransform, inputs)

    except Exception, e:
        print (str(e))
        print ('Failed to load transforms... exiting')
        exit(-1)
Ejemplo n.º 5
0
def run(args):

    [transform, params, value,
     fields] = parseargs(['canari %s' % cmd_name(__name__)] + args)

    transform_module = None

    fix_binpath(config['default/path'])
    try:
        transform_module = import_transform(transform)

        if os.name == 'posix' and hasattr(transform_module.dotransform,
                                          'privileged') and os.geteuid():
            rc = sudo(sys.argv)
            if rc == 1:
                message(MaltegoTransformResponseMessage() +
                        UIMessage('User cancelled transform.'))
            elif rc == 2:
                message(MaltegoTransformResponseMessage() +
                        UIMessage('Too many incorrect password attempts.'))
            elif rc:
                message(MaltegoTransformResponseMessage() +
                        UIMessage('Unknown error occurred.'))
            exit(0)

        if hasattr(transform_module, 'onterminate'):
            onterminate(transform_module.onterminate)
        else:
            transform_module.__setattr__('onterminate', lambda *args: exit(-1))

        input_entity = to_entity(guess_entity_type(transform_module, fields),
                                 value, fields)

        msg = transform_module.dotransform(
            MaltegoTransformRequestMessage(value, fields, params,
                                           input_entity),
            MaltegoTransformResponseMessage()) if get_transform_version(
                transform_module.dotransform
            ) == 2 else transform_module.dotransform(
                MaltegoTransformRequestMessage(value, fields, params,
                                               input_entity),
                MaltegoTransformResponseMessage(), config)

        if isinstance(msg, MaltegoTransformResponseMessage):
            message(msg)
        elif isinstance(msg, basestring):
            raise MaltegoException(msg)
        else:
            raise MaltegoException(
                'Could not resolve message type returned by transform.')
    except MaltegoException, me:
        croak(str(me))
Ejemplo n.º 6
0
def run(args):

    [transform, params, value, fields] = parseargs(['canari %s' % cmd_name(__name__)] + args)

    m = None
    pysudo = path.join(get_bin_dir(), 'pysudo')

    fix_binpath(config['default/path'])
    try:
        m = import_transform(transform)

        if name == 'posix' and hasattr(m.dotransform, 'privileged') and geteuid():
# Keep it for another day
#            if platform == 'darwin':
#                execvp(
#                    'osascript',
#                    ['osascript', '-e', 'do shell script "%s" with administrator privileges' % ' '.join(sys.argv)]
#                )
#            if sys.platform.startswith('linux') and path.exists("/usr/bin/gksudo"):
#                execvp('/usr/bin/gksudo', ['/usr/bin/gksudo'] + list(sys.argv))
#            else:
            execvp(pysudo, [pysudo] + list(argv))
            exit(-1)

        if hasattr(m, 'onterminate'):
            onterminate(m.onterminate)
        else:
            m.__setattr__('onterminate', lambda *args: exit(-1))

        msg = m.dotransform(
            type(
                'MaltegoTransformRequestMessage',
                (object,),
                    {
                    'value' : value,
                    'fields' : fields,
                    'params' : params
                }
            )(),
            MaltegoTransformResponseMessage()
        )

        if isinstance(msg, MaltegoTransformResponseMessage):
            message(msg)
        elif isinstance(msg, basestring):
            raise MaltegoException(msg)
        else:
            raise MaltegoException('Could not resolve message type returned by transform.')
    except MaltegoException, me:
        croak(str(me))
Ejemplo n.º 7
0
def run(args):

    [transform, params, value, fields] = parseargs(['canari %s' % cmd_name(__name__)] + args)

    m = None

    fix_binpath(config['default/path'])
    try:
        m = import_transform(transform)

        if os.name == 'posix' and hasattr(m.dotransform, 'privileged') and os.geteuid():
            rc = sudo(sys.argv)
            if rc == 1:
                message(MaltegoTransformResponseMessage() + UIMessage('User cancelled transform.'))
            elif rc == 2:
                message(MaltegoTransformResponseMessage() + UIMessage('Too many incorrect password attempts.'))
            elif rc:
                message(MaltegoTransformResponseMessage() + UIMessage('Unknown error occurred.'))
            exit(0)

        if hasattr(m, 'onterminate'):
            onterminate(m.onterminate)
        else:
            m.__setattr__('onterminate', lambda *args: exit(-1))

        msg = m.dotransform(
            type(
                'MaltegoTransformRequestMessage',
                (object,),
                    {
                    'value' : value,
                    'fields' : fields,
                    'params' : params
                }
            )(),
            MaltegoTransformResponseMessage()
        )

        if isinstance(msg, MaltegoTransformResponseMessage):
            message(msg)
        elif isinstance(msg, basestring):
            raise MaltegoException(msg)
        else:
            raise MaltegoException('Could not resolve message type returned by transform.')
    except MaltegoException, me:
        croak(str(me))
Ejemplo n.º 8
0
def run(args):

    [transform, params, value, fields] = parseargs(['canari %s' % cmd_name(__name__)] + args)

    transform_module = None

    fix_binpath(config['default/path'])
    try:
        transform_module = import_transform(transform)

        if os.name == 'posix' and hasattr(transform_module.dotransform, 'privileged') and os.geteuid():
            rc = sudo(sys.argv)
            if rc == 1:
                message(MaltegoTransformResponseMessage() + UIMessage('User cancelled transform.'))
            elif rc == 2:
                message(MaltegoTransformResponseMessage() + UIMessage('Too many incorrect password attempts.'))
            elif rc:
                message(MaltegoTransformResponseMessage() + UIMessage('Unknown error occurred.'))
            exit(0)

        if hasattr(transform_module, 'onterminate'):
            onterminate(transform_module.onterminate)
        else:
            transform_module.__setattr__('onterminate', lambda *args: exit(-1))

        input_entity = to_entity(guess_entity_type(transform_module, fields), value, fields)

        msg = transform_module.dotransform(
            MaltegoTransformRequestMessage(value, fields, params, input_entity),
            MaltegoTransformResponseMessage()
        ) if get_transform_version(transform_module.dotransform) == 2 else transform_module.dotransform(
            MaltegoTransformRequestMessage(value, fields, params, input_entity),
            MaltegoTransformResponseMessage(),
            config
        )

        if isinstance(msg, MaltegoTransformResponseMessage):
            message(msg)
        elif isinstance(msg, basestring):
            raise MaltegoException(msg)
        else:
            raise MaltegoException('Could not resolve message type returned by transform.')
    except MaltegoException, me:
        croak(str(me))
Ejemplo n.º 9
0
def run(args):

    [transform, params, value, fields] = parseargs(['canari %s' % cmd_name(__name__)] + args)

    m = None
    fix_binpath(config['default/path'])
    try:
        m = import_transform(transform)

        if name == 'posix' and hasattr(m.dotransform, 'privileged') and geteuid():
            execvp('sudo', ['sudo'] + list(argv))
            exit(-1)

        if hasattr(m, 'onterminate'):
            onterminate(m.onterminate)
        else:
            m.__setattr__('onterminate', lambda *args: exit(-1))

        msg = m.dotransform(
            type(
                'MaltegoTransformRequestMessage',
                (object,),
                    {
                    'value' : value,
                    'fields' : fields,
                    'params' : params
                }
            )(),
            MaltegoTransformResponseMessage()
        )

        if isinstance(msg, MaltegoTransformResponseMessage):
            console_message(msg)
        elif isinstance(msg, basestring):
            raise MaltegoException(msg)
        else:
            raise MaltegoException('Could not resolve message type returned by transform.')
    except MaltegoException, me:
        croak(str(me))
Ejemplo n.º 10
0
def run(args):

    opts = parse_args(args)

    if opts.package.endswith('.transforms'):
        opts.package = opts.package.replace('.transforms', '')

    fix_pypath()

    fix_etree()

    m = import_package('%s.transforms' % opts.package)

    for t in m.__all__:
        transform = '%s.transforms.%s' % (opts.package, t)
        m2 = import_transform(transform)
        if hasattr(m2, 'dotransform') and hasattr(m2.dotransform, 'label'):
            uninstall_transform(
                m2.__name__,
                m2.dotransform,
                opts.settings_dir
            )

    uninstallmachines(opts.package, opts.settings_dir)
Ejemplo n.º 11
0
        installconf(opts, args)
    except ImportError:
        pass

    print ('Looking for transforms in %s.transforms' % opts.package)
    m = None
    try:
        m = import_package('%s.transforms' % opts.package)
    except ImportError, e:
        print ("Does not appear to be a valid canari package. Couldn't import the '%s.transforms' package in '%s'. Error message: %s" % (opts.package, opts.package, e))
        exit(-1)

    for t in m.__all__:
        transform = '%s.transforms.%s' % (opts.package, t)

        m2 = import_transform(transform)
        if hasattr(m2, 'dotransform') and hasattr(m2.dotransform, 'label'):
            install_transform(
                m2.__name__,
                transform,
                getattr(m2, '__author__', ''),
                m2.dotransform,
                opts.settings_dir,
                opts.working_dir
            )

    installmtz(opts.package, opts.settings_dir)
    installmachines(opts.package, opts.settings_dir)

    if not transforms:
        print ('Error: no transforms found...')
Ejemplo n.º 12
0
    if opts.package.endswith('.transforms'):
        opts.package = opts.package.replace('.transforms', '')

    print('Looking for transforms in %s.transforms' % opts.package)
    transform_package = None
    try:
        transform_package = import_package('%s.transforms' % opts.package)
    except ImportError, e:
        print(
            "Does not appear to be a valid canari package. "
            "Couldn't import the '%s.transforms' package in '%s'. Error message: %s"
            % (opts.package, opts.package, e))
        exit(-1)

    for t in transform_package.__all__:
        transform_module = import_transform('%s.transforms.%s' %
                                            (opts.package, t))
        if hasattr(transform_module, 'dotransform') and hasattr(
                transform_module.dotransform, 'remote'):
            print('Loaded.')
            try:
                print('Writing config to %s...' % opts.plume_dir)
                installconf(opts, args)
            except ImportError:
                pass
            print(
                'Please restart plume (./plume.sh restart) for changes to take effect.'
            )
            exit(0)

    print(
        'Error: no remote transforms found. '
Ejemplo n.º 13
0
    m = None
    try:
        m = import_package('%s.transforms' % opts.package)
    except ImportError, e:
        print (
            "Does not appear to be a valid canari package. "
            "Couldn't import the '%s.transforms' package in '%s'. Error message: %s" % (
                opts.package, opts.package, e))
        exit(-1)

    print('Creating profile %s.mtz...' % opts.package)
    zf = ZipFile('%s.mtz' % opts.package, 'w')
    for t in m.__all__:
        transform = '%s.transforms.%s' % (opts.package, t)

        m2 = import_transform(transform)
        if hasattr(m2, 'dotransform') and hasattr(m2.dotransform, 'label'):
            write_transform(
                m2.__name__,
                transform,
                getattr(m2, '__author__', ''),
                m2.dotransform,
                zf,
                opts.working_dir
            )

    write_sets(zf)
    write_server(zf)

    write_entities(opts.package, zf)
    write_machines(opts.package, zf)
Ejemplo n.º 14
0
    if opts.package.endswith('.transforms'):
        opts.package = opts.package.replace('.transforms', '')


    print ('Looking for transforms in %s.transforms' % opts.package)
    transform_package = None
    try:
        transform_package = import_package('%s.transforms' % opts.package)
    except ImportError, e:
        print ("Does not appear to be a valid canari package. "
               "Couldn't import the '%s.transforms' package in '%s'. Error message: %s" %
               (opts.package, opts.package, e))
        exit(-1)

    for t in transform_package.__all__:
        transform_module = import_transform('%s.transforms.%s' % (opts.package, t))
        if hasattr(transform_module, 'dotransform') and hasattr(transform_module.dotransform, 'remote'):
            print('Loaded.')
            try:
                print('Writing config to %s...' % opts.plume_dir)
                installconf(opts, args)
            except ImportError:
                pass
            print('Please restart plume (./plume.sh restart) for changes to take effect.')
            exit(0)

    print ('Error: no remote transforms found. '
           'Please make sure that at least one transform has remote=True in @configure before retrying.')
    exit(-1)