GitHunt
PU

PushPullCommitPush/ios-sysdiagnose-reference

iOS sysdiagnose archive reference - structure, artifacts, databases, and forensic analysis for iOS 18.1/26.1

iOS Sysdiagnose Reference

A comprehensive reference for analyzing iOS sysdiagnose archives. Based on analysis of iOS 18.1 / 26.1 (Build 23B85) archives.

Version Note: iOS uses dual versioning. Marketing version (18.1) vs internal version (26.1). Logs and sysdiagnose show the internal version (e.g., "iPhone OS 26.1").

Quick Start

# Extract sysdiagnose
tar -xzf sysdiagnose_*.tar.gz

# Check structure
ls extracted_archive/

# Query unified logs
log show --archive extracted_archive/system_logs.logarchive \
    --predicate 'process == "SpringBoard"' \
    --style json

# Query TCC database
sqlite3 extracted_archive/logs/Accessibility/TCC.db \
    "SELECT service, client, auth_value FROM access"

# View crash reports
ls extracted_archive/crashes_and_spins/*.ips

Documentation Structure

structure/ - Archive Layout

artifacts/ - Key Files

network/ - Network Data

  • wifi.md - WiFi artifacts and history

privacy/ - Privacy Artifacts

  • tcc.md - Permission database (TCC.db)
  • biome.md - Behavioral intelligence

power/ - Power & Telemetry

subsystems/ - Log Subsystems

processes/ - Process Reference

analysis/ - Analysis Workflows

formats/ - File Formats

  • ips.md - Crash report format

databases/ - SQLite Databases


Common Tasks

Find App Permissions

sqlite3 logs/Accessibility/TCC.db "
SELECT service, auth_value FROM access
WHERE client = 'com.example.app'
"

Count Events by Process

log show --archive system_logs.logarchive \
    --predicate 'process == "locationd"' \
    --style json | grep -c '"timestamp"'

Extract Crash Summary

for f in crashes_and_spins/*.ips; do
    head -1 "$f" | python3 -c "
import sys,json
d=json.load(sys.stdin)
print(f\"{d['timestamp']}: {d['app_name']}\")
"
done

Compare Archives

# Event count comparison
for archive in baseline/* enabled/* disabled/*; do
    count=$(log show --archive "$archive/system_logs.logarchive" \
        --predicate 'process == "intelligenceplatformd"' \
        --style json 2>/dev/null | grep -c '"timestamp"')
    echo "$(basename $archive): $count"
done

Key Forensic Artifacts

Artifact Location Use Case
Privacy permissions logs/Accessibility/TCC.db App data access
Unified logs system_logs.logarchive/ System activity
Process list ps.txt Running processes
Crash reports crashes_and_spins/*.ips Crash analysis
WiFi history WiFi/Entity_*_Join.csv Network timeline
Power data logs/powerlogs/*.PLSQL Battery, usage
Trial config logs/Trial/*.log Feature flags

Tools

Required

  • log - Apple's unified log viewer (macOS)
  • sqlite3 - SQLite command-line
  • plutil - Property list utility (macOS)
  • jq - JSON processor
  • python3 - Scripting
  • ipsw - iOS firmware tools

iOS Version Notes

This reference is based on iOS 18.1 / 26.1 (Build 23B85). Key differences from earlier versions:

iOS 18+ Additions

  • Apple Intelligence subsystems
  • GenerativeFunctionMetrics_* PowerLog tables
  • logs/GenerativeExperiences/ directory
  • Enhanced Trial namespace structure

iOS 17 Compatibility

  • Most structure remains the same
  • Fewer AI-related artifacts
  • Different PowerLog table set

Contributing

To contribute additional documentation:

  1. Follow existing file structure
  2. Include practical examples
  3. Reference actual sysdiagnose paths
  4. Test commands against real archives

References


License

Documentation provided for educational and research purposes.

PushPullCommitPush/ios-sysdiagnose-reference | GitHunt