Source code for plaso.parsers.plist_plugins.ios_siminfo

"""Plist parser plugin for Apple iOS SIM information plist files."""

from dfdatetime import posix_time as dfdatetime_posix_time

from plaso.containers import events
from plaso.parsers.plist_plugins import interface
from plaso.parsers.plist import PlistParser


[docs] class IOSSIMInfoEventData(events.EventData): """Apple iOS SIM information event data. Attributes: cell_broadcast_version (str): Cell broadcast version. eap_aka_enabled (bool): value to indicate EAP-AKA is enabled. label_identifier (str): label identifier. last_used_time (dfdatetime.DateTimeValues): date and time the SIM was last used. phone_number (str): phone number. sim_type (str): type of SIM """ DATA_TYPE = 'ios:sim:info'
[docs] def __init__(self): """Initializes event data.""" super().__init__(data_type=self.DATA_TYPE) self.cell_broadcast_version = None self.eap_aka_enabled = None self.label_identifier = None self.last_used_time = None self.phone_number = None self.sim_type = None
[docs] class IOSSIMInfoPlugin(interface.PlistPlugin): """Plist parser plugin for Apple iOS SIM information plist files.""" NAME = 'ios_siminfo' DATA_FORMAT = 'iOS SIM Info plist file' PLIST_PATH_FILTERS = frozenset([ interface.PlistPathFilter('com.apple.commcenter.data.plist')]) # Note that there a com.apple.commcenter.data.plist does not have to contain # a PersonalWallet key. PLIST_KEYS = frozenset(['PersonalWallet', 'PersonalitySlots', 'pw_ver']) # pylint: disable=arguments-differ def _ParsePlist(self, parser_mediator, match=None, **unused_kwargs): """Extract SIM information entries. Args: parser_mediator (ParserMediator): mediates interactions between parsers and other components, such as storage and dfVFS. match (Optional[dict[str: object]]): keys extracted from PLIST_KEYS. """ personal_wallet = match.get('PersonalWallet', {}) for _, wallet_item in personal_wallet.items(): info = wallet_item.get('info', {}) timestamp = timestamp=info.get('ts') event_data = IOSSIMInfoEventData() event_data.cell_broadcast_version = info.get('cb_ver') event_data.eap_aka_enabled = info.get('eap_aka') event_data.label_identifier = info.get('label-id') # Mobile Directory Number. event_data.phone_number = info.get('mdn') event_data.sim_type = info.get('type') if timestamp is not None: event_data.last_used_time = dfdatetime_posix_time.PosixTime( timestamp=timestamp) parser_mediator.ProduceEventData(event_data)
PlistParser.RegisterPlugin(IOSSIMInfoPlugin)