Vous pouvez copier un attribut com.apple.quarantine existant d'un fichier arbitraire vers un fichier proxy, puis l'appliquer à d'autres fichiers arbitraires. Si vous ouvrez certains types de fichiers (par exemple les fichiers .txt), l'attribut de quarantaine sera cependant ignoré.
Exemple :
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
Cela appliquera les données recueillies à partir du fichier .dmg au fichier .command - y compris la date et l'application de téléchargement du fichier dmg original. La date/application de téléchargement originale du fichier .command ne le fera pas être restauré cependant.
Source : Utilisation de xattr pour définir la propriété de quarantaine de Mac OSX
Format de l'attribut de quarantaine :
flag;date;app_name;UUID;
- au moins 0001-0003 lève le dialogue "Voulez-vous vraiment ouvrir ce fichier...", mais 0062 ne le fait pas.
- date (dans l'horodatage hexadécimal d'Unix, au moins 00000000-1c000000 sont des dates inconnues, un ancien date qui fonctionne est 1d000000 : 02 Jun 1985 05:47:44 GMT)
- app (tout nom d'application est autorisé)
- Un UUID lié à un téléchargement de fichier qui peut être trouvé dans /Users/user/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 (évidemment facultatif)
Donc, en utilisant 0001;55555555;Klanomathiner;
dans le fichier proxy mentionné ci-dessus et l'appliquer à un fichier (dans l'exemple test.command) se lèvera :
o 0001;66666666;A Cyborg from the future;
Après avoir ouvert le fichier, le premier "drapeau" sera mis à 0041 et le fait de le rouvrir ne changera rien.
Avec un peu de magie bash/SQL, vous pouvez même récupérer l'UUID original et la date/application de téléchargement en interrogeant le nom du fichier dans la base de données sqlite - que le fichier com.apple.LaunchServices.QuarantineEventsV2 représente - et restaurer l'attribut de quarantaine original. Mais je suis trop paresseux pour le dessiner maintenant. Quelqu'un d'autre a déjà effectué un travail similaire ou connexe :
Lire com.apple.quarantine
/usr/bin/xattr -p com.apple.quarantine "${file}"
Définir 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}"
Insérer l'UUID dans la base de données
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);"
Vérifier si l'UUID existe dans la base de données
/usr/bin/sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 "SELECT * FROM LSQuarantineEvent WHERE LSQuarantineEventIdentifier == '${uuid}'"