Usa mdfind per identificare tutti i dmg crittografati?

5

Qualcuno può suggerire un modo intelligente per identificare tutti i dmg crittografati?

La mia unica idea è piuttosto complicata. usa mdfind '(kMDItemFSName=*.dmg)' e poi prova la risposta da hdiutil imageinfo e registra il risultato di quelli che chiedono una password. Grazie alla risposta e ai commenti, il seguente comando esegue tutti i dmg attraverso hdiutil, ma non riesco a capire come identificare quelli che danno un errore. Qualche idea?

mdfind -0 "kMDItemFSName=*.dmg" |xargs -0 -I{} -L 1 hdiutil imageinfo {}
    
posta jakethedog 16.10.2015 - 12:03
fonte

3 risposte

1

Al momento sul mio disco locale ho 88 file .dmg , tre dei quali sono criptati. Prima di eseguire la riga di comando di seguito non sapevo quanti file .dmg crittografati avessi e, se ce ne fossero, dov'erano. Pertanto, anche se la seguente riga di comando potrebbe sembrare complessa, dovrebbe funzionare come pubblicizzato.

Apri Terminale e copia e incolla l'intera riga di comando di seguito, così com'è, nel Terminale , quindi premi Invio .

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

Questo creerà due file, dmg_file_list e encrypted_dmg_file_list e produrrà il contenuto di quest'ultimo nel Terminale. I file possono anche essere aperti in un editor di testo.

I file conterranno il nome di percorso completo dei file .dmg seguiti da uno spazio e crittografati: NO o crittografato: SÌ nel file dmg_file_list e solo il nome percorso completo dei file .dmg seguito da uno spazio e crittografato: SÌ nel file encrypted_dmg_file_list .

Puoi quindi eliminare manualmente i due file creati dal comando quando hai finito con essi.

Nota: una volta eseguita la riga di comando, potrebbe essere necessario un momento per elaborare e inviare il contenuto del file encrypted_dmg_file_list al Terminale. Dipenderà da quanti file .dmg ci sono.

Ecco la linea di comando completa mostrata con la continuazione della riga in modo da assicurarti di copiare e incollare l'intera linea. (Puoi anche copiare e incollare la riga di comando anche in questo formato.)

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
    
risposta data 17.10.2015 - 08:23
fonte
2

Spotlight non ha metadati sufficienti per differenziare le scelte del filesystem memorizzate all'interno di un DMG. In altre parole, è come chiedere a quali documenti di Pages le parole francesi contengono solo mdls . I dati per effettuare quella ricerca non sono contenuti nei metadati.

Il comando corretto per verificare se un file immagine specifico è crittografato è hdiutil isencrypted /path/to/dmg

Esempio:

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

Output:

encrypted: YES
blocksize: 512
uuid: DE78A7BE-2B64-4556-8EC9-93DFAC15A839
private-key-count: 0
passphrase-count: 1
max-key-count: 1
version: 2
    
risposta data 16.10.2015 - 21:40
fonte
1

Una soluzione che utilizza mdfind -0 e 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'
    
risposta data 17.10.2015 - 14:35
fonte

Leggi altre domande sui tag