Safari: usar dtrace para investigar iCloud Tab Sync

2

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

Para comenzar, realmente quiero saber cómo Safari está actualizando su lista compartida de pestañas, lo que significa monitorearlo o algún demonio de fondo para las creaciones y modificaciones 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 dtrace para monitorear la apertura del archivo de Safari, con algo tan simple como:

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

pero dtrace imprime 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 )

Depuración de un problema extraño de permisos de iTunes con DTrace tenía información sobre un problema similar con iTunes, pero no entiendo muy bien qué backflips se realizaron en gdb para que iTunes sea dtrace -able.

  1. ¿Puede alguien ayudarme a entender Depurando 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?
pregunta cbowns 26.03.2016 - 16:17

1 respuesta

0

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

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

Es un archivo binario, por lo que puede usar plutil para convertir una copia a JSON / XML para su procesamiento. Esperaba que la sincronización se realizara a través de bird , pero un poco de espeleología ligera con brctl log -w y otras investigaciones de luz no reflejan los cambios que hago en la base de datos de pestañas. Hay bastantes proyectos interesantes en github que analizan este archivo en Python , JS, así como una buena aplicación de barra de menú:

Saber dónde persiste la información en el disco muestra que syncdefaultsd es el proceso de propiedad:

sudo fsusage -w | grep com.apple.Safari

Lamentablemente, el marco privado y el demonio no están documentados por Apple, salvo por lo que puedes extraer de la lista de lanzamiento para el servicio.

    
respondido por el bmike 26.03.2016 - 23:27

Lea otras preguntas en las etiquetas