Safari: uso de dtrace para investigar iCloud Tab Sync

Estoy investigando cómo Safari sincroniza las pestañas a través de iCloud.

Para empezar, realmente quiero saber cómo Safari está actualizando su lista compartida de pestañas, lo que significa monitorearlo o algún demonio en segundo plano para la creación y modificación de archivos. (Mi hipótesis es: cuando abro una nueva pestaña en mi teléfono, iCloud envía un mensaje a mi Mac que actualiza la lista de "Pestañas de iCloud" de Safari).

Estoy tratando de usar dtracepara monitorear las aperturas de archivos de Safari, con algo simple como:

sudo dtrace -n 'syscall::open*:entry /execname == "Safari"/ { printf ("%s", copyinstr(arg0)); }'

pero dtraceimprime este error:

dtrace: error on enabled probe ID 7 (ID 160: syscall::open:entry): invalid user access in action #1 at DIF offset 24

(Este es el mismo error que alguien preguntó en los foros de Apple )

La depuración de un extraño problema de permisos de iTunes con DTrace tenía información sobre un problema similar con iTunes, pero no entiendo muy bien qué volteretas hacia atrás realizaron para gdbque iTunes fuera dtracecapaz.

  1. ¿Alguien puede ayudarme a entender la depuración de un extraño problema de permisos de iTunes con DTrace : cuál es el error causado y cuál es la resolución?
  2. ¿Tiene algún conocimiento/información adicional sobre la sincronización de iCloud Tab? ¿Qué proceso los sincroniza? ¿Dónde se almacenan en el disco?

Respuestas (1)

El archivo que contiene las pestañas de iCloud es:

~/Library/SyncedPreferences/com.apple.Safari.plist

Es un archivo binario, por lo que puede usarlo plutilpara convertir una copia a JSON/XML para su procesamiento. Esperaba que la sincronización fuera a través, birdpero algunas exploraciones ligeras brctl log -wy otras indagaciones ligeras no reflejan los cambios que realizo en la base de datos de pestañas. Hay bastantes buenos proyectos en github que analizan este archivo en python, JS, así como una buena aplicación de barra de menú:

Saber dónde persisten los datos en el disco muestra que syncdefaultsdes el proceso de propiedad:

sudo fsusage -w | grep com.apple.Safari

Lamentablemente, ese marco privado y ese demonio básicamente no están documentados por Apple, excepto por lo que puede obtener de la lista de lanzamiento del servicio.

🙌 esto es fantástico, gracias! Ahora puedo sumergirme en mi copia de seguridad de Time Machine en busca de algunas pestañas perdidas...
Tampoco sabía acerca de los proyectos que leen ese archivo. ¡Fresco!