示例#1
0
    def __init__(self, *args, **options):
        """We make a sub table for rendering the _EPROCESS."""
        self.name = options.pop("name", "_EPROCESS")

        super(EPROCESS_TextObjectRenderer, self).__init__(*args, **options)

        # pstree requests light output so we ovverride the style
        self.output_style = options.pop("style", self.output_style)

        if self.output_style == "full":
            self.table = text.TextTable(columns=[
                dict(name=self.name, formatstring="[addrpad]"),
                dict(name="name", width=20),
                dict(name="fullpath", width=60),
                dict(name="pid", width=5, align="r"),
                dict(name="ppid", width=5, align="r")
            ],
                                        renderer=self.renderer,
                                        session=self.session)
        else:
            self.table = text.TextTable(columns=[
                dict(name=self.name, formatstring="[addrpad]"),
                dict(name="name", width=20),
                dict(name="pid", width=5, align="r")
            ],
                                        renderer=self.renderer,
                                        session=self.session)
示例#2
0
    def __init__(self, *args, **kwargs):
        self.columns = kwargs.pop("columns", self.COLUMNS)

        super(StructTextRenderer, self).__init__(*args, **kwargs)

        if self.columns:
            self.table = text.TextTable(columns=self.columns,
                                        renderer=self.renderer,
                                        session=self.session)
示例#3
0
 def __init__(self, *args, **kwargs):
     """We make a sub table for key, values."""
     super(ListRenderer, self).__init__(*args, **kwargs)
     self.table = text.TextTable(columns=[
         dict(name="x"),
     ],
                                 auto_widths=True,
                                 renderer=self.renderer,
                                 session=self.session)
示例#4
0
    def __init__(self, *args, **kwargs):
        self.style = kwargs.pop("style", "value")
        self.name = kwargs.pop("name", "Entity")

        # Build up the list of columns we want to display.
        columns = kwargs.pop("columns", [])
        self.column_getters = []
        renderer_headers = []

        for column in columns:
            column_attr = None
            column_name = None
            column_style = None
            column_width = None
            column_getter = None

            if isinstance(column, basestring):
                column_attr = column
            elif isinstance(column, dict):
                column_name = column.get("name")
                column_getter = column.get("fn")
                column_attr = column.get("attribute")
                column_style = column.get("style")
                column_width = column.get("width")
            else:
                raise ValueError(
                    "Column must be dict or a basestring. Got %s." % (
                        type(column)))

            if not column_getter:
                if not column_attr:
                    raise ValueError(
                        "Must specify either 'attribute' or 'fn'.")
                attribute_obj = entity.Entity.reflect_attribute(column_attr)
                if not attribute_obj:
                    raise ValueError(
                        "Attribute %s doesn't exist." % column_attr)
                column_getter = self._column_getter(attribute_obj.path)
                column_width = column_width or attribute_obj.width
                column_style = column_style or attribute_obj.style

            if not column_name:
                if column_attr:
                    column_name = column_attr.split("/")[-1]
                else:
                    column_attr = "untitled column"

            renderer_headers.append(dict(name=column_name,
                                         width=column_width,
                                         style=column_style))
            self.column_getters.append(column_getter)

        super(Entity_TextObjectRenderer, self).__init__(*args, **kwargs)

        self.table = text.TextTable(columns=renderer_headers,
                                    renderer=self.renderer,
                                    session=self.session)
示例#5
0
文件: windows.py 项目: he0x/rekall
    def __init__(self, *args, **options):
        """We make a sub table for rendering the _EPROCESS."""
        self.name = options.pop("name", "_EPROCESS")
        self.style = options.pop("style", "full")

        super(EPROCESS_TextObjectRenderer, self).__init__(*args, **options)
        self.table = text.TextTable(columns=[
            dict(name=self.name, cname="eprocess", formatstring="[addrpad]"),
            dict(name="Name", cname="name", width=20),
            dict(name="PID", cname="pid", width=5, align="r")
        ],
                                    renderer=self.renderer,
                                    session=self.session)
示例#6
0
    def __init__(self, *args, **options):
        self.quick = options.pop("quick", False)
        super(VirtualizationNode_TextObjectRenderer, self).__init__(
            *args, **options)

        self.table = text.TextTable(
            columns=[
                dict(name="description"),
                dict(name="name", width=20),
                dict(name="valid", type="bool"),
                dict(name="ept")],
            renderer=self.renderer,
            session=self.session)
示例#7
0
    def __init__(self, *args, **options):
        """We make a sub table for rendering the _EPROCESS."""
        self.name = options.pop("name", "proc")
        self.style = options.pop("style", "full")

        super(Proc_TextObjectRenderer, self).__init__(*args, **options)
        self.table = text.TextTable(columns=[
            dict(name=self.name, style="address"),
            dict(name="Name", width=20, align="c"),
            dict(name="PID", width=5, align="r")
        ],
                                    renderer=self.renderer,
                                    session=self.session)
示例#8
0
    def render_full(self, target, width=None, **_):
        table = text.TextTable(
            columns=[
                dict(name="Address", style="address"),
                dict(name="OpCode", width=16),
                dict(name="Op", width=width)
            ],
            renderer=self.renderer,
            session=self.session)

        result = []
        for instruction in target.disassemble():
            result.append(unicode(table.get_row(
                instruction.address, instruction.hexbytes, instruction.text)))

        return text.Cell("\n".join(result))
示例#9
0
    def render_row(self, target, **_):
        column_names = [x["name"] for x in target.fields]
        table = text.TextTable(columns=target.fields,
                               renderer=self.renderer,
                               session=self.session)

        if not target.results:
            return text.Cell("")

        result = [
            text.JoinedCell(*[text.Cell(x) for x in column_names]),
            text.JoinedCell(*[text.Cell("-" * len(x)) for x in column_names])
        ]

        for row in target.results:
            ordered_row = []
            for column in column_names:
                ordered_row.append(row.get(column))

            result.append(table.get_row(*ordered_row))

        result = text.StackedCell(*result)
        return result