Lab Technical Report LAB-TR-0015

Parsing Apple Sysdiagnose, Unified Logs and Android Bug Reports: A Review of Public Research and Tools

Daniel Addai

SectraTEK Lab, Prudential Associates
research@sectratek.com

Lab Technical Report, not peer reviewed

Abstract

Apple’s sysdiagnose archive, with the unified log it contains, and Android’s bug report are two diagnostic bundles that a user can produce on a current phone and that examiners increasingly read. We report a structured review of public work on parsing them: fixed, dated searches of GitHub and of five open bibliographic indexes, stated inclusion criteria, and a tool matrix in which every entry was checked against the repository or its API on 5 November 2026. Of 92 repositories retrieved, 46 held analysis code for these bundles, and we tabulate 16 with licence, input, stated coverage and maintenance status. The published record is thin. The closest works are a study of AirDrop sender numbers in an iOS 15 sysdiagnose, a paper on Android dumpsys services, a macOS timestamp study that reads the unified log, a four-page paper on Android log files, a 2026 data paper that releases 45 Android bug reports, and a 2026 benchmark of log-template parsers on that dataset’s log lines. Most other material is practitioner writing and issue trackers, where change between versions is recorded as a bug. We did not run searches in IEEE Xplore, ACM Digital Library or ScienceDirect, and dblp refused automated queries, so this is a structured review of public work and not a systematic review. We close with five open problems that the sources leave open: reporting of truncation, time zone handling, validation corpora, change across versions, and measured error rates.

Index Terms mobile forensics, sysdiagnose, unified logging, Android bug report, dumpstate, forensic tools, literature review

I. Introduction

A current iPhone writes a sysdiagnose on request and an Android phone writes a bug report on request. Neither needs a commercial extraction tool or an unlocked boot loader, and each bundles the output of many system services, one or more logs and copies of system files. For that reason both are used as evidence sources in security triage and in forensic work, and both are read by a growing set of open-source parsers. A parser that reads such a bundle decides what the examiner sees: which sections become tables, which are skipped, which are cut by a limit, and in which time zone a time is shown. Where the parsers and the studies of them are scattered across repositories, issue trackers, blogs and a few papers, an author who needs related work, or an examiner who needs to know what exists, has no single place to look.

This report collects that landscape for three sources: the Apple sysdiagnose archive, the Apple unified log (the logarchive folder and the underlying tracev3 files), and the Android bug report (also called dumpstate output). We ask three questions.

  • RQ1. Which public tools process these bundles, with what input, coverage, licence and maintenance status?
  • RQ2. Which published works, indexed or not, treat the bundles or their parsers as the subject?
  • RQ3. Which problems do the sources raise and leave open?

Contributions. (1) A search protocol with fixed queries, dates, counts and inclusion criteria, and a list of what could not be searched (Section III). (2) A matrix of 16 tools whose licence, input, stated coverage and maintenance fields were read from the repository or its API on one date (Section IV-A, Table III), and a table of the published and practitioner works that bear on the subject (Section IV-B, Table IV). (3) Five open problems, each tied to the sources that raise it (Section VI). We state the limits plainly: this is a structured review of public work and not a systematic review, and we did not run, test or compare the tools.

Disclosure. The author contributed the Android bug report modules of ALEAPP [1] and some iLEAPP artifacts, and wrote two earlier Lab reports on these bundles [2], [3]. These tools are entered in Table III with the same fields as every other tool.

II. Background

A. The Apple sources

A sysdiagnose is a large archive that an Apple device writes on request; it includes a copy of the unified log as a system_logs.logarchive folder and many other files [4]. Each unified log record carries a time, a process, a subsystem and category, a level and a message; decoders such as the open-source Rust library of Mandiant read the tracev3 files without macOS [5]. Two practitioner sources contrast the retention of the two routes: a sysdiagnose holds roughly the last day of activity in detail, while unified logs collected directly can reach back about ten days or more [6], [7]. Format change between releases is recorded in tool trackers, for example a report that a decoder printed three kinds of error on iOS 27 archives and that some entries were missing from its output [8].

B. The Android source

A bug report is a zip file whose principal member is a text file with the output of dumpsys, dumpstate and logcat [9]. The file format has versions: a flat text file before Android 6, a zip written by the shell in Android 6, a zip written by dumpstate with a version.txt and a main-entry file in Android 7, ANR traces in Android 8, and services dumped by priority with per-service protocol buffers in Android 9 [10]. The reading guide states that system and event log times are in the user’s time zone, that kernel entries carry seconds since the boot loader finished, and that timelines “are often reported using different time bases” [9]. It also states limits on some sections, for example the last 300 foreground and 300 background broadcasts in the summary and the last 50 of each in the detail [9].

III. Review Protocol

The protocol follows the structure of the guidelines of Kitchenham and Charters [11] (questions, search strategy, inclusion criteria, selection) but not their requirement of a second screener, and the review is therefore called structured and not systematic. Fig. 1 summarises the flow.

Review flow from queries to the tool matrix and the literature table Left column, repositories: six GitHub queries returned 92 distinct repositories; 46 held analysis code for the bundles; 9 of them had at least 3 stars, 8 kept; with 8 added by snowballing, 16 are tabulated. Right column, literature: seven queries on five open indexes returned 93 records with 61 distinct titles; 7 independent works were relevant; 5 of the Lab's own preprints surfaced and 2 are cited. Tools 6 GitHub queries up to 100 results each, 5 Nov 2026 92 distinct repositories repeats across queries removed 46 hold analysis code judged from name and description 9 with at least 3 stars 8 kept, 1 add-on set aside 16 tools in Table III 8 from the search, 8 by snowballing Literature 7 queries, 5 open indexes the indexes are listed in Table I 93 records, 61 distinct titles dblp and 3 publisher indexes not run 7 independent works after title and abstract screening 5 Lab preprints surfaced 2 cited because they treat the bundles Table IV and Section IV-B web and repository reading added
Fig. 1. Review flow. Left, the tool search: six GitHub queries, screening, and snowballing from documents read. Right, the literature search: seven queries on five open indexes. Source: counts recorded by the search scripts of this review (5 November 2026).

