Пример #1
0
    def _FormatMessage(self, format_string, event_values):
        """Determines the formatted message.

    Args:
      format_string (str): message format string.
      event_values (dict[str, object]): event values.

    Returns:
      str: formatted message.
    """
        try:
            message_string = format_string.format(**event_values)

        except KeyError as exception:
            data_type = event_values.get('data_type', 'N/A')
            display_name = event_values.get('display_name', 'N/A')
            event_identifier = event_values.get('uuid', 'N/A')
            parser_chain = event_values.get('parser', 'N/A')

            error_message = (
                'unable to format string: "{0:s}" missing required event '
                'value: {1!s}').format(format_string, exception)
            error_message = (
                'Event: {0:s} data type: {1:s} display name: {2:s} '
                'parser chain: {3:s} with error: {4:s}').format(
                    event_identifier, data_type, display_name, parser_chain,
                    error_message)
            logger.error(error_message)

            attribute_values = []
            for attribute, value in event_values.items():
                attribute_values.append('{0:s}: {1!s}'.format(
                    attribute, value))

            message_string = ' '.join(attribute_values)

        except UnicodeDecodeError as exception:
            data_type = event_values.get('data_type', 'N/A')
            display_name = event_values.get('display_name', 'N/A')
            event_identifier = event_values.get('uuid', 'N/A')
            parser_chain = event_values.get('parser', 'N/A')

            error_message = 'Unicode decode error: {0!s}'.format(exception)
            error_message = (
                'Event: {0:s} data type: {1:s} display name: {2:s} '
                'parser chain: {3:s} with error: {4:s}').format(
                    event_identifier, data_type, display_name, parser_chain,
                    error_message)
            logger.error(error_message)

            message_string = ''

        # Strip carriage return and linefeed form the message strings.
        # Using replace function here because it is faster than re.sub() or
        # string.strip().
        return message_string.replace('\r', '').replace('\n', '')
Пример #2
0
  def _FormatMessage(self, format_string, event_values):
    """Determines the formatted message.

    Args:
      format_string (str): message format string.
      event_values (dict[str, object]): event values.

    Returns:
      str: formatted message.
    """
    if not isinstance(format_string, str):
      logger.warning('Format string: {0!s} is non-Unicode.'.format(
          format_string))

      # Plaso code files should be in UTF-8 any thus binary strings are
      # assumed UTF-8. If this is not the case this should be fixed.
      format_string = format_string.decode('utf-8', errors='ignore')

    try:
      message_string = format_string.format(**event_values)

    except KeyError as exception:
      data_type = event_values.get('data_type', 'N/A')
      display_name = event_values.get('display_name', 'N/A')
      event_identifier = event_values.get('uuid', 'N/A')
      parser_chain = event_values.get('parser', 'N/A')

      error_message = (
          'unable to format string: "{0:s}" event object is missing required '
          'attributes: {1!s}').format(format_string, exception)
      error_message = (
          'Event: {0:s} data type: {1:s} display name: {2:s} '
          'parser chain: {3:s} with error: {4:s}').format(
              event_identifier, data_type, display_name, parser_chain,
              error_message)
      logger.error(error_message)

      attribute_values = []
      for attribute, value in event_values.items():
        attribute_values.append('{0:s}: {1!s}'.format(attribute, value))

      message_string = ' '.join(attribute_values)

    except UnicodeDecodeError as exception:
      data_type = event_values.get('data_type', 'N/A')
      display_name = event_values.get('display_name', 'N/A')
      event_identifier = event_values.get('uuid', 'N/A')
      parser_chain = event_values.get('parser', 'N/A')

      error_message = 'Unicode decode error: {0!s}'.format(exception)
      error_message = (
          'Event: {0:s} data type: {1:s} display name: {2:s} '
          'parser chain: {3:s} with error: {4:s}').format(
              event_identifier, data_type, display_name, parser_chain,
              error_message)
      logger.error(error_message)

      message_string = ''

    # Strip carriage return and linefeed form the message strings.
    # Using replace function here because it is faster than re.sub() or
    # string.strip().
    return message_string.replace('\r', '').replace('\n', '')
Пример #3
0
  def _FormatMessage(self, format_string, event_values):
    """Determines the formatted message string.

    Args:
      format_string (str): message format string.
      event_values (dict[str, object]): event values.

    Returns:
      str: formatted message string.
    """
    if not isinstance(format_string, py2to3.UNICODE_TYPE):
      logger.warning('Format string: {0:s} is non-Unicode.'.format(
          format_string))

      # Plaso code files should be in UTF-8 any thus binary strings are
      # assumed UTF-8. If this is not the case this should be fixed.
      format_string = format_string.decode('utf-8', errors='ignore')

    try:
      message_string = format_string.format(**event_values)

    except KeyError as exception:
      data_type = event_values.get('data_type', 'N/A')
      display_name = event_values.get('display_name', 'N/A')
      event_identifier = event_values.get('uuid', 'N/A')
      parser_chain = event_values.get('parser', 'N/A')

      error_message = (
          'unable to format string: "{0:s}" event object is missing required '
          'attributes: {1!s}').format(format_string, exception)
      error_message = (
          'Event: {0:s} data type: {1:s} display name: {2:s} '
          'parser chain: {3:s} with error: {4:s}').format(
              event_identifier, data_type, display_name, parser_chain,
              error_message)
      logger.error(error_message)

      attribute_values = []
      for attribute, value in iter(event_values.items()):
        attribute_values.append('{0:s}: {1!s}'.format(attribute, value))

      message_string = ' '.join(attribute_values)

    except UnicodeDecodeError as exception:
      data_type = event_values.get('data_type', 'N/A')
      display_name = event_values.get('display_name', 'N/A')
      event_identifier = event_values.get('uuid', 'N/A')
      parser_chain = event_values.get('parser', 'N/A')

      error_message = 'Unicode decode error: {0!s}'.format(exception)
      error_message = (
          'Event: {0:s} data type: {1:s} display name: {2:s} '
          'parser chain: {3:s} with error: {4:s}').format(
              event_identifier, data_type, display_name, parser_chain,
              error_message)
      logger.error(error_message)

      message_string = ''

    # Strip carriage return and linefeed form the message strings.
    # Using replace function here because it is faster than re.sub() or
    # string.strip().
    return message_string.replace('\r', '').replace('\n', '')