Puedes copiar un atributo existente de com.apple.quarantine de un archivo arbitrario a un archivo proxy y luego aplicarlo a otros archivos arbitrarios. Sin embargo, si abres ciertos tipos de archivos (por ejemplo, archivos .txt) el atributo de cuarentena será ignorado.
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 reunidos del .dmg al archivo .command - incluyendo la fecha de descarga y la aplicación de descarga del archivo dmg original. La fecha y aplicación de descarga original del .command no lo hará ser restaurado, sin embargo
Fuente: Usando xattr para establecer la propiedad de cuarentena de Mac OSX
Formato del atributo de cuarentena:
flag;date;app_name;UUID;
- al menos el 0001-0003 levanta el diálogo "¿Realmente quieres abrir este archivo...?", pero el 0062 no lo hace.
- fecha (en el sello de tiempo hexadecimal de Unix, al menos 00000000-1c000000 son fechas desconocidas, un fecha que funciona es 1d000000: 02 Jun 1985 05:47:44 GMT)
- app (cualquier nombre de app permitido)
- Un UUID relacionado con una descarga de archivos que se puede encontrar en /Users/user/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 (obviamente facultativo)
Así que usando 0001;55555555;Klanomathiner;
en el archivo proxy mencionado anteriormente y aplicándolo a un archivo (en el ejemplo test.command) se elevará:
o 0001;66666666;A Cyborg from the future;
Después de abrir el archivo, la primera "bandera" se fijará en 0041 y al reabrirlo no se levantará nada.
Con un poco de magia bash/SQL puede incluso recuperar el UUID original y la fecha de descarga/app preguntando por el nombre del archivo en la base de datos sqlite - que el archivo com.apple.LaunchServices.QuarantineEventsV2 representa - y restaurar el atributo de cuarentena original. Pero soy demasiado perezoso para redactar esto ahora. Alguien más ya ha hecho trabajos similares o relacionados:
Lea com.apple.quarantine
/usr/bin/xattr -p com.apple.quarantine "${file}"
Poner en cuarentena com.apple.apple
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);"
Compruebe si existe un UUID en la base de datos
/usr/bin/sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 "SELECT * FROM LSQuarantineEvent WHERE LSQuarantineEventIdentifier == '${uuid}'"