A. Searches

All searches were run on 5 November 2026 (local time) with the queries of Table I and Table II; none was changed after its results were seen, except as described next. A first run with unscoped keyword queries was discarded before screening, because Crossref and Zenodo returned ranked lists of tens of thousands of records for multi-word terms; the scoped queries below replaced it, and the totals of the first run are not used. Crossref was queried on the title field with the query words, and only the first 15 results per query were screened, so its totals are not meaningful and are not reported. Semantic Scholar returned HTTP 429 for Q2; a retry with a revised query returned two records, neither relevant. The arXiv endpoint was checked with a query that returns results (all:android AND all:forensic, 54 records) to confirm that its zero counts for Q1 to Q7 were not an access failure. In addition we ran six web searches with a US-only search tool; the topics were published work on sysdiagnose, Android bug report forensics in Digital Investigation, a document attributed in our own notes to Epifani and Leong (not found), the DFRWS workshop on sysdiagnose, the Kitchenham guidelines, and Android bug reports with Plaso. On a second reading of the Crossref results for Q4, one work missed at first screening was added (Table IV).

TABLE I Literature queries as issued, and records returned per index (5 Nov 2026). Crossref results are ranked, not counted, and are omitted.
IDQuery stringOpenAlexZenodoarXivSemantic Scholar
Q1sysdiagnose2201
Q2"unified log" AND (forensic OR forensics OR iOS OR macOS)400429 (see text)
Q3tracev31101
Q4"bug report" AND android AND (forensic OR forensics)1300
Q5bugreport AND android6101
Q6dumpstate1201
Q7dumpsys12104

OpenAlex: title_and_abstract.search with the boolean string; Zenodo: the string in q; arXiv: the arXiv API; Semantic Scholar: bulk search endpoint. Q2 on Semantic Scholar: HTTP 429, then a retry with a revised query (2 records, none relevant).

TABLE II Repository queries as issued, and repositories returned (GitHub repository search, up to 100 per query, 5 Nov 2026).
IDQuery stringReturned
G1sysdiagnose55
G2logarchive tracev30
G3unified logs parser4
G4android bugreport16
G5dumpstate18
G6android bugreport parser forensic0

The six queries returned 93 results, 92 distinct repositories.

B. Inclusion and exclusion

A repository or a work was included if it met I1 and I2, and excluded under E1 to E4.

  • I1. It parses, extracts from or analyses a sysdiagnose archive, a unified log archive or a tracev3 file, or an Android bug report or dumpstate text (for a work: it treats such a bundle or its content as the subject or the main data).
  • I2. Its code or text is publicly readable.
  • E1. Collection only: tools that produce the bundle but do not read it (for example collectors such as androidqf).
  • E2. Documentation or data without code (for the tool table; such repositories are cited in the text where they matter).
  • E3. Unrelated uses of the same word.
  • E4. For the tool table only: fewer than 3 stars on 5 November 2026 unless the tool was added by snowballing. The threshold is a pragmatic proxy for use; it is not a quality judgement.

Of the 92 repositories, 46 met I1 judged from the name and description, 10 were documentation or data, 18 were unrelated, and 18 could not be judged from name and description (empty or too vague). Four labels were changed on a second reading before these counts were fixed: two repositories about the dumpstate output of launchctl and one about a generic log-template algorithm moved from analysis code to unrelated, and one with a vague description moved to not judged. Of the 46, nine had at least 3 stars; one of the nine is an add-on to another tool set and was set aside. Eight further tools were added by snowballing, that is, from documents read during the review and from the web searches: macos-UnifiedLogs, iLEAPP, ALEAPP, MVT, iShutdown [12], BugReportParser, mobipwn and the sysdiagnose extractor library. The tool table therefore holds 16 tools. It is not a census: 37 further repositories met I1 but had fewer than 3 stars, 18 could not be judged, and some tools may have no GitHub repository.

C. Verification of the tool fields

For each tool in Table III the licence was taken from the licence file read through the GitHub API (“none declared” means no licence file at the repository root), the creation date and the date of the last commit on the default branch from the API, the latest release from the releases list, and the input and coverage from the README or, for iLEAPP and ALEAPP, from a listing of the repository tree in which the artifact decorators were counted. Coverage in the table is what the documentation states; no tool was run. Counts of modules or artifact functions are counts of files or decorators and do not show how many of them work on a given input.

D. What could not be searched

The following were not searched. IEEE Xplore, the ACM Digital Library and ScienceDirect cannot be queried with the tools available for this review, and no manual searches were made in them. Google Scholar was not queried. dblp returned a bot challenge to automated requests. The first Semantic Scholar attempt for Q2 failed (above). The DFRWS proceedings, Forensic Science International: Digital Investigation, and JDFSL were reached only through the open indexes and web search. Commercial tool documentation, vendor release notes, forums and non-English sources were not searched systematically. A null result from any index in Table I therefore means “not returned by this query”, not “does not exist”.

IV. The Landscape

A. Tools

Table III lists the 16 tools, and Fig. 2 shows the inputs each one names. Nine accept an Apple input, nine an Android bug report, and two (MVT and mobipwn) both. Licences are EUPL-1.2 (two tools), Apache-2.0 (three), MIT (five), MVT License 1.1 (one), a licence file with Apache 2.0 text that GitHub does not identify (one), and no licence file (four). Eleven have a commit in the 12 months before the snapshot and five do not (Fig. 3); two are archived. Only macos-UnifiedLogs, iLEAPP, ALEAPP, MVT and ChkBugReport have a published release that is not marked as a pre-release.

