IsMyPhonePwned ?

iPhone Advanced — same WebUSB UI as idevice-rs. Sysdiagnose analysis is on iPhone (analyzer).

Device
Not connected
Pair record
None
Last action
Idle
About WebUSB tools (idevice-rs WASM)

Everything runs in the browser via WebUSB + a Rust → WASM bundle. Pick a device, generate or load a pair record, then run actions like Battery / Diagnostics / Crash reports. When the device sets EnableSessionSSL, the page negotiates lockdown TLS with rustls using the host certificate chain (same shape as the native idevice CLI / pymobiledevice3).

Diagnostics now runs ~40 GetValue queries grouped into Identity, Network / cellular, Locale / time, Activation / security, Storage, iTunes / sync and Battery. Headline values are mirrored into the Device snapshot card below; the full sectioned report stays in the log for copy / paste.

On Linux, Chromium needs exclusive access to the USB interface — stop usbmuxd briefly if claim fails. Verbose mode logs mux + pseudo-TCP frames to the browser console ([idevice-wasm]).

1Device

Authorize one Apple device for this page. The browser scopes USB access per origin + serial.

2Pair record

A pair record holds a HostID + RSA host chain trusted by the device. Generate one (Trust prompt on first use) and save it for next time, or load an existing libimobiledevice / usbmuxd XML plist.

Random → fresh UUIDs each run (libimobiledevice / pymobiledevice3 style). Legacy → fixed HostID, useful if a device gets stuck on UUID handshakes.

Tip: unlock the iPhone first; the Trust prompt may take ~10–30 s.

3Run an action

TLS settings (advanced)

If TLS handshake fails, try a different client cert or SNI option.

Each action does QueryType → (Pair if needed) → StartSession → optional TLS → service call.

Lockdown queries

QueryType → Pair → StartSession → TLS → GetValue
Idle

Screenshot

com.apple.mobile.screenshotr · DeviceLink · PNG/TIFF · requires mounted Developer Disk Image
Idle

Syslog stream

com.apple.syslog_relay · live decoded text · filter / save
Idle
Capture options

Reads block on WebUSB until the device sends data — if the phone is silent, Stop only takes effect when the next syslog line arrives. Lock/unlock or open an app to flush the pipe.

Network capture

com.apple.pcapd RVI · live decoder (Ethernet→IP→TCP/UDP/DNS/TLS-SNI) · saves a Wireshark .pcap
Idle
Capture options

The whole .pcap file (libpcap, LINKTYPE_ETHERNET, snaplen 65535) is held in memory — defaults are Max pcap bytes = 32 MiB, all other limits unbounded. The live table only mounts the most recent ~500 rows for performance; older packets stay in the saved .pcap and the in-page summary. Click any decoded row to expand its layered breakdown (Ethernet / IPv4 / IPv6 / TCP / UDP / DNS / TLS / HTTP).

Sysdiagnose

crashreportcopymobile AFC · probes DiagnosticLogs/sysdiagnose directly + full tree · per-archive download
Idle
Trigger on device

Press Vol Up + Vol Down + Side together for ~0.7 s (vibration). Wait ~5–10 minutes for the .tar.gz archive under DiagnosticLogs/sysdiagnose on the device. Note: stacks-*.ips crash reports are not the sysdiagnose archive; Mac Finder may show synced copies that are no longer on the phone.

Crash reports

crashreportmover + AFC crashreportcopymobile · per-file table with Save / Save all
Idle
Copy options

Files are streamed into memory (cap ~32 MiB). On success a per-file table appears below the log with Save buttons.

Output

Loading WASM…