Package rekall :: Package ui :: Module json_renderer :: Class JsonRenderer
[frames] | no frames]

Class JsonRenderer

source code


Render the output as a json object.

The JSON output is designed to be streamed to a remote end - that is results
are sent incrementally as soon as they are available. The receiver can then
process the results as they come, rendering them to screen or GUI.

The data is essentially a list of commands.

Each command is a list. The first parameter is the command name, further
parameters are the args to the command.

Currently the following commands are supported:

m: This is a metadata, followed by a dict of various metadata.

s: Start a new section. Followed by section name.

f: A free format text line. Followed by format string and a list of
   parameters. Parameters are dicts encoded using the lexicon.

t: Start a new table. Followed by Table headers. Followed by a list of lists
   (human_name, name, formatstring).

r: A table row. Followed by a list of dicts for each row cell. Each row cell
   is encoded using the lexicon for both keys and values.

p: A progress message. Followed by a single string which is the formatted
   message.

L: Log message sent via session.logging logger.

Nested Classes
  __metaclass__
Automatic Plugin Registration through metaclasses. (Inherited from rekall.ui.renderer.BaseRenderer)
  table_class
Renderers contain tables. (Inherited from rekall.ui.renderer.BaseRenderer)
  top_level_class
All renderers inherit from this. (Inherited from rekall.ui.renderer.BaseRenderer)
Instance Methods
 
__init__(self, output=None, send_message_callback=None, **kwargs)
x.__init__(...) initializes x; see help(type(x)) for signature
source code
 
start(self, plugin_name=None, kwargs=None)
The method is called when new output is required.
source code
 
SendMessage(self, statement) source code
 
format(self, formatstring, *args)
Write formatted data.
source code
 
section(self, name=None, **kwargs)
Start a new section.
source code
 
report_error(self, message)
Render the error in an appropriate way.
source code
 
table_header(self, columns=None, **options)
Table header renders the title row of a table.
source code
 
table_row(self, *args, **kwargs)
Outputs a single row of a table.
source code
 
write_data_stream(self) source code
 
flush(self)
Renderer should flush data.
source code
 
end(self)
Tells the renderer that we finished using it for a while.
source code
 
RenderProgress(self, message=' %(spinner)s', *args, **kwargs)
Will be called to render a progress message to the user.
source code
 
Log(self, record)
Logs a log message.
source code
 
encode(self, obj)
Convenience method for fast encoding of objects.
source code
 
decode(self, data)
Decode a json representation into an object.
source code
 
__enter__(self) (Inherited from rekall.ui.renderer.BaseRenderer) source code
 
__exit__(self, exc_type, exc_value, trace) (Inherited from rekall.ui.renderer.BaseRenderer) source code
 
get_object_renderer(self, target=None, type=None, target_renderer=None, **options) (Inherited from rekall.ui.renderer.BaseRenderer) source code
 
open(self, directory=None, filename=None, mode='rb')
Opens a file for writing or reading. (Inherited from rekall.ui.renderer.BaseRenderer)
source code
 
write(self, data)
Renderer should write some data. (Inherited from rekall.ui.renderer.BaseRenderer)
source code

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Class Methods
 
ImplementationByClass(self, name) source code
 
ImplementationByName(self, name) source code
Class Variables
  name = 'json'
hash(x)
  progress_interval = 1
  data = None
hash(x)
  spinner = '/-\\|'
  last_spin = 0
  classes = {'BaseRenderer': <class 'rekall.ui.renderer.BaseRend... (Inherited from rekall.ui.renderer.BaseRenderer)
  classes_by_name = {None: [<class 'rekall.ui.renderer.BaseRende... (Inherited from rekall.ui.renderer.BaseRenderer)
  last_gc_time = 0 (Inherited from rekall.ui.renderer.BaseRenderer)
  last_spin_time = 0 (Inherited from rekall.ui.renderer.BaseRenderer)
  plugin_feature = 'BaseRenderer' (Inherited from rekall.ui.renderer.BaseRenderer)
  table = None
hash(x) (Inherited from rekall.ui.renderer.BaseRenderer)
Properties

Inherited from object: __class__

Method Details

__init__(self, output=None, send_message_callback=None, **kwargs)
(Constructor)

source code 

x.__init__(...) initializes x; see help(type(x)) for signature

Overrides: object.__init__
(inherited documentation)

start(self, plugin_name=None, kwargs=None)

source code 
The method is called when new output is required.

Metadata about the running plugin is provided so the renderer may log it
if desired.

Args:
   plugin_name: The name of the plugin which is running.
   kwargs: The args for this plugin.

Overrides: renderer.BaseRenderer.start
(inherited documentation)

format(self, formatstring, *args)

source code 

Write formatted data.

For renderers that need access to the raw data (e.g. to check for NoneObjects), it is preferred to call this method directly rather than to format the string in the plugin itself.

By default we just call the format string directly.

Overrides: renderer.BaseRenderer.format
(inherited documentation)

section(self, name=None, **kwargs)

source code 

Start a new section.

Sections are used to separate distinct entries (e.g. reports of different files).

Overrides: renderer.BaseRenderer.section
(inherited documentation)

report_error(self, message)

source code 

Render the error in an appropriate way.

Overrides: renderer.BaseRenderer.report_error
(inherited documentation)

table_header(self, columns=None, **options)

source code 

Table header renders the title row of a table.

This also stores the header types to ensure everything is formatted appropriately. It must be a list of specs rather than a dict for ordering purposes.

Overrides: renderer.BaseRenderer.table_header
(inherited documentation)

table_row(self, *args, **kwargs)

source code 

Outputs a single row of a table.

Overrides: renderer.BaseRenderer.table_row
(inherited documentation)

flush(self)

source code 

Renderer should flush data.

Overrides: renderer.BaseRenderer.flush
(inherited documentation)

end(self)

source code 

Tells the renderer that we finished using it for a while.

Overrides: renderer.BaseRenderer.end
(inherited documentation)

RenderProgress(self, message=' %(spinner)s', *args, **kwargs)

source code 

Will be called to render a progress message to the user.

Overrides: renderer.BaseRenderer.RenderProgress
(inherited documentation)

Log(self, record)

source code 

Logs a log message. Implement if you want to handle logging.

Overrides: renderer.BaseRenderer.Log
(inherited documentation)

encode(self, obj)

source code 
Convenience method for fast encoding of objects.

Args:
   obj: An arbitrary object which should be encoded.

Returns:
   a Json serializable data object.

ImplementationByClass(self, name)
Class Method

source code 
Overrides: renderer.BaseRenderer.ImplementationByClass

ImplementationByName(self, name)
Class Method

source code 
Overrides: renderer.BaseRenderer.ImplementationByName