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;
- al menos 0001-0003 aparece el cuadro de diálogo "¿Realmente desea abrir este archivo ...", pero 0062 no lo hace?
- 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)
- aplicación (cualquier nombre de aplicación permitido)
- 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}'"