From 8260bda30809190ae02f1256f3a1230da72fb3f5 Mon Sep 17 00:00:00 2001 From: Nex Date: Sat, 14 Aug 2021 18:50:11 +0200 Subject: [PATCH] Got rid of biplist, using standard plistlib --- mvt/ios/modules/fs/idstatuscache.py | 6 +++--- mvt/ios/modules/fs/locationd.py | 7 ++++--- mvt/ios/modules/fs/manifest.py | 5 ++--- mvt/ios/modules/fs/safari_browserstate.py | 5 ++--- mvt/ios/modules/fs/webkit_session_resource_log.py | 7 ++++--- setup.py | 1 - 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/mvt/ios/modules/fs/idstatuscache.py b/mvt/ios/modules/fs/idstatuscache.py index cb230e3..6cc3e73 100644 --- a/mvt/ios/modules/fs/idstatuscache.py +++ b/mvt/ios/modules/fs/idstatuscache.py @@ -6,8 +6,7 @@ import collections import glob import os - -import biplist +import plistlib from mvt.common.utils import convert_mactime_to_unix, convert_timestamp_to_iso @@ -57,7 +56,8 @@ class IDStatusCache(IOSExtraction): self._find_ios_database(backup_ids=IDSTATUSCACHE_BACKUP_IDS, root_paths=IDSTATUSCACHE_ROOT_PATHS) self.log.info("Found IDStatusCache plist at path: %s", self.file_path) - file_plist = biplist.readPlist(self.file_path) + with open(self.file_path, "rb") as handle: + file_plist = plistlib.load(handle) id_status_cache_entries = [] for app in file_plist: diff --git a/mvt/ios/modules/fs/locationd.py b/mvt/ios/modules/fs/locationd.py index 700be01..56def64 100644 --- a/mvt/ios/modules/fs/locationd.py +++ b/mvt/ios/modules/fs/locationd.py @@ -5,8 +5,7 @@ import glob import os - -import biplist +import plistlib from mvt.common.utils import convert_mactime_to_unix, convert_timestamp_to_iso @@ -55,7 +54,9 @@ class LocationdClients(IOSExtraction): def run(self): self._find_ios_database(backup_ids=LOCATIOND_BACKUP_IDS, root_paths=LOCATIOND_ROOT_PATHS) self.log.info("Found Locationd Clients plist at path: %s", self.file_path) - file_plist = biplist.readPlist(self.file_path) + + with open(self.file_path, "rb") as handle: + file_plist = plistlib.load(handle) for app in file_plist: if file_plist[app] is dict: diff --git a/mvt/ios/modules/fs/manifest.py b/mvt/ios/modules/fs/manifest.py index 8f230bc..7514e97 100644 --- a/mvt/ios/modules/fs/manifest.py +++ b/mvt/ios/modules/fs/manifest.py @@ -6,10 +6,9 @@ import datetime import io import os +import plistlib import sqlite3 -import biplist - from mvt.common.module import DatabaseNotFoundError from mvt.common.utils import convert_timestamp_to_iso @@ -117,7 +116,7 @@ class Manifest(IOSExtraction): if file_data["file"]: try: - file_plist = biplist.readPlist(io.BytesIO(file_data["file"])) + file_plist = plistlib.load(io.BytesIO(file_data["file"])) file_metadata = self._get_key(file_plist, "$objects")[1] cleaned_metadata.update({ "created": self._convert_timestamp(self._get_key(file_metadata, "Birth")), diff --git a/mvt/ios/modules/fs/safari_browserstate.py b/mvt/ios/modules/fs/safari_browserstate.py index 0836185..2555d0c 100644 --- a/mvt/ios/modules/fs/safari_browserstate.py +++ b/mvt/ios/modules/fs/safari_browserstate.py @@ -4,10 +4,9 @@ # https://license.mvt.re/1.1/ import io +import plistlib import sqlite3 -import biplist - from mvt.common.utils import (convert_mactime_to_unix, convert_timestamp_to_iso, keys_bytes_to_string) @@ -80,7 +79,7 @@ class SafariBrowserState(IOSExtraction): if item[4]: # Skip a 4 byte header before the plist content. session_plist = item[4][4:] - session_data = biplist.readPlist(io.BytesIO(session_plist)) + session_data = plistlib.load(io.BytesIO(session_plist)) session_data = keys_bytes_to_string(session_data) if "SessionHistoryEntries" in session_data["SessionHistory"]: diff --git a/mvt/ios/modules/fs/webkit_session_resource_log.py b/mvt/ios/modules/fs/webkit_session_resource_log.py index c7b5c2f..58bcb5d 100644 --- a/mvt/ios/modules/fs/webkit_session_resource_log.py +++ b/mvt/ios/modules/fs/webkit_session_resource_log.py @@ -5,8 +5,7 @@ import glob import os - -import biplist +import plistlib from mvt.common.utils import convert_timestamp_to_iso @@ -36,7 +35,9 @@ class WebkitSessionResourceLog(IOSExtraction): def _extract_browsing_stats(self, file_path): items = [] - file_plist = biplist.readPlist(file_path) + with open(file_path, "rb") as handle: + file_list = plistlib.read(handle) + if "browsingStatistics" not in file_plist: return items diff --git a/setup.py b/setup.py index 3c71291..d407320 100755 --- a/setup.py +++ b/setup.py @@ -25,7 +25,6 @@ requires = ( "requests>=2.26.0", "simplejson>=3.17.3", # iOS dependencies: - "biplist>=1.0.3", "iOSbackup>=0.9.912", # Android dependencies: "adb-shell>=0.4.0",