TABLE III Sixteen public tools that read sysdiagnose, unified log or bug report bundles, as read from each repository or its API on 5 Nov 2026. Maintenance: repository created, last commit on the default branch (UTC) and latest release.
ToolLicenceInputCoverage as statedMaintenance
Apple tools
SAF [13]EUPL-1.2Sysdiagnose archive (.tar.gz) or folder29 parsers and 7 analysers listed in the README (the “all” entry is not counted), which lists iOS 15 to 18 and 26 as tested and 13 and 14 as to be confirmedcreated 2023‑03‑09
last commit 2026‑10‑29
no release
sysdiagnose-extractor-library [14]EUPL-1.2Sysdiagnose archive (.tar.gz, .tar.xz, .tar)Re-implementation in Rust of SAF parser and analyser identifiers; about 67 parsers by default; unified log decode is optional, default limit 2,500 linescreated 2026‑04‑07
last commit 2026‑10‑23
no release
macos-UnifiedLogs [5]Apache-2.0tracev3 files and logarchive (macOS, iOS, watchOS, tvOS per README), or the live systemLibrary and an iterator program (JSONL or CSV); README limits: no printf %m error-code lookup, unsupported objects are base64 encodedcreated 2022‑08‑18
last commit 2026‑09‑14
v0.7.0, 2026‑09‑14
iLEAPP [15]MITExtraction as folder, tar, zip, gz, iTunes backup or single fileUnified log: 64 artifact functions in one module; sysdiagnose files: 15 sdl_* modules plus 2 modules with 5 artifact functions; also many file system artifactscreated 2019‑12‑24
last commit 2026‑11‑06
v2026.4.6, 2026‑11‑03
DeviceDiag [16]none declaredSysdiagnose .tar.gz or folder; macOS app (macOS 15 and Xcode 16 required)Device identity, MDM declarative-management state, configuration profiles, settings attribution, predefined unified-log queries, file inventorycreated 2026‑03‑18
last commit 2026‑10‑09
0.0.1 (pre‑release)
iOS_sysdiagnose_forensic_scripts [17]none declaredIndividual sysdiagnose filesScripts for individual sysdiagnose files; README: written against iOS 12 test datacreated 2019‑05‑21
last commit 2019‑11‑08
no release
iShutdown [18]MITSysdiagnose tar archiveShutdown.log only: three scripts (detect, parse, statistics)created 2023‑12‑22
last commit 2024‑01‑22
no release
Tools for both platforms
MVT [19]MVT License 1.1Sysdiagnose archive or folder; Android bug report; also backups and file systemsiOS: one built-in information module, forensic checks come from installed plug-in modules; Android check-bugreport: 16 modules; indicator matchingcreated 2021‑07‑16
last commit 2026‑10‑29
v2026.11.2, 2026‑11‑02
mobipwn [20]MITAndroid bug report (.zip, .txt); iOS sysdiagnose (.tar.gz); timeline JSONLSearch and detection platform with SIEM storage in ClickHouse and PostgreSQL; unified log decode is opt-increated 2026‑06‑04
last commit 2026‑10‑29
1.2.0 (pre‑release), 2026‑10‑28
Android tools
ALEAPP [21]MITExtraction as zip, tar, folder, gz or raw imageBug report: 11 modules with 160 artifact functions, plus dumpstate helper scripts; also many file system artifactscreated 2020‑02‑22
last commit 2026‑11‑06
v2026.4.5, 2026‑11‑03
dumpstate-py [22]Apache-2.0Bug report15 sections listed in the README, which also lists further sections as candidatescreated 2025‑08‑25
last commit 2025‑12‑09
no release
bugreport-extractor-library [23]Apache-2.0Bug report18 parsers; timeline JSONL; Sigma rules; documented caps: 100,000 logcat events per report and 100,000 timeline events (25,000 per parser)created 2025‑09‑16
last commit 2026‑08‑03
no release
Battery Historian [24]licence file with Apache 2.0 textBug report (Android 5.0 and later)Battery events (description and README)created 2014‑06‑20
last commit 2017‑05‑19
archived
no release
ChkBugReport [25]none declaredBug reportConverts a bug report to HTMLcreated 2011‑12‑19
last commit 2020‑03‑20
archived
v0.5.0, 2020‑01‑10
BugReportParser [26]MITBug reportGraphical parser in Java (description)created 2015‑08‑16
last commit 2015‑08‑21
no release
Parser-android-s-dumpstate [27]none declaredDumpstate filePerformance analysis and graphs (description)created 2020‑10‑26
last commit 2026‑04‑27
no release

Repository counts depend on how a source counts. For SAF, three public counts of parsers differ: 38 in the abstract of the 2025 talk [28], 29 in the README listing (without its “all” entry), and 46 Python modules in the parsers directory (excluding __init__); the table uses the README listing. The same holds for analysers (10, 7 and 11). Search and read dates are local time (UTC−5); commit and release dates are UTC, so the last commits of iLEAPP and ALEAPP show 6 November. MVT is entered once for both platforms.

Which input each of 16 tools reads, as stated in its documentation Matrix of 16 tools against four inputs. Sysdiagnose archive: SAF, sysdiagnose-extractor-library, iLEAPP, DeviceDiag, iOS_sysdiagnose_forensic_scripts and mobipwn are marked as supported; iShutdown (Shutdown.log only) and MVT (device information only) are marked partial. Unified log archive: SAF, macos-UnifiedLogs and iLEAPP supported; sysdiagnose-extractor-library, DeviceDiag and mobipwn partial or optional. Android bug report: MVT, mobipwn, ALEAPP, dumpstate-py, bugreport-extractor-library, ChkBugReport and BugReportParser supported; Battery Historian and Parser-android-s-dumpstate partial. Other extraction (file system, backup or similar): iLEAPP, MVT and ALEAPP. sysdiagnose archive unified log archive Android bug report other extraction SAF sysdiagnose-extractor-library macos-UnifiedLogs iLEAPP DeviceDiag iOS_sysdiagnose_forensic_scripts iShutdown MVT mobipwn ALEAPP dumpstate-py bugreport-extractor-library Battery Historian ChkBugReport BugReportParser Parser-android-s-dumpstate input named as supported partial or optional, as documented no mark: not stated
Fig. 2. Inputs that each of the 16 tools names, grouped by platform. Marks come from README or repository descriptions, not from running the tools. Source: Table III.
Repository creation date and last commit of 16 tools For each of 16 tools, a line from the date the repository was created to the date of its last commit on the default branch, read on 5 November 2026. Eleven last commits fall within 12 months of that date; five are older (iOS_sysdiagnose_forensic_scripts 2019, iShutdown 2024, Battery Historian 2017, ChkBugReport 2020, BugReportParser 2015). Battery Historian and ChkBugReport are archived. 2011 2013 2015 2017 2019 2021 2023 2025 2027 SAF sysdiagnose-extractor-library macos-UnifiedLogs iLEAPP DeviceDiag iOS_sysdiagnose_forensic_scripts iShutdown MVT mobipwn ALEAPP dumpstate-py bugreport-extractor-library Battery Historian ChkBugReport BugReportParser Parser-android-s-dumpstate created last commit, within 12 months older archived 5 Nov 2025
Fig. 3. Maintenance status: the interval from repository creation to the last commit on the default branch, read on 5 November 2026. Source: GitHub API, Table III.

