Strumento robusto e completo per l'estrazione del contenuto originale da file firmati digitalmente in formato PKCS#7 (.p7m), comunemente utilizzati per la firma digitale in Italia.
Disponibile per Linux, macOS e Windows!
- β Estrazione robusta: Gestisce file .p7m in formato DER e PEM
- π Verifica firma: Opzione per verificare la validitΓ della firma digitale
- π Info certificato: Visualizza informazioni dettagliate sul certificato di firma
- π Elaborazione batch: Processa singoli file o intere directory (anche ricorsivamente)
- π¨ Output colorato: Interfaccia colorata e intuitiva con icone
- π Statistiche dettagliate: Report completo delle operazioni eseguite
- π§ ModalitΓ dry-run: Simula le operazioni senza estrarre realmente i file
- π Logging: Salva log dettagliati delle operazioni
- β‘ Gestione errori: Controllo completo degli errori con messaggi informativi
- π Preservazione timestamp: Mantiene le date originali dei file
- πͺ Multipiattaforma: Funziona su Linux, macOS e Windows
- Bash 5.0 o superiore
- OpenSSL (per l'estrazione e verifica dei file)
- PowerShell 5.1 o superiore (giΓ incluso in Windows 10/11)
- OpenSSL per Windows
sudo apt-get update
sudo apt-get install opensslsudo dnf install opensslbrew install openssl- Scarica OpenSSL per Windows da: https://slproweb.com/products/Win32OpenSSL.html
- Installa la versione "Win64 OpenSSL" (non la versione Light)
- Durante l'installazione, seleziona l'opzione per aggiungere OpenSSL al PATH di sistema
- Riavvia il terminale/PowerShell dopo l'installazione
- Clona il repository:
git clone https://github.com/yourusername/extract-p7m.git
cd extract-p7m- Rendi lo script eseguibile:
chmod +x extract-p7m.sh- (Opzionale) Crea un link simbolico per usarlo da qualsiasi posizione:
sudo ln -s $(pwd)/extract-p7m.sh /usr/local/bin/extract-p7m- Clona il repository o scarica i file:
git clone https://github.com/yourusername/extract-p7m.git
cd extract-p7m-
Lo script Γ¨ giΓ pronto all'uso! Puoi eseguirlo in due modi:
-
Metodo 1 (consigliato): Usa il file batch
extract-p7m.bat documento.pdf.p7m
-
Metodo 2: Esegui direttamente lo script PowerShell
.\extract-p7m.ps1 documento.pdf.p7m
-
-
(Opzionale) Aggiungi la directory al PATH per usarlo da qualsiasi posizione:
- Apri "Variabili d'ambiente" dal Pannello di controllo
- Aggiungi il percorso della cartella extract-p7m alla variabile PATH
- Riavvia il terminale
Linux / macOS:
./extract-p7m.sh [OPZIONI] <input>Windows (PowerShell):
.\extract-p7m.ps1 [PARAMETRI] <InputPath>Windows (Batch):
extract-p7m.bat [OPZIONI] <input>| Opzione Linux/macOS | Opzione Windows PowerShell | Descrizione |
|---|---|---|
-h, --help |
-Help |
Mostra il messaggio di aiuto |
-V, --version |
-Version |
Mostra la versione dello script |
-v, --verbose |
-VerboseOutput |
Output verboso con informazioni dettagliate |
-r, --recursive |
-Recursive |
Elabora ricorsivamente tutte le sottodirectory |
-o, --output DIR |
-OutputDir DIR |
Specifica la directory di output (default: stessa del file input) |
-f, --force |
-Force |
Sovrascrive i file esistenti senza chiedere conferma |
-n, --dry-run |
-DryRun |
Simula l'operazione senza estrarre realmente i file |
-s, --verify-signature |
-VerifySignature |
Verifica la validitΓ della firma digitale |
-c, --cert-info |
-ShowCertInfo |
Mostra informazioni sul certificato di firma |
-l, --log FILE |
-LogFile FILE |
Salva il log delle operazioni in un file |
--no-timestamps |
-NoTimestamps |
Non preserva i timestamp originali dei file |
Nota: Il file batch Windows (extract-p7m.bat) accetta le stesse opzioni della versione Linux/macOS.
Linux/macOS:
./extract-p7m.sh documento.pdf.p7mWindows (Batch):
extract-p7m.bat documento.pdf.p7mWindows (PowerShell):
.\extract-p7m.ps1 documento.pdf.p7mEstrae il contenuto da documento.pdf.p7m e crea documento.pdf nella stessa directory.
Linux/macOS:
./extract-p7m.sh -r /percorso/cartellaWindows (Batch):
extract-p7m.bat -r C:\DocumentiWindows (PowerShell):
.\extract-p7m.ps1 -Recursive C:\DocumentiElabora ricorsivamente tutti i file .p7m nella cartella specificata e nelle sue sottodirectory.
Linux/macOS:
./extract-p7m.sh -s -c documento.pdf.p7mWindows (PowerShell):
.\extract-p7m.ps1 -VerifySignature -ShowCertInfo documento.pdf.p7mEstrae il file, verifica la firma digitale e mostra le informazioni del certificato.
Linux/macOS:
./extract-p7m.sh -o /tmp/estratti -r /percorso/cartellaWindows (PowerShell):
.\extract-p7m.ps1 -OutputDir C:\Temp\Estratti -Recursive C:\DocumentiEstrae tutti i file .p7m nella directory specificata.
Linux/macOS:
./extract-p7m.sh -n -v -r /percorso/cartellaWindows (PowerShell):
.\extract-p7m.ps1 -DryRun -VerboseOutput -Recursive C:\DocumentiSimula l'estrazione di tutti i file mostrando cosa verrebbe fatto, senza modificare nulla.
Linux/macOS:
./extract-p7m.sh -v -l extraction.log -r /percorso/cartellaWindows (PowerShell):
.\extract-p7m.ps1 -VerboseOutput -LogFile extraction.log -Recursive C:\DocumentiEstrae tutti i file salvando un log dettagliato.
Linux/macOS:
./extract-p7m.sh -f -r /percorso/cartellaWindows (PowerShell):
.\extract-p7m.ps1 -Force -Recursive C:\DocumentiEstrae tutti i file sovrascrivendo automaticamente eventuali file esistenti.
Lo script fornisce un output colorato e intuitivo:
- β Verde: Operazioni completate con successo
- β Rosso: Errori
- β Giallo: Avvisi
- βΉ Blu: Informazioni
- β Cyan: Messaggi di debug (solo in modalitΓ verbose)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Extract P7M - Estrattore File Firmati β
β Versione 1.0.0 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Dipendenze verificate
βΉ Scansione directory: /documenti
βΉ Trovati 5 file .p7m
βΉ Elaborazione: fattura_2024.pdf.p7m
β Estratto: fattura_2024.pdf
βΉ Elaborazione: contratto.docx.p7m
β Estratto: contratto.docx
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
STATISTICHE
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βΉ File totali processati: 5
β Estrazioni riuscite: 5
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Codice | Descrizione |
|---|---|
| 0 | Operazione completata con successo |
| 1 | Errore generico |
| 2 | Dipendenze mancanti |
| 3 | File di input non valido |
| 4 | Errore durante l'estrazione |
Questi codici possono essere utilizzati negli script di automazione:
./extract-p7m.sh documento.pdf.p7m
if [ $? -eq 0 ]; then
echo "Estrazione completata!"
else
echo "Estrazione fallita!"
fiI file .p7m sono file firmati digitalmente secondo lo standard PKCS#7 (Public Key Cryptography Standards). Questi file contengono:
- Il documento originale
- La firma digitale
- Il certificato del firmatario
- La catena di certificati (opzionale)
Lo script estrae il documento originale verificando (opzionalmente) la validitΓ della firma.
Installa OpenSSL seguendo le istruzioni nella sezione Requisiti.
Alcuni file potrebbero:
- Non essere realmente file .p7m
- Essere corrotti
- Utilizzare un formato non standard
Prova a verificare il file con:
file documento.pdf.p7m
openssl pkcs7 -in documento.pdf.p7m -inform DER -print_certs -nooutAssicurati di avere i permessi di lettura sul file di input e di scrittura sulla directory di output:
chmod +r input.pdf.p7m
chmod +w /percorso/outputSe ricevi l'errore "OpenSSL non trovato":
- Verifica che OpenSSL sia installato: apri PowerShell e digita
openssl version - Se non installato, scaricalo da https://slproweb.com/products/Win32OpenSSL.html
- Assicurati che OpenSSL sia nel PATH di sistema
- Riavvia PowerShell dopo l'installazione
Per aggiungere OpenSSL al PATH manualmente:
$env:Path += ";C:\Program Files\OpenSSL-Win64\bin"Se ricevi errori di execution policy quando esegui lo script PowerShell:
Soluzione 1 (Consigliata): Usa il file batch
extract-p7m.bat documento.pdf.p7mSoluzione 2: Esegui con bypass policy
powershell -ExecutionPolicy Bypass -File .\extract-p7m.ps1 documento.pdf.p7mSoluzione 3: Cambia la policy (richiede amministratore)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserSe il percorso contiene spazi, racchiudilo tra virgolette:
.\extract-p7m.ps1 "C:\Documenti con spazi\file.pdf.p7m"Windows potrebbe avere problemi con alcuni caratteri. Rinomina il file rimuovendo caratteri speciali se necessario.
I contributi sono benvenuti! Per favore:
- Fai un fork del repository
- Crea un branch per la tua feature (
git checkout -b feature/AmazingFeature) - Commit le tue modifiche (
git commit -m 'Add some AmazingFeature') - Push al branch (
git push origin feature/AmazingFeature) - Apri una Pull Request
- Release iniziale
- Estrazione file .p7m in formato DER e PEM
- Supporto elaborazione batch e ricorsiva
- Verifica firma digitale
- Visualizzazione informazioni certificato
- ModalitΓ dry-run
- Logging dettagliato
- Output colorato
- Gestione completa degli errori
- Supporto multipiattaforma: Linux, macOS e Windows
- Script Bash per Linux/macOS (
extract-p7m.sh) - Script PowerShell per Windows (
extract-p7m.ps1) - File batch wrapper per Windows (
extract-p7m.bat)
Questo progetto Γ¨ rilasciato sotto licenza GPL-3.0. Vedi il file LICENSE per i dettagli.
Creato con β€οΈ per semplificare la gestione dei file firmati digitalmente.
- OpenSSL per le funzionalitΓ crittografiche
- La community open source
Questo strumento è fornito "così com'è", senza garanzie di alcun tipo. L'autore non è responsabile per eventuali danni derivanti dall'uso di questo software. Usalo a tuo rischio.
Nota: I file .p7m sono comunemente utilizzati in Italia per documenti come fatture elettroniche, contratti firmati digitalmente, e altre comunicazioni ufficiali che richiedono firma digitale.