¿Cómo establecer (restaurar) el atributo com.apple.quarantine?

5

Hay preguntas con buenas respuestas que explican cómo eliminar el atributo extendido com.apple.quarantine, pero me preguntaba cómo se puede restaurar / restablecer una vez más.

He intentado esto:

xattr -w com.apple.quarantine $VALUE /Applications/AnApp.app

pero aparentemente sin saber qué valor del atributo debe ser, esto no logra nada.

Supongo que se trata del valor del atributo, que tiene el siguiente formato:

com.apple.quarantine: 0061;53822fd4;Google\x20Chrome;C1022EC2-E1B2-4896-AF74-B68F4BF97779

Lo que quiero hacer es hacer que Gatekeeper me pregunte nuevamente si quiero ejecutar esta aplicación o archivo, o no. Restaure el mismo comportamiento como si el archivo se hubiera descargado de Internet y se ejecutara por primera vez.

    
pregunta ILIV 10.10.2016 - 10:20

1 respuesta

9

Puede copiar un atributo com.apple.quarantine existente de un archivo arbitrario a un archivo proxy y luego aplicarlo a otros archivos arbitrarios. Si abres ciertos tipos de archivos (por ejemplo, archivos .txt), el atributo de cuarentena se ignorará.

Ejemplo:

xattr -p com.apple.quarantine /Users/user/dnscrypt-osxclient-1.0.12.dmg > quarantine.attr
xattr -w com.apple.quarantine "'cat quarantine.attr'" test.command 

Esto aplicará los datos recopilados de .dmg al archivo .command, incluida la fecha de descarga y la aplicación de descarga del archivo dmg original. Sin embargo, la fecha / aplicación de descarga original de .command no se restaurará.

Fuente: Uso de xattr para configurar la propiedad de cuarentena de Mac OSX

Formato del atributo de cuarentena:

flag;date;app_name;UUID;
  1. al menos 0001-0003 aparece el cuadro de diálogo "¿Realmente desea abrir este archivo ...", pero 0062 no lo hace?
  2. fecha (en la marca de tiempo hexadecimal de Unix, al menos 00000000-1c000000 son fechas desconocidas, una fecha temprana que funciona es 1d000000: 02 de junio 1985 05:47:44 GMT)
  3. aplicación (cualquier nombre de aplicación permitido)
  4. Un UUID relacionado con una descarga de archivos que se puede encontrar en /Users/user/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 (obviamente facultativo)

Por lo tanto, usar 0001;55555555;Klanomathiner; en el archivo proxy mencionado anteriormente y aplicarlo a un archivo (en el ejemplo test.command) aumentará:

o0001;66666666;ACyborgfromthefuture;

Despuésdeabrirelarchivo,laprimera"bandera" se establecerá en 0041 y, al volver a abrirla, no se levantará nada.

Con algo de bash / SQL-magic, incluso puede recuperar el UUID original y la fecha / aplicación de descarga consultando el nombre del archivo en la base de datos sqlite, que representa el archivo com.apple.LaunchServices.QuarantineEventsV2 y restaura el original. atributo de cuarentena. Pero soy demasiado perezoso para dibujar esto ahora. Alguien más tiene trabajo similar / relacionado ya hecho:

Lee com.apple.quarantine

/usr/bin/xattr -p com.apple.quarantine "${file}"

Establecer com.apple.quarantine

application="cURL"
date=$(printf %x $(date +%s))
uuid=$(/usr/bin/uuidgen)
/usr/bin/xattr -w com.apple.quarantine "0002;${date};${application};${uuid}" "${file}"

Insertar UUID en la base de datos

download_url="http://example.com/file.zip"
date=$(($(date +%s) - 978307200))
/usr/bin/sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 "INSERT INTO \"LSQuarantineEvent\" VALUES('${uuid}',${date},NULL,'${application}','${download_url}',NULL,NULL,0,NULL,'${url}',NULL);"

Comprueba si el UUID existe en la base de datos

/usr/bin/sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 "SELECT * FROM LSQuarantineEvent WHERE LSQuarantineEventIdentifier == '${uuid}'"
    
respondido por el klanomath 10.10.2016 - 13:22

Lea otras preguntas en las etiquetas