Four observations follow from the table and are limited to what the documentation says. First, most tools serve one platform: only MVT and mobipwn name both an Apple and an Android bundle (Fig. 2). Second, several tools are built on or around others: the sysdiagnose extractor library re-implements SAF identifiers [14], and mobipwn is published by the same GitHub account as the two extractor libraries [20]. Third, the tools that read bug reports include small single-purpose parsers, one archived tool that targets battery data [24], an archived converter to HTML [25], and collections of many modules [21], [19]. Fourth, documentation states a limit in three places that affect completeness: a default line limit for the optional unified log decode [14], an event cap on bug report logcat and on timeline export [23], and the known limits of the Rust decoder [5]. Whether a tool’s output marks that such a limit was reached was not tested.

B. Published and practitioner work

Table IV lists the published works that bear on the subject and the practitioner material that we read. The indexed works are few and each treats a narrow question: one artifact in one iOS version [29], a clock change seen in the unified log of one macOS release [30], dumpsys output as evidence of driver distraction [31], an analysis of Android device logs [32], a bachelor’s thesis in which a bug report is one input of a logical acquisition [33], a 2026 dataset paper that releases raw bug reports [34], [35], and a 2026 conference paper by the same authors that applies thirteen log-template parsers to the log lines of that dataset [36]. That last work is the nearest to a parser evaluation: it characterises how much each template parser abstracts, its coverage, failure modes and runtime, and states that it is not an accuracy benchmark; it concerns log lines, not the parsers of the bundle itself. In the indexes we could query, none of the works evaluates the output of a parser of a sysdiagnose, unified log or bug report bundle, or compares the structure of a bundle across releases. The Lab’s own preprints that surfaced are not counted as independent work; two treat these bundles directly [2], [3].

TABLE IV Published works and practitioner material that bear on sysdiagnose, unified log and bug report parsing. “Abstract” or “title” marks the part that was read.
WorkKindSubjectRelevance to parsing
Works found in the indexes (journal, proceedings, data paper, thesis)
Epstein et al. [29]Journal, 2022Sysdiagnose of iOS 15, examined to identify the sending phone number of AirDrop data (title)One artifact and one iOS version
Song et al. [30]Journal, 2018APFS timestamps on macOS; the unified log (tracev3), read with log show, is confirmed to leave a record when the system time is changed (abstract)Uses the unified log as evidence of a clock change; not about parsing
Bortnik and Lavrenovs [31]Proceedings chapter, 2021Android dumpsys output examined for indications of driver distraction (title and first pages)A method on dumpsys content; no parser is evaluated
Santos Junior et al. [32]Extended proceedings, 4 pages, 2024Analysis of Android device logs from the standpoint of computer forensics and cyber intelligence (title, translated; Portuguese)Log files as a source; no parser evaluation is stated in what we read
Miranda Filho et al. [34], [35]Data paper, 2026; Zenodo dataset45 bug report archives from 15 devices of five manufacturers, Android 9 to 14; split by two extraction strategies into 1,012 structured log files of 24 block types, about 10 million lines (1.14 GiB) from 6.34 GiB of raw data; stated aim: machine-learning log analysisA public set of raw bug reports (CC BY 4.0) with a split into structured log files; stated aim is machine-learning log analysis
Bessa et al. [36]Conference paper, 2026ABRLogParser: thirteen classical log-template parsers applied to eight block types of the ABRLog bug report logs (342 files, 14 devices, 32.0 million lines); each parser characterised by abstraction, coverage, failure modes and runtime (abstract)Evaluates log-template parsers on bug report log lines, not parsers of the bundle; states it is not an accuracy benchmark (no ground-truth templates)
Qiu Huang [33]Bachelor’s thesis, 2026Forensic analysis of HyperOS: a logical acquisition over ADB of a Xiaomi MIX Fold 3 (properties, bug report, dumpsys, logs), then a rooted second device; ALEAPP is among the tools used (abstract; Spanish)The bug report is one input among several
General work
Horsman [37]Journal, 2019Tool testing and reliability in digital forensics (title)General; none of our searches returned such a study of these parsers
Practitioner writing, talks and notes (not peer reviewed)
Epifani, Mahalik, Cheeky4n6monkey [17]Document, linked from a READMEInitial research on iOS sysdiagnose logs; scripts for iOS 12 dataDocument not retrieved; known only through the README
Yamout [12]Blog, Jan. 2024Shutdown.log read from a sysdiagnose as a supplementary indicator; three scripts releasedOne file; scripts in the matrix as iShutdown
Durvaux and Kaplan [38]Talk, Oct. 2023Sysdiagnose as a forensic source; the abstract states that file formats change across iOS and app versions and that the output is poorly documentedNames cross-version change as a limit; no inventory
Durvaux and Vandeplas [28]Talk, Oct. 2025Pipeline around SAF; abstract: 38 parsers and 10 analysers, refactored since January 2024Count differs from the README listing (Section IV-A)
Afonin [6]; Elcomsoft R&D [7]Blogs, Jun. and Oct. 2025A sysdiagnose holds roughly the last day of activity; unified logs collected directly are retained longerRetention of the source, relevant to coverage
hoakley [4]Blog, Jun. 2026Structure of a sysdiagnose; logarchives of macOS 27 need macOS 26.2 or later to read, also inside Apple-device sysdiagnosesA reading-host constraint across versions
Wilske [39]Talk, reported by HPITime formats in iOS sysdiagnoseSlides not found
Gillies [40]Blog, Oct. 2025Bug reports are large and vary by Android version and manufacturer; log rotation causes gaps; time formats are inconsistentNames the problems; no measurement
Hyde and McPherson [41]Workshop, Jul. 2026Half-day workshop on what sysdiagnose and unified logs are and are notTeaching material; search-only

