5 votes

Utiliser mdfind pour identifier tous les dmg cryptés ?

Quelqu'un peut-il suggérer un moyen astucieux d'identifier tous les dmg qui sont cryptés ?

Ma seule idée est plutôt compliquée. mdfind '(kMDItemFSName=*.dmg)' puis tester la réponse de hdiutil imageinfo et enregistrer le résultat de ceux qui demandent un mot de passe. Grâce à la réponse et aux commentaires, la commande suivante exécute tous les dmg via hdiutil, mais je n'arrive pas à identifier ceux qui donnent une erreur. Une idée ?

mdfind -0 "kMDItemFSName=*.dmg" |xargs -0 -I{} -L 1 hdiutil imageinfo {}

2voto

klanomath Points 63400

Spotlight ne dispose pas de métadonnées suffisantes pour différencier les choix de systèmes de fichiers stockés dans un DMG. En d'autres termes, c'est comme si l'on demandait quels documents Pages contiennent des mots français en utilisant simplement la fonction mdls . Les données nécessaires à cette recherche ne sont pas contenues dans les métadonnées.

La commande appropriée pour vérifier si un fichier image spécifique est crypté est la suivante hdiutil isencrypted /path/to/dmg

Exemple :

host:~ user$ hdiutil isencrypted /Users/user/Downloads/test.dmg

Sortie :

encrypted: YES
blocksize: 512
uuid: DE78A7BE-2B64-4556-8EC9-93DFAC15A839
private-key-count: 0
passphrase-count: 1
max-key-count: 1
version: 2

1voto

user3439894 Points 52496

Actuellement, sur mon disque local, j'ai 88 .dmg dont trois sont cryptés. Avant d'exécuter la ligne de commande ci-dessous, je ne savais pas combien de fichiers cryptés avaient été créés. .dmg que j'avais et, le cas échéant, où ils se trouvaient. Ainsi, même si la ligne de commande suivante peut sembler alambiquée, elle devrait fonctionner comme prévu.

Ouvrir Terminal et copier-coller toute la ligne de commande ci-dessous, telle quelle, dans le fichier Terminal puis appuyez sur Entrer .

mdfind '(kMDItemFSName=*.dmg)' | while IFS= read -r line; do printf "$line " & hdiutil isencrypted "$line"; done > dmg_file_list; grep ': YES' dmg_file_list > encrypted_dmg_file_list; clear; cat encrypted_dmg_file_list

Cela créera deux fichiers, liste_de_fichiers_dmg y liste_de_fichiers_dmg_chiffrés et afficher le contenu de ce dernier dans le terminal. Les fichiers peuvent également être ouverts dans un éditeur de texte.

Les fichiers contiendront les éléments suivants nom de chemin entièrement qualifié de la .dmg suivis d'un espace et de l'une ou l'autre des deux options suivantes crypté : NON o crypté : OUI dans le liste_de_fichiers_dmg et seulement le fichier nom de chemin entièrement qualifié de la .dmg suivi d'un espace et de crypté : OUI dans le liste_de_fichiers_dmg_chiffrés fichier.

Vous pouvez ensuite supprimer manuellement les deux fichiers créés par la commande lorsque vous avez terminé.

Note : Une fois la ligne de commande exécutée, le traitement et la sortie du contenu du fichier liste_de_fichiers_dmg_chiffrés dans le terminal. Cela dépendra du nombre de .dmg il y a des fichiers.

Voici la ligne de commande complète avec la suite des lignes, afin que vous puissiez copier et coller la totalité de la ligne. (Vous pouvez également copier et coller la ligne de commande dans ce format).

mdfind '(kMDItemFSName=*.dmg)' | while IFS= read -r line; \
do printf "$line " & hdiutil isencrypted "$line"; \
done > dmg_file_list; grep ': YES' dmg_file_list > encrypted_dmg_file_list; \
clear; cat encrypted_dmg_file_list

1voto

Michael Zhou Points 167

Une solution utilisant mdfind -0 y xargs :

mdfind -0 "kMDItemFSName == '*.dmg'" | xargs -0 -IX ksh -c '
    if    hdiutil isencrypted "X"  2>&1 | grep -q "encrypted: YES"
    then  echo "X -ENCRYPTED"
    fi'

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