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 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())
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())
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))
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))