The practitioner material is larger. It covers collection how-tos and retention [6], [7], single-file detection [12], pipelines [38], [28], a reading-host constraint [4], and the difficulty of bug reports [40]. We did not retrieve the document by Epifani, Mahalik and Cheeky4n6monkey that the README of their scripts names [17]; it is listed in Table IV only through that README, and its venue and review status are unknown to us.

C. A dated view of change

Fig. 4 puts the dated public events of the last five months on one axis. Between 2 July and 14 September 2026, a possible logarchive format change in macOS 27 was reported [42], a failure on iOS 27 archives was reported [8], a decompression change was merged [43] and a release followed [44]; the changelog dates that release 12 September and GitHub dates it 14 September. On the Android side, release notes of one tool list bug report changes in three releases between 1 and 28 September 2026 [45], among them a change to read file times in the device’s time zone and a change so that a section’s timing line is not taken as a section boundary. The author’s own ALEAPP modules were merged on 26 and 27 October [1]. These events show that change between releases is mostly tracked as bugs in issue trackers and release notes.

Dated changes reported in public trackers and release notes, June to November 2026 Ten dated events on a time axis from 20 June to 10 November 2026. Apple lane: 27 June explainer on logarchive compatibility; 2 July issue 128 opened; 4 August issue 145 opened; 8 August pull request 147 merged; 27 August issue 145 closed; 14 September macos-UnifiedLogs v0.7.0. Android lane: MVT v2026.9.1 on 1 September, v2026.9.14 on 14 September, v2026.9.28 on 28 September; ALEAPP bug report modules merged on 26 and 27 October. Jul Aug Sep Oct Nov Apple: sysdiagnose and unified log 27 Jun: explainer, macOS 27 logarchives need macOS 26.2 or later 2 Jul: issue #128 opened, possible log format change in macOS 27 4 Aug: issue #145 opened, iOS 27 log archives partly fail to parse 8 Aug: pull request #147 merged, lzbitmap decompression 27 Aug: issue #145 closed 14 Sep: macos-UnifiedLogs v0.7.0 published Android: bug report parsing 1 Sep: MVT v2026.9.1, package flags and parser coverage 14 Sep: MVT v2026.9.14, bug report times in device time zone 28 Sep: MVT v2026.9.28, OEM wrapper archive, section fix 26 Oct: ALEAPP bug report modules merged (also 27 Oct)
Fig. 4. Dated public events, 20 June to 10 November 2026. Sources: issue and pull request pages, GitHub release notes and one blog post. Apple lane: references [4], [42], [8], [43], [44]; Android lane: [45], [1].

V. Findings

Table V answers the research questions from the evidence above.

TABLE V Answers to the research questions.
QuestionAnswerEvidence
RQ1 ToolsSixteen public tools meet the criteria for the tool table; 11 have a commit in the year before the snapshot, 2 are archived, 4 have no licence file. Inputs, licences and stated coverage vary (Table III). Counts of coverage differ between sources for the same tool.Sec. III, IV-A, Figs. 2 and 3, Table III
RQ2 WorksSeven independent indexed works bear on the subject; each treats a narrow question, and none evaluates the output of a bundle parser or compares bundle structure across releases in the indexes we could query. The nearest is a benchmark of log-template parsers on bug report log lines. Practitioner writing, talks and issue trackers hold most of the material.Sec. IV-B, Table IV
RQ3 Open problemsFive: reporting of truncation, time zone handling, validation corpora, change across versions, and measured error rates.Sec. VI

Two statements in Table V are scoped to the searches and not to the world: the absence of an evaluation of parser output and of a cross-release comparison is a result about what the queries in Tables I and II returned and what we read. Section III-D lists the indexes that were not searched.

VI. Open Problems

A. Reporting of truncation

Truncation occurs at three levels in the sources: the platform limits some sections (the broadcast history above [9]), a parser may limit its input or output (the caps in Table III), and a decoder may lose records without stopping (the report of missing entries [8]). The documentation we read states the caps of two tools; we did not test whether either marks in its output that a cap was reached. An earlier Lab report describes a section reader for bug reports built to make such silent failures visible [2]; no source we read states a common way to report truncation. The question for each parser is whether an empty or short table can be told from an absent record, and the sources do not answer it.

B. Time zone handling

Sources state that bug report logs use the user’s time zone and that kernel times count from boot [9], that the Rust decoder extracts a time zone field [5], that a parser changed to read bug report file times in the device’s time zone [45], and that a module of iLEAPP converts a sysdiagnose time to UTC where the folder name records an offset and leaves it blank where it does not [15]. Practitioner writing names time formats and inconsistent times as a difficulty [39], [40], and the macOS study shows that a clock change is itself written to the unified log [30]. We found no document that states, for a given parser, how a time without a zone is resolved or how an ambiguous local time at a daylight-saving change is handled.

C. Validation corpora

