17 votes

Comment définir (restaurer) l'attribut com.apple.quarantine ?

Il y a des questions avec de bonnes réponses qui expliquent comment supprimer l'attribut étendu com.apple.quarantine mais je me demandais comment le restaurer / le remettre en place ?

J'ai essayé ça :

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

mais apparemment, ne sachant pas quelle devrait être la valeur de l'attribut, cela ne donne rien.

Je suppose qu'il s'agit de la valeur de l'attribut, qui a le format suivant :

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

Ce que je veux faire, c'est que Gatekeeper me demande à nouveau si je veux exécuter cette application ou ce fichier, ou non. Rétablir le même comportement que si le fichier venait d'être téléchargé sur Internet et qu'il était exécuté pour la première fois.

27voto

klanomath Points 63400

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;
  1. au moins 0001-0003 lève le dialogue "Voulez-vous vraiment ouvrir ce fichier...", mais 0062 ne le fait pas.
  2. 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)
  3. app (tout nom d'application est autorisé)
  4. 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 :

enter image description here

o 0001;66666666;A Cyborg from the future;

enter image description here

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}'"

4voto

Ben Butterworth Points 233

J'aime beaucoup la réponse de klanomath, qui m'a aidé à comprendre ce qui se passe sous le capot.

Cependant, j'ai trouvé un moyen plus simple de réinitialiser la quarantaine : Il suffit de faire glisser l'application dans une nouvelle fenêtre du navigateur et la "retélécharger". . Le drapeau de quarantaine lui sera rajouté.

Si votre demande a été notariée, les avertissements de l'interface utilisateur n'apparaîtront pas. C'est le même comportement que la technique de copie-quarantaine-attribut de klanomath.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X