Recently I convinced my boss in switching from Windows-based clients to Mac OS X ones. Unfortunately one of the activity we dealt with required the ability of reading P7M files, that’s files that have been digitally signed and encoded in PCKS#7 SMIME Mail.
I searched a lot but wasn’t able to find a P7M viewer for Mac OS X… With Windows Acrobat Reader itself reads the P7M, while Acrobat for Mac doesn’t…, so I started investigating.
The command line to decode a P7M file is pretty easy:
openssl smime -decrypt -in file_in.pdf.p7m -inform DER -verify -noverify -out file_out.pdf
So the deal was to allow any user to view the files without having to deal with the Terminal.
Luckily enough with a great help from my friend Marco Balestra, we quickly hacked an AppleScript Application that can be used to decrypt the P7M, launch the viewer, and then delete the temporary file.
Here you find it attached. Just Unzip it, right click on the P7M and select “Open with…”
Obviously it comes with no warranties of any kind 🙂
Ermh… I forgot the attachment, here it is: OpenP7M
volevo scaricare il file ma il link e morto!!
Hai ragione. Lo sistemo tra breve.
grazie 🙂
Ho (finalmente) corretto il link. Scusa per il ritardo 🙂
grazie 🙂
Prima di tutto volevo ringraziare chi ha fatto lo script e ci ha spiegato come decodificare i p7m dal terminale.
Poi volevo segnalare che sia dal terminale sia ovviamente dallo script che per alcuni p7m il trucco non funziona e non si riesce a decodificare il file, qualcuno sa xche?
Probabilmente sono p7m base64…
Aprili con textedit e vedi se sono binari o testuali. Nel secondo caso la procedura è diversa.
Grazie di avermi risposto!
Si ai ragione il p7m e testuale aprendolo con textedit inizia così
—–BEGIN PKCS7—–
MIMDAn4GCSqGSIb3DQEHAqCDAwJuMIMDAmkCAQExDzANBglghkgBZQMEAgEFADCD
AvmlBgkqhkiG9w0BBwGggwL5lQSDAvmQJVBERi0xLjQKJcOkw7zDtsOfCjIgMCBv
YmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4
quale la procedura giusta?
Ti ringrazio
Antonio
Devi decodificarlo da base64.
Da terminale:
openssl base64 -d -in -out
Dove file in input è il p7m che hai ora, e fileinoutput è il p7m binario da creare. A quel punto vai di openp7m.
Ciao
OK funziona !!!!!!!
Grazie 1000000000000 della dritta
ora vedo se sono capace di modificare il tuo script e renderlo “universale”, e poi telo ripasso a te e alla comunitÃ
Grazie ancora, era umiliante dover passare da windows x aprire i p7m
Sono riuscito a fare uno script universale, cioe che determina se il file e un base64 o un binario, ma non essendo molto pratico di Apple script , ho fatto uno script bash del terminale, eccolo qui
#!/bin/bash
echo “Trascina qui il file p7m”
read file
test=$(head -c 10 “$file”)
echo $test
if [ “$test” == “—–BEGIN” ]
then
openssl base64 -d -in “$file” -out “$file.pdf”
else
openssl smime -decrypt -in “$file” -inform DER -verify -noverify -out “$file.pdf”
fi
exit 0
ho anche cercato di riprodurre la stessa funzionalità dello script di skeyby facendo un applicazione Autometor, ma non funziona bene come l’Apple script, ad ogni modo la potete scaricare da qui
https://dl.dropboxusercontent.com/u/5663561/OpenP7M%20universal.app.zip
P.S.
qualcuno riesce a sistemare lo script in apple script?
grazie a tutti
Ho trovato dover a l’inghippo, ora lo script funziona sempre bene, in pratica cancellavo il file prima ancora che venisse aperto, ho risolto il tutto aggiungendo il comando sleep ecco lo script corretto
https://dl.dropboxusercontent.com/u/5663561/OpenP7M%20universal.app.zip
ora pero mi viene in mente che un file firmato p7m, non e necessariamente un pdf, vabo x il momento mi accontento
Hi
Can you please share this viewer again ?
Link is not working
https://www.dropbox.com/s/bigjxu71u1zju1r/OpenP7M%20universal.app.zip?dl=0