Beispiel #1
0
def install_transform(module, name, author, spec, prefix, working_dir):

    installdir = os.path.join(prefix, 'config', 'Maltego',
                              'TransformRepositories', 'Local')

    if not os.path.exists(installdir):
        os.mkdir(installdir)

    setsdir = os.path.join(prefix, 'config', 'Maltego', 'TransformSets')

    for i, n in enumerate(spec.uuids):

        if n in transforms:
            sys.stderr.write(
                'WARNING: Previous declaration of %s in transform %s. Overwriting...'
                % (n, module))
        else:
            print('Installing transform %s from %s...' % (n, module))
            transforms[n] = module

        intype = spec.inputs[i][1]._type_

        sets = None
        if spec.inputs[i][0] is not None:
            setdir = os.path.join(setsdir, spec.inputs[i][0])
            if not os.path.exists(setdir):
                os.mkdir(setdir)
            open(os.path.join(setdir, n), 'w').close()
            sets = Set(spec.inputs[i][0])

        transform = MaltegoTransform(n,
                                     spec.label,
                                     author=author,
                                     description=spec.description,
                                     properties=[
                                         CmdLineTransformProperty(),
                                         CmdCwdTransformProperty(),
                                         CmdDbgTransformProperty(),
                                         CmdParmTransformProperty()
                                     ],
                                     input=InputConstraint(intype),
                                     sets=sets)
        transform.sets

        ElementTree(transform).write(
            os.path.join(installdir, '%s.transform' % n))

        transformsettings = TransformSettings(properties=[
            CmdLineTransformPropertySetting(
                os.path.join(
                    get_bin_dir(), 'dispatcher.bat' if os.name ==
                    'nt' else 'dispatcher')),
            CmdParmTransformPropertySetting(name),
            CmdCwdTransformPropertySetting(working_dir),
            CmdDbgTransformPropertySetting(spec.debug)
        ])
        ElementTree(transformsettings).write(
            os.path.join(installdir, '%s.transformsettings' % n))
Beispiel #2
0
def write_transform(module, name, author, spec, profile, working_dir):
    installdir = "TransformRepositories/Local"

    s = StringIO()

    for i, n in enumerate(spec.uuids):

        if n in transforms:
            sys.stderr.write("WARNING: Previous declaration of %s in transform %s. Overwriting..." % (n, module))
        else:
            print ("Writing transform %s to %s..." % (n, profile.filename))
            transforms[n] = module

        intype = spec.inputs[i][1]._type_

        sets = None
        if spec.inputs[i][0] is not None:
            transformset = spec.inputs[i][0]
            if transformset not in transformsets:
                transformsets[transformset] = []
            transformsets[transformset].append(n)
            sets = Set(transformset)

        transform = MaltegoTransform(
            n,
            spec.label,
            author=author,
            description=spec.description,
            properties=[
                CmdLineTransformProperty(),
                CmdCwdTransformProperty(),
                CmdDbgTransformProperty(),
                CmdParmTransformProperty(),
            ],
            input=InputConstraint(intype),
            sets=sets,
        )
        transform.sets

        s.truncate(0)
        ElementTree(transform).write(s)
        profile.writestr("/".join([installdir, "%s.transform" % n]), s.getvalue())

        transformsettings = TransformSettings(
            properties=[
                CmdLineTransformPropertySetting(
                    os.path.join(get_bin_dir(), "dispatcher.bat" if os.name == "nt" else "dispatcher")
                ),
                CmdParmTransformPropertySetting(name),
                CmdCwdTransformPropertySetting(working_dir),
                CmdDbgTransformPropertySetting(spec.debug),
            ]
        )

        s.truncate(0)
        ElementTree(transformsettings).write(s)
        profile.writestr("/".join([installdir, "%s.transformsettings" % n]), s.getvalue())
Beispiel #3
0
def write_transform(module, name, author, spec, profile, working_dir):
    installdir = 'TransformRepositories/Local'

    s = StringIO()

    for i, n in enumerate(spec.uuids):

        if n in transforms:
            sys.stderr.write('WARNING: Previous declaration of %s in transform %s. Overwriting...' % (n, module))
        else:
            print ('Writing transform %s to %s...' % (n, profile.filename))
            transforms[n] = module

        intype = spec.inputs[i][1]._type_

        sets = None
        if spec.inputs[i][0] is not None:
            transformset = spec.inputs[i][0]
            if transformset not in transformsets:
                transformsets[transformset] = []
            transformsets[transformset].append(n)
            sets = Set(transformset)

        transform = MaltegoTransform(
            n,
            spec.label,
            author=author,
            description=spec.description,
            properties=[
                CmdLineTransformProperty(),
                CmdCwdTransformProperty(),
                CmdDbgTransformProperty(),
                CmdParmTransformProperty()
            ],
            input=InputConstraint(intype),
            sets=sets
        )
        transform.sets

        s.truncate(0)
        ElementTree(transform).write(s)
        profile.writestr('/'.join([installdir, '%s.transform' % n]), s.getvalue())


        transformsettings = TransformSettings(properties=[
            CmdLineTransformPropertySetting(
                os.path.join(get_bin_dir(),
                             'dispatcher.bat' if os.name == 'nt' else 'dispatcher')
            ),
            CmdParmTransformPropertySetting(name),
            CmdCwdTransformPropertySetting(working_dir),
            CmdDbgTransformPropertySetting(spec.debug)
        ])

        s.truncate(0)
        ElementTree(transformsettings).write(s)
        profile.writestr('/'.join([installdir, '%s.transformsettings' % n]), s.getvalue())
