Beispiel #1
0
    def add_transform(self, working_dir, transform_repository, transform, server=None):
        name = transform.__name__
        author = getattr(transform, '__author__', 'Canari Ninja')
        spec = transform.dotransform
        transform_repository_dir = self.get_transform_repository_dir(transform_repository)

        for transform_id, (input_set, input_entity) in zip(spec.uuids, spec.inputs):

            if transform_id in self.transform_uuids:
                print('WARNING: Previous declaration of %s in transform %s. Overwriting...' % (transform_id, name))
            else:
                print('Installing transform %s from %s...' % (transform_id, name))

            sets = None
            if input_set:
                sets = Set(name=input_set)
                self.add_transform_to_set(transform_id, input_set)

            if server:
                self.add_transform_to_server(server, transform_id)

            transform_def = MaltegoTransform(
                name=transform_id,
                displayname=spec.label,
                author=author,
                description=spec.description,
                properties=(
                    Properties() +
                    CmdLineTransformProperty() +
                    CmdCwdTransformProperty() +
                    CmdDbgTransformProperty() +
                    CmdParmTransformProperty()
                ),
                input=[InputConstraint(type=input_entity._type_)],
                sets=[sets]
            )

            self.write_file(
                self.path_join(transform_repository_dir, '%s.transform' % transform_id),
                transform_def
            )

            if not transform_def.sets:
                print('WARNING: Transform does not appear to be part of any Transform Sets (Perhaps an error?).')

            transform_settings_def = 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)
            ])

            self.write_file(
                self.path_join(transform_repository_dir, '%s.transformsettings' % transform_id),
                transform_settings_def
            )
Beispiel #2
0
def dotransform(request, response):
    script = os.path.join(get_bin_dir(), 'qtmsfconsole')
    subprocess.Popen(
        [
            script,
            request.entity.server,
            request.entity.port,
            request.entity.uri,
            request.entity.uuid
        ]
    )
    return response
Beispiel #3
0
    def add_transform(self,
                      working_dir,
                      transform_repository,
                      transform,
                      server=None):
        name = transform.__name__
        author = getattr(transform, '__author__', 'Canari Ninja')
        spec = transform.dotransform
        transform_repository_dir = self.get_transform_repository_dir(
            transform_repository)

        for transform_id, (input_set,
                           input_entity) in zip(spec.uuids, spec.inputs):

            if transform_id in self.transform_uuids:
                print(
                    'WARNING: Previous declaration of %s in transform %s. Overwriting...'
                    % (transform_id, name))
            else:
                print('Installing transform %s from %s...' %
                      (transform_id, name))

            sets = None
            if input_set:
                sets = Set(name=input_set)
                self.add_transform_to_set(transform_id, input_set)

            if server:
                self.add_transform_to_server(server, transform_id)

            transform_def = MaltegoTransform(
                name=transform_id,
                displayname=spec.label,
                author=author,
                description=spec.description,
                properties=(Properties() + CmdLineTransformProperty() +
                            CmdCwdTransformProperty() +
                            CmdDbgTransformProperty() +
                            CmdParmTransformProperty()),
                input=[InputConstraint(type=input_entity._type_)],
                sets=[sets])

            self.write_file(
                self.path_join(transform_repository_dir,
                               '%s.transform' % transform_id), transform_def)

            if not transform_def.sets:
                print(
                    'WARNING: Transform does not appear to be part of any Transform Sets (Perhaps an error?).'
                )

            transform_settings_def = 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)
            ])

            self.write_file(
                self.path_join(transform_repository_dir,
                               '%s.transformsettings' % transform_id),
                transform_settings_def)