Public inputs exist: sysdiagnose archives for unit testing in the SAF project [46], test archives used by the iLEAPP and ALEAPP projects [15], [21], and 45 raw bug reports from 15 devices in the ABRLog dataset [35]. We did not download them. From the descriptions we read, none comes with an independent record of what the device wrote against which a parser’s output can be scored: ABRLog publishes parsed files made by its own two extraction strategies [34], and the test data of a tool is made for that tool. The dataset authors state a machine-learning aim; their later benchmark runs thirteen template parsers over the dataset’s log lines and states that the corpus has no ground-truth templates, so it is not an accuracy benchmark [36]. A corpus of iOS 27 unified logs with known contents was not found.

D. Change across versions

Cross-version change is acknowledged in a talk abstract [38], in the MVT documentation that bug reports “can be inconsistent in format and structure across different Android versions and device vendors” [47], in the AOSP format history [10], in the tested-version list of SAF [13], and in the trackers of Fig. 4. We found no public inventory of structural differences between releases for either platform. The Lab’s report on iOS 27 sysdiagnoses tests one such change on ten archives [3] and is a single study; whether the same archives read the same way in each tool of Table III is not known.

E. Error rates

None of the sources we read reports an error rate for a sysdiagnose, unified log or bug report parser. The one benchmark of template parsers on bug report log lines reports abstraction, coverage, failure modes and runtime and states that it is not an accuracy benchmark [36]. The Rust decoder lists qualitative limits [5]; MVT states that its Android capabilities are limited by format inconsistency [47]; general work on tool testing argues for validation in the field [37], but we did not find it applied to these parsers. Without a reference corpus (Section VI-C) an error rate cannot be defined, and without the cross-version inventory (Section VI-D) one rate would not cover more than the version tested. We did not measure any rate in this review.

VII. Threats to Validity and Limitations

  • One screener. The author screened alone. The inclusion decisions for 92 repositories rest on names and descriptions, and 18 could not be judged.
  • Search coverage. GitHub repository search matches words in names and descriptions; snowballing added eight tools, so other tools may be missing. The literature indexes searched are open and incomplete; the three publisher indexes named in Section III-D were not searched, so indexed works may exist that we did not see.
  • Documentation, not behaviour. Coverage statements are what a README or a file listing says. No tool was run, and a count of modules or artifact functions is a count of files or decorators.
  • Snapshot. Every repository field was read on one day, and several of these projects change weekly (Fig. 4). The table will be out of date.
  • Conflict of interest. The author contributed the ALEAPP bug report modules and some iLEAPP artifacts, and two of the Lab’s reports are cited. The fields for those tools were read the same way as for the others, but a reader should weigh this.
  • Language and venue. Only two non-English records were found, by chance; non-English literature was not searched. We did not check the review process of each venue, and Table IV does not claim peer review for any work.
  • Dates. A few dates conflict within a source (the v0.7.0 notes are dated 12 September, the release 14 September); we give both.

VIII. Conclusion and Future Work

Public parsing of sysdiagnose archives, unified logs and Android bug reports is carried mostly by open-source tools, practitioner writing and issue trackers. Sixteen tools meet our criteria, they differ in input, stated coverage and licence, and eleven were active in the year before the snapshot; the indexed literature we could search is thin and narrow, and none of it evaluates parser output. The open problems are practical ones: how a parser reports what it cut, how it resolves a time, what a parser can be scored against, how structure changes between releases, and with what error.

Future work is to run the searches in IEEE Xplore, the ACM Digital Library and ScienceDirect and to search dblp by hand, to have a second reviewer screen, to repeat the snapshot at a stated interval, and to test, on shared synthetic inputs and pinned releases, whether the tools of Table III mark truncation and how they resolve times. Such a test is not part of this report; it would turn the open problems of Sections VI-A, VI-B and VI-E into measurements.

Ethics and Data Statement

This review uses public sources only: repository metadata, documentation and release notes read through the GitHub API and web pages, bibliographic records, and published works. No device extraction, image or bug report was opened for it. The report contains no identifiers, personal data, message or file content, or case information. No offensive technique, exploit or credential-recovery method is described, and no tool was run.

Acknowledgment

Parts of the tooling, data checks and drafting for this work were produced with AI assistance (Anthropic Claude); the author reviewed and ran the results and is responsible for the content.

