1 votes

Comment analyser les valeurs des attributs de fichiers étendus de MacOS ?

Si vous téléchargez un fichier depuis l'internet à l'aide de Safari, certains attributs étendus sont ajoutés au fichier téléchargé, parmi lesquels com.apple.metadata:kMDItemWhereFroms qui contient l'URL originale du téléchargement. Dans Finder > Get Info la valeur de cette clé sera affichée sous Où à partir de : .

/bin/ls -alh indique la présence d'attributs étendus avec un @ dans la colonne mode et xattr -l filename.zip énumère tous les attributs.

Selon la xattr pour afficher la valeur d'un attribut que l'on peut utiliser :

xattr -p com.apple.metadata:kMDItemWhereFroms filename.zip

# OUTPUT
# com.apple.metadata:kMDItemWhereFroms: bplist00_=https://example.com/filename.zip

Ainsi, même si le contenu est visible, la valeur est dans un format binaire avec un en-tête de bplist00_ .

J'ai essayé de l'analyser de la manière suivante :

xattr -p com.apple.metadata:kMDItemWhereFroms filename.zip > url.plist

# checking the file format:
file url.plist

# OUTPUT:
# url.plist: Apple binary property list

# assuming this should work:
plutil -convert xml1 url.plist

# OUTPUT:
# url.plist: Property List error: Unexpected character b at line 1 / JSON error: 
# JSON text did not start with array or object and option to allow 
# fragments not set. around line 1, column 0.

Essayer d'analyser le fichier avec ootb de Python plistlib provoque également une erreur :

import plistlib

with open('url.plist', 'rb') as fi:
    plist = plistlib.load(fi)

# OUTPUT:
# plistlib.InvalidFileException: Invalid file

D'après la sortie, il semble qu'il ne s'agisse pas d'un format plist binaire normal, même si file url.plist affirme qu'il s'agit d'un Apple binary property list '. Des indications sur le format et sur la manière de l'analyser pour obtenir une valeur en texte brut ?

4voto

Mateusz Szlosek Points 21762

Vous pouvez l'imprimer en hex puis de le faire passer par xxd comme suit :

xattr -x -p com.apple.metadata:kMDItemWhereFroms filename.zip | xxd -r -p | plutil -p - 

Si vous souhaitez obtenir un autre format de sortie, vous pouvez modifier les paramètres suivants plutil à quelque chose comme :

plutil -convert json -o - -

Exemple de sortie :

["https:\/\/another.example.com","https:\/\/example.com\/path\/"]

2voto

Richard Marquez Points 387

J'ai fini par utiliser Python comme décrit à l'adresse suivante https://stackoverflow.com/a/33182025/191246

# dependencies:
# pip install xattr biplist

import biplist
import xattr

attrs = xattr.xattr('filename.zip')

print(biplist.readPlistFromString(attrs.get('com.apple.metadata:kMDItemWhereFroms')))

# OUTPUT:
# ['https://example.com/..', 'https://another.example/..']

Avec Python, le résultat est une liste qui peut être manipulée et itérée par programme.

1voto

benwiggy Points 21125

Howard Oakley a créé un éditeur pour les attributs étendus, qui peut être utile pour analyser le contenu.

https://eclecticlight.co/xattred-sandstrip-xattr-tools/

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