Source code for plaso.formatters.chrome_extension_activity
# -*- coding: utf-8 -*-
"""The Google Chrome extension activity database event formatter."""
from __future__ import unicode_literals
from plaso.formatters import interface
from plaso.formatters import manager
from plaso.lib import errors
[docs]class ChromeExtensionActivityEventFormatter(
interface.ConditionalEventFormatter):
"""Formatter for a Chrome extension activity event."""
DATA_TYPE = 'chrome:extension_activity:activity_log'
FORMAT_STRING_PIECES = [
'Chrome extension: {extension_id}',
'Action type: {action_type}',
'Activity identifier: {activity_id}',
'Page URL: {page_url}',
'Page title: {page_title}',
'API name: {api_name}',
'Args: {args}',
'Other: {other}']
FORMAT_STRING_SHORT_PIECES = [
'{extension_id}',
'{api_name}',
'{args}']
SOURCE_LONG = 'Chrome Extension Activity'
SOURCE_SHORT = 'WEBHIST'
# From:
# https://chromium.googlesource.com/chromium/src.git/+/master/chrome/browser/extensions/activity_log/activity_actions.h
_CHROME_ACTION_TYPES = {
0 : 'API call',
1 : 'API event callback',
2 : 'API action blocked',
3 : 'Content Script inserted',
4 : 'DOM access',
5 : 'DOM event',
6 : 'WebRequest',
1001 : 'Unspecified'
}
# pylint: disable=unused-argument
[docs] def GetMessages(self, formatter_mediator, event):
"""Determines the formatted message strings for an event object.
Args:
formatter_mediator (FormatterMediator): mediates the interactions
between formatters and other components, such as storage and Windows
EventLog resources.
event (EventObject): event.
Returns:
tuple(str, str): formatted message string and short message string.
Raises:
WrongFormatter: if the event object cannot be formatted by the formatter.
"""
if self.DATA_TYPE != event.data_type:
raise errors.WrongFormatter('Unsupported data type: {0:s}.'.format(
event.data_type))
event_values = event.CopyToDict()
action_type = event_values.get('action_type')
event_values['action_type'] = '%s (type %d)'%(
self._CHROME_ACTION_TYPES.get(action_type, 'unknown action_type'),
action_type
)
return self._ConditionalFormatMessages(event_values)
manager.FormattersManager.RegisterFormatter(
ChromeExtensionActivityEventFormatter)