Lab Technical Report LAB-TR-0015
Parsing Apple Sysdiagnose, Unified Logs and Android Bug Reports: A Review of Public Research and Tools
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.
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).
| ID | Query string | OpenAlex | Zenodo | arXiv | Semantic Scholar |
|---|---|---|---|---|---|
| Q1 | sysdiagnose | 2 | 2 | 0 | 1 |
| Q2 | "unified log" AND (forensic OR forensics OR iOS OR macOS) | 4 | 0 | 0 | 429 (see text) |
| Q3 | tracev3 | 1 | 1 | 0 | 1 |
| Q4 | "bug report" AND android AND (forensic OR forensics) | 1 | 3 | 0 | 0 |
| Q5 | bugreport AND android | 6 | 1 | 0 | 1 |
| Q6 | dumpstate | 1 | 2 | 0 | 1 |
| Q7 | dumpsys | 12 | 1 | 0 | 4 |
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).
| ID | Query string | Returned |
|---|---|---|
| G1 | sysdiagnose | 55 |
| G2 | logarchive tracev3 | 0 |
| G3 | unified logs parser | 4 |
| G4 | android bugreport | 16 |
| G5 | dumpstate | 18 |
| G6 | android bugreport parser forensic | 0 |
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
tracev3file, 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.
| Tool | Licence | Input | Coverage as stated | Maintenance |
|---|---|---|---|---|
| Apple tools | ||||
| SAF [13] | EUPL-1.2 | Sysdiagnose archive (.tar.gz) or folder | 29 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 confirmed | created 2023‑03‑09 last commit 2026‑10‑29 no release |
| sysdiagnose-extractor-library [14] | EUPL-1.2 | Sysdiagnose 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 lines | created 2026‑04‑07 last commit 2026‑10‑23 no release |
| macos-UnifiedLogs [5] | Apache-2.0 | tracev3 files and logarchive (macOS, iOS, watchOS, tvOS per README), or the live system | Library and an iterator program (JSONL or CSV); README limits: no printf %m error-code lookup, unsupported objects are base64 encoded | created 2022‑08‑18 last commit 2026‑09‑14 v0.7.0, 2026‑09‑14 |
| iLEAPP [15] | MIT | Extraction as folder, tar, zip, gz, iTunes backup or single file | Unified log: 64 artifact functions in one module; sysdiagnose files: 15 sdl_* modules plus 2 modules with 5 artifact functions; also many file system artifacts | created 2019‑12‑24 last commit 2026‑11‑06 v2026.4.6, 2026‑11‑03 |
| DeviceDiag [16] | none declared | Sysdiagnose .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 inventory | created 2026‑03‑18 last commit 2026‑10‑09 0.0.1 (pre‑release) |
| iOS_sysdiagnose_forensic_scripts [17] | none declared | Individual sysdiagnose files | Scripts for individual sysdiagnose files; README: written against iOS 12 test data | created 2019‑05‑21 last commit 2019‑11‑08 no release |
| iShutdown [18] | MIT | Sysdiagnose tar archive | Shutdown.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.1 | Sysdiagnose archive or folder; Android bug report; also backups and file systems | iOS: one built-in information module, forensic checks come from installed plug-in modules; Android check-bugreport: 16 modules; indicator matching | created 2021‑07‑16 last commit 2026‑10‑29 v2026.11.2, 2026‑11‑02 |
| mobipwn [20] | MIT | Android bug report (.zip, .txt); iOS sysdiagnose (.tar.gz); timeline JSONL | Search and detection platform with SIEM storage in ClickHouse and PostgreSQL; unified log decode is opt-in | created 2026‑06‑04 last commit 2026‑10‑29 1.2.0 (pre‑release), 2026‑10‑28 |
| Android tools | ||||
| ALEAPP [21] | MIT | Extraction as zip, tar, folder, gz or raw image | Bug report: 11 modules with 160 artifact functions, plus dumpstate helper scripts; also many file system artifacts | created 2020‑02‑22 last commit 2026‑11‑06 v2026.4.5, 2026‑11‑03 |
| dumpstate-py [22] | Apache-2.0 | Bug report | 15 sections listed in the README, which also lists further sections as candidates | created 2025‑08‑25 last commit 2025‑12‑09 no release |
| bugreport-extractor-library [23] | Apache-2.0 | Bug report | 18 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 text | Bug 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 declared | Bug report | Converts a bug report to HTML | created 2011‑12‑19 last commit 2020‑03‑20 archived v0.5.0, 2020‑01‑10 |
| BugReportParser [26] | MIT | Bug report | Graphical parser in Java (description) | created 2015‑08‑16 last commit 2015‑08‑21 no release |
| Parser-android-s-dumpstate [27] | none declared | Dumpstate file | Performance 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.
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].
| Work | Kind | Subject | Relevance to parsing |
|---|---|---|---|
| Works found in the indexes (journal, proceedings, data paper, thesis) | |||
| Epstein et al. [29] | Journal, 2022 | Sysdiagnose 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, 2018 | APFS 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, 2021 | Android 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, 2024 | Analysis 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 dataset | 45 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 analysis | A 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, 2026 | ABRLogParser: 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, 2026 | Forensic 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, 2019 | Tool 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 README | Initial research on iOS sysdiagnose logs; scripts for iOS 12 data | Document not retrieved; known only through the README |
| Yamout [12] | Blog, Jan. 2024 | Shutdown.log read from a sysdiagnose as a supplementary indicator; three scripts released | One file; scripts in the matrix as iShutdown |
| Durvaux and Kaplan [38] | Talk, Oct. 2023 | Sysdiagnose as a forensic source; the abstract states that file formats change across iOS and app versions and that the output is poorly documented | Names cross-version change as a limit; no inventory |
| Durvaux and Vandeplas [28] | Talk, Oct. 2025 | Pipeline around SAF; abstract: 38 parsers and 10 analysers, refactored since January 2024 | Count differs from the README listing (Section IV-A) |
| Afonin [6]; Elcomsoft R&D [7] | Blogs, Jun. and Oct. 2025 | A sysdiagnose holds roughly the last day of activity; unified logs collected directly are retained longer | Retention of the source, relevant to coverage |
| hoakley [4] | Blog, Jun. 2026 | Structure of a sysdiagnose; logarchives of macOS 27 need macOS 26.2 or later to read, also inside Apple-device sysdiagnoses | A reading-host constraint across versions |
| Wilske [39] | Talk, reported by HPI | Time formats in iOS sysdiagnose | Slides not found |
| Gillies [40] | Blog, Oct. 2025 | Bug reports are large and vary by Android version and manufacturer; log rotation causes gaps; time formats are inconsistent | Names the problems; no measurement |
| Hyde and McPherson [41] | Workshop, Jul. 2026 | Half-day workshop on what sysdiagnose and unified logs are and are not | Teaching 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.
V. Findings
Table V answers the research questions from the evidence above.
| Question | Answer | Evidence |
|---|---|---|
| RQ1 Tools | Sixteen 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 Works | Seven 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 problems | Five: 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
- 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
- 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.)
- 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.)
- 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/
- Mandiant, “macos-UnifiedLogs,” GitHub repository (Apache-2.0). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/mandiant/macos-UnifiedLogs
- 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/
- 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/
- 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
- 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
- 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
- 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.)
- 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/
- 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
- IsMyPhonePwned, “sysdiagnose-extractor-library,” GitHub repository (EUPL-1.2). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/IsMyPhonePwned/sysdiagnose-extractor-library
- 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
- zpropheter, “DeviceDiag,” GitHub repository (no licence file). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/zpropheter/DeviceDiag
- 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.)
- Kaspersky GReAT, “iShutdown,” GitHub repository (MIT). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/KasperskyLab/iShutdown
- MVT Project, “Mobile Verification Toolkit (MVT),” GitHub repository (MVT License 1.1). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/mvt-project/mvt
- IsMyPhonePwned, “mobipwn,” GitHub repository (MIT). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/IsMyPhonePwned/mobipwn
- 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
- 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
- IsMyPhonePwned, “bugreport-extractor-library,” GitHub repository (Apache-2.0). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/IsMyPhonePwned/bugreport-extractor-library
- 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
- Sony Xperia Dev, “ChkBugReport,” GitHub repository (archived; no licence file). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/sonyxperiadev/ChkBugReport
- TheGrandPackard, “BugReportParser,” GitHub repository (MIT). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/TheGrandPackard/BugReportParser
- 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
- 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.)
- 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.)
- 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.)
- 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.)
- 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.)
- 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.)
- 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.)
- 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.)
- 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.)
- 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.)
- 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.)
- 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.)
- 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
- 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.)
- 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
- 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
- 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
- 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
- EC-DIGIT-CSIRC, “sysdiagnose-testdata,” GitHub repository (EUPL-1.2). Accessed: Nov. 5, 2026. [Online]. Available: https://github.com/EC-DIGIT-CSIRC/sysdiagnose-testdata
- MVT Project, “Android methodology,” Mobile Verification Toolkit documentation. Accessed: Nov. 5, 2026. [Online]. Available: https://docs.mvt.re/en/latest/android/methodology/