Beispiel #4
0
def install_transform(module, name, author, spec, prefix, working_dir):

    installdir = os.path.join(prefix, 'config', 'Maltego', 'TransformRepositories', 'Local')

    if not os.path.exists(installdir):
        os.mkdir(installdir)

    setsdir = os.path.join(prefix, 'config', 'Maltego', 'TransformSets')

    for i,n in enumerate(spec.uuids):

        if n in transforms:
            sys.stderr.write('WARNING: Previous declaration of %s in transform %s. Overwriting...' % (n, module))
        else:
            print ('Installing transform %s from %s...' % (n, module))
            transforms[n] = module

        intype = spec.inputs[i][1]('').type

        sets = None
        if spec.inputs[i][0] is not None:
            setdir = os.path.join(setsdir, spec.inputs[i][0])
            if not os.path.exists(setdir):
                os.mkdir(setdir)
            open(os.path.join(setdir, n), 'w').close()
            sets=TransformSet(spec.inputs[i][0])

        transform = MaltegoTransform(
            n,
            spec.label,
            author=author,
            description=spec.description,
            properties=[
                CmdLineTransformProperty(),
                CmdCwdTransformProperty(),
                CmdDbgTransformProperty(),
                CmdParmTransformProperty()
            ],
            input=InputConstraint(intype),
            sets=sets
        )
        transform.sets


        ElementTree(transform).write(os.path.join(installdir, '%s.transform' % n))

        transformsettings = TransformSettings(properties=[
            CmdLineTransformPropertySetting(
                os.path.join(get_bin_dir(),
                'dispatcher.bat' if os.name == 'nt' else 'dispatcher')
            ),
            CmdParmTransformPropertySetting(name),
            CmdCwdTransformPropertySetting(working_dir),
            CmdDbgTransformPropertySetting(spec.debug)
        ])
        ElementTree(transformsettings).write(os.path.join(installdir, '%s.transformsettings' % n))
Beispiel #5
0
def install_transform(module, name, author, spec, prefix, working_dir):

    installdir = os.path.join(prefix, "config", "Maltego", "TransformRepositories", "Local")

    if not os.path.exists(installdir):
        os.mkdir(installdir)

    setsdir = os.path.join(prefix, "config", "Maltego", "TransformSets")

    for i, n in enumerate(spec.uuids):

        if n in transforms:
            sys.stderr.write("WARNING: Previous declaration of %s in transform %s. Overwriting..." % (n, module))
        else:
            print ("Installing transform %s from %s..." % (n, module))
            transforms[n] = module

        intype = spec.inputs[i][1]._type_

        sets = None
        if spec.inputs[i][0] is not None:
            setdir = os.path.join(setsdir, spec.inputs[i][0])
            if not os.path.exists(setdir):
                os.mkdir(setdir)
            open(os.path.join(setdir, n), "w").close()
            sets = Set(spec.inputs[i][0])

        transform = MaltegoTransform(
            n,
            spec.label,
            author=author,
            description=spec.description,
            properties=[
                CmdLineTransformProperty(),
                CmdCwdTransformProperty(),
                CmdDbgTransformProperty(),
                CmdParmTransformProperty(),
            ],
            input=InputConstraint(intype),
            sets=sets,
        )
        transform.sets

        ElementTree(transform).write(os.path.join(installdir, "%s.transform" % n))

        transformsettings = TransformSettings(
            properties=[
                CmdLineTransformPropertySetting(
                    os.path.join(get_bin_dir(), "dispatcher.bat" if os.name == "nt" else "dispatcher")
                ),
                CmdParmTransformPropertySetting(name),
                CmdCwdTransformPropertySetting(working_dir),
                CmdDbgTransformPropertySetting(spec.debug),
            ]
        )
        ElementTree(transformsettings).write(os.path.join(installdir, "%s.transformsettings" % n))
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))