References

  1. D. Addai, “Android bug report artifacts,” ALEAPP pull requests #1795, #1796, #1809, #1816, #1817, #1818 and #1819, merged Oct. 26–27, 2026. Accessed: Nov. 5, 2026
  2. D. Addai, “Making silent failures visible: a single-pass section reader for Android bug reports,” Lab Tech. Rep. LAB-TR-0001, version 1.1, SectraTEK Lab, Prudential Associates, Oct. 2026, doi: 10.5281/zenodo.23719508. (Zenodo record read through the API on Nov. 5, 2026; the Lab’s own report.)
  3. D. Addai, “Log compression and archive structure in the iOS 27.0 sysdiagnose: an early observation tested against ten archives,” Lab Tech. Rep. LAB-TR-0011, version 1.2, SectraTEK Lab, Prudential Associates, Oct. 2026, doi: 10.5281/zenodo.23720069. (Zenodo record read through the API on Nov. 5, 2026; the Lab’s own report.)
  4. hoakley, “Explainer: sysdiagnose and logarchives,” The Eclectic Light Company, Jun. 27, 2026. Accessed: Nov. 5, 2026. [Online]. Available: https://eclecticlight.co/2026/06/27/explainer-sysdiagnose-and-logarchives/
  5. Mandiant, “macos-UnifiedLogs,” GitHub repository (Apache-2.0). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/mandiant/macos-UnifiedLogs
  6. O. Afonin, “Extracting and analyzing Apple sysdiagnose logs,” ElcomSoft blog, Jun. 27, 2025. Accessed: Nov. 5, 2026. [Online]. Available: https://blog.elcomsoft.com/2025/06/extracting-and-analyzing-apple-unified-logs/
  7. Elcomsoft R&D, “Extracting Apple unified logs,” ElcomSoft blog, Oct. 13, 2025. Accessed: Nov. 5, 2026. [Online]. Available: https://blog.elcomsoft.com/2025/10/extracting-apple-unified-logs/
  8. lukbukkit, “Parsing of iOS 27 log archives partially fails,” macos-UnifiedLogs issue #145, opened Aug. 4, 2026, closed Aug. 27, 2026. Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/mandiant/macos-UnifiedLogs/issues/145
  9. Android Open Source Project, “Read bug reports,” source.android.com. Accessed: Nov. 5, 2026. [Online]. Available: https://source.android.com/docs/core/tests/debug/read-bug-reports
  10. Android Open Source Project, “bugreport-format.md,” frameworks/native, cmds/dumpstate. Accessed: Nov. 5, 2026. [Online]. Available: https://android.googlesource.com/platform/frameworks/native/+/refs/heads/main/cmds/dumpstate/bugreport-format.md
  11. B. Kitchenham and S. Charters, “Guidelines for performing systematic literature reviews in software engineering,” Version 2.3, EBSE Tech. Rep. EBSE-2007-01, Keele University and University of Durham, Jul. 9, 2007. [Online]. Available: https://legacyfileshare.elsevier.com/promis_misc/525444systematicreviewsguide.pdf. (Title page and contents read on Nov. 5, 2026; author names from bibliographic records returned by web search.)
  12. M. Yamout, “Detecting iOS malware via Shutdown.log file,” Securelist (Kaspersky GReAT), Jan. 16, 2024. Accessed: Nov. 5, 2026. [Online]. Available: https://securelist.com/shutdown-log-lightweight-ios-malware-detection-method/111734/
  13. EC-DIGIT-CSIRC, “Sysdiagnose Analysis Framework (SAF),” GitHub repository (EUPL-1.2). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/EC-DIGIT-CSIRC/sysdiagnose
  14. IsMyPhonePwned, “sysdiagnose-extractor-library,” GitHub repository (EUPL-1.2). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/IsMyPhonePwned/sysdiagnose-extractor-library
  15. A. Brignoni et al., “iLEAPP: iOS Logs, Events, And Plist Parser,” GitHub repository (MIT). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/abrignoni/iLEAPP
  16. zpropheter, “DeviceDiag,” GitHub repository (no licence file). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/zpropheter/DeviceDiag
  17. Cheeky4n6monkey, “iOS_sysdiagnose_forensic_scripts,” GitHub repository (no licence file). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/cheeky4n6monkey/iOS_sysdiagnose_forensic_scripts (The README names a document by M. Epifani, H. Mahalik and Cheeky4n6monkey, linked from for585.com/sysdiagnose; the document itself was not retrieved or read.)
  18. Kaspersky GReAT, “iShutdown,” GitHub repository (MIT). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/KasperskyLab/iShutdown
  19. MVT Project, “Mobile Verification Toolkit (MVT),” GitHub repository (MVT License 1.1). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/mvt-project/mvt
  20. IsMyPhonePwned, “mobipwn,” GitHub repository (MIT). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/IsMyPhonePwned/mobipwn
  21. A. Brignoni et al., “ALEAPP: Android Logs Events And Protobuf Parser,” GitHub repository (MIT). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/abrignoni/ALEAPP
  22. CERT-EDF, “dumpstate-py: Extract useful structures from Android Bug Report,” GitHub repository (Apache-2.0). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/CERT-EDF/dumpstate-py
  23. IsMyPhonePwned, “bugreport-extractor-library,” GitHub repository (Apache-2.0). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/IsMyPhonePwned/bugreport-extractor-library
  24. Google, “Battery Historian,” GitHub repository (archived; licence file with Apache 2.0 text). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/google/battery-historian
  25. Sony Xperia Dev, “ChkBugReport,” GitHub repository (archived; no licence file). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/sonyxperiadev/ChkBugReport
  26. TheGrandPackard, “BugReportParser,” GitHub repository (MIT). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/TheGrandPackard/BugReportParser
  27. Binse-Park, “Parser-android-s-dumpstate,” GitHub repository (no licence file). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/Binse-Park/Parser-android-s-dumpstate
  28. D. Durvaux and C. Vandeplas, “Building a pipeline to analyse iOS devices at scale,” talk, hack.lu 2025, Luxembourg, Oct. 23, 2025. Accessed: Nov. 5, 2026. [Online]. Available: https://pretalx.com/hack-lu-2025/talk/CMHBFT/ (Session abstract read; slides not read.)
  29. B. Epstein, B. Klein, and D. Feuerstein, “Analysis of sysdiagnose in iOS 15 to identify the sending phone number of AirDrop data,” J. Forensic Sci., vol. 67, no. 4, pp. 1704–1707, 2022, doi: 10.1111/1556-4029.15022. (Bibliographic data fetched from Crossref on Nov. 5, 2026; full text not read.)
  30. J. H. Song, S. H. Kim, S. Y. Hwang, S. G. Kim, and S. J. Lee, “A study on the APFS timestamps in macOS,” Int. J. Eng. Technol., vol. 7, no. 3.3, p. 133, 2018, doi: 10.14419/ijet.v7i2.33.13870. (Bibliographic data and abstract fetched from Crossref and OpenAlex; full text not read.)
  31. L. Bortnik and A. Lavrenovs, “Android dumpsys analysis to indicate driver distraction,” in Digital Forensics and Cyber Crime, Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering. Cham, Switzerland: Springer, 2021, pp. 139–163, doi: 10.1007/978-3-030-68734-2_8. (Abstract and introduction read from the author-hosted PDF.)
  32. J. B. dos Santos Junior, G. A. Naldoni, C. R. Brene, and G. A. R. Majeau, “A vida secreta dos dispositivos móveis: análise de logs de dispositivos Android à luz da perícia computacional e da inteligência cibernética,” in Anais Estendidos do XXIV Simpósio Brasileiro de Segurança da Informação e de Sistemas Computacionais (SBSeg Estendido 2024). Porto Alegre, Brazil: SBC, 2024, pp. 408–411, doi: 10.5753/sbseg_estendido.2024.243365. (Bibliographic data and abstract fetched from Crossref; full text not read.)
  33. X. Qiu Huang, “Análisis forense del sistema operativo HyperOS,” bachelor’s thesis, 2026. Repository record: https://oa.upm.es/96618/ (OpenAlex W7165425245). (Abstract and record type read through the OpenAlex API on Nov. 5, 2026; the thesis itself and the repository page were not retrieved.)
  34. R. Miranda Filho, J. A. Bessa, and R. de Freitas, “ABRLog: a multi-device Android bugreport log dataset for intelligent analysis,” Data in Brief, vol. 69, Art. no. 113230, Aug. 2026, doi: 10.1016/j.dib.2026.113230. (Bibliographic data fetched from Crossref and the abstract from OpenAlex on Nov. 5, 2026; the publisher page was not fetched.)
  35. R. Miranda Filho, J. A. Holanda Bessa Neto, and R. de Freitas, “ABRLog: a multi-device Android bugreport log dataset for intelligent analysis,” Zenodo dataset, Aug. 11, 2026, CC BY 4.0, doi: 10.5281/zenodo.21892365. (Record metadata and file list fetched from the Zenodo API on Nov. 5, 2026; the archives were not downloaded.)
  36. J. A. Bessa, R. Miranda Filho, and R. de Freitas, “A multi-parser benchmark over Android bug-report logs,” in Anais do XIV Symposium on Knowledge Discovery, Mining and Learning (KDMiLe 2026). Porto Alegre, Brazil: SBC, Oct. 2026, pp. 41–48, doi: 10.5753/kdmile.2026.32039. (Landing page, bibliographic data and the first two pages of the PDF read on Nov. 6, 2026; the rest of the paper was not read.)
  37. G. Horsman, “Tool testing and reliability issues in the field of digital forensics,” Digit. Investig., vol. 28, pp. 163–175, Mar. 2019, doi: 10.1016/j.diin.2019.01.009. (Bibliographic data fetched from Crossref on Nov. 5, 2026; full text not read.)
  38. D. Durvaux and A. Kaplan, “Using Apple Sysdiagnose for mobile forensics and integrity checks,” talk, hack.lu 2023, Luxembourg, Oct. 19, 2023. Accessed: Nov. 5, 2026. [Online]. Available: https://pretalx.com/hack-lu-2023/talk/YXMSQV/ (Session abstract read; slides not read.)
  39. L. Wilske, “Unraveling time: understanding time formats in iOS sysdiagnose for security forensics,” talk at Objective by the Sea, reported on the Hasso Plattner Institute news page. Accessed: Nov. 5, 2026. [Online]. Available: https://hpi.de/en/article/ios-forensics-research-presented-at-the-obts-conference/ (News page read; the page shows the date 12/05/2024; slides not found.)
  40. D. Gillies, “Android bug reports: an underrated but complex goldmine for mobile security investigations,” iVerify blog, Oct. 17, 2025. Accessed: Nov. 5, 2026. [Online]. Available: https://iverify.com/blog/android-bug-reports-an-underrated-but-complex-goldmine-for-mobile-security-investigations
  41. J. Hyde and E. McPherson, “DFRWS USA 2026 workshop: Sysdiagnose and unified logs 101,” workshop, Arlington, VA, USA, Jul. 27, 2026. [Online]. Available: https://dfrws.org/dfrws-usa-2026-workshop-sysdiagnose-and-unified-logs-101/ (Not re-verified at the source: the page returned HTTP 403 to the fetch tool; title, speakers, date and place were read in web-search results of Nov. 5, 2026.)
  42. puffyCid, “Potential log/logarchive format change in macOS 27,” macos-UnifiedLogs issue #128, opened Jul. 2, 2026, open on Nov. 5, 2026. Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/mandiant/macos-UnifiedLogs/issues/128
  43. puffyCid, “Rust based lzbitmap decompression support,” macos-UnifiedLogs pull request #147, merged Aug. 8, 2026. Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/mandiant/macos-UnifiedLogs/pull/147
  44. Mandiant, “macos-UnifiedLogs release v0.7.0,” GitHub release, published Sep. 14, 2026. Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/mandiant/macos-UnifiedLogs/releases/tag/v0.7.0
  45. MVT Project, “Releases,” GitHub repository mvt-project/mvt (v2026.9.1, v2026.9.14, v2026.9.28 and v2026.11.2 release notes read). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/mvt-project/mvt/releases
  46. EC-DIGIT-CSIRC, “sysdiagnose-testdata,” GitHub repository (EUPL-1.2). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/EC-DIGIT-CSIRC/sysdiagnose-testdata
  47. MVT Project, “Android methodology,” Mobile Verification Toolkit documentation. Accessed: Nov. 5, 2026. [Online]. Available: https://docs.mvt.re/en/latest/android/methodology/

Cite and download

Cite as

D. Addai, “Parsing Apple Sysdiagnose, Unified Logs and Android Bug Reports: A Review of Public Research and Tools,” Lab Technical Report LAB-TR-0015, version 1.0, SectraTEK Lab, Prudential Associates, Nov. 2026. Preprint, not peer reviewed. https://lab.sectratek.com/research/reports/lab-tr-0015/

Citation guide
lab-tr-0015.bib
@techreport{addai2026labtr0015,
  author      = {Addai, Daniel},
  title       = {Parsing Apple Sysdiagnose, Unified Logs and Android Bug Reports: A Review of Public Research and Tools},
  institution = {SectraTEK Lab, Prudential Associates},
  type        = {Lab Technical Report},
  number      = {LAB-TR-0015},
  year        = {2026},
  url         = {https://lab.sectratek.com/research/reports/lab-tr-0015/},
  note        = {Version 1.0, preprint, not peer reviewed. CC BY 4.0}
}

Licence: CC BY 4.0. Related: LAB-TR-0001, LAB-TR-0011.

Versions and corrections

VersionDateChange
1.02026-11-05First release (snapshot of 5 November 2026).

Corrections: none so far. Errors can be reported through the corrections page.