Question:
Comment définir (restaurer) l'attribut com.apple.quarantine?
ILIV
2016-10-10 13:20:53 UTC
view on stackexchange narkive permalink

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é ceci:

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

mais apparemment ne pas savoir quelle valeur d'attribut devrait être cela n'apporte rien.

Je suppose que tout dépend de la valeur de l'attribut, qui est du 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.Restaurez le même comportement que si le fichier venait d'être téléchargé depuis Internet et qu'il était exécuté pour la première fois.

Un répondre:
klanomath
2016-10-10 16:22:07 UTC
view on stackexchange narkive permalink

Vous pouvez copier un attribut com.apple.quarantine existant d'un fichier arbitraire dans un fichier proxy, puis l'appliquer à d'autres fichiers arbitraires. Si vous ouvrez certains types de fichiers (par exemple des fichiers .txt), l'attribut de quarantaine sera 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 collectées à partir du .dmg au fichier .command - y compris la date de téléchargement et l'application de téléchargement du fichier dmg d'origine. Cependant, la date / application de téléchargement d'origine de la .command ne sera pas restaurée.

Source: Utilisation de xattr pour définir la propriété de quarantaine Mac OSX


Format de l'attribut de quarantaine:

  drapeau; date; app_name; UUID;
 
  1. au moins 0001-0003 augmente la boîte de dialogue "Voulez-vous vraiment ouvrir ce fichier ...", mais pas 0062.
  2. date (dans l'horodatage hexadécimal Unix, au moins 00000000-1c000000 sont des dates inconnues, une date antérieure qui fonctionne est 1d000000: 02 juin 1985 05:47:44 GMT)
  3. application (tout nom d'application 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, utiliser 0001; 55555555; Klanomathiner; dans le fichier proxy mentionné ci-dessus et l'appliquer à un fichier (dans l'exemple test.command) augmentera:

enter image description here

ou 0001; 66666666; Un cyborg du futur;

enter image description here

Après avoir ouvert le fichier, le premier "drapeau" sera défini sur 0041 et sa réouverture ne déclenchera rien.


Avec un peu de magie bash / SQL, vous pouvez même récupérer l'UUID d'origine et la date de téléchargement / l'application en recherchant le nom de fichier dans la base de données sqlite - que le fichier com.apple.LaunchServices.QuarantineEventsV2 représente - et restaurer l'original attribut de quarantaine. Mais je suis trop paresseux pour rédiger ceci maintenant. Quelqu'un d'autre a déjà fait un travail similaire / similaire:

Lisez com.apple.quarantine

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

Définissez 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}" "$ {fichier}"
 

Insérez 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érifiez 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}'"
 
C'est une solution de contournement et il est bon de savoir, mais cette réponse n'explique pas la valeur qu'un attribut doit avoir définie pour que Gatekeeper présente cette boîte de dialogue de sécurité destinée à faire réfléchir les utilisateurs à deux fois avant d'exécuter une application.
Merci klanomath.Cela répond longuement à ma question.Je pense que nous avons une très bonne réponse ici et que beaucoup de gens en profiteront!


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...