In queste righe vedremo come stampare un file PDF che ha disabilitato
il
permesso di stampa e impareremo a modificare un PDF che ci nega il
permesso
di selezionare testo e immagini.
Il Portable Document Format (PDF) è basato sull'Adobe PostScript
language a
cui sono state apportati miglioramenti e modiche.
L'Adobe ha rilasciato gratuitamente il suo Adobe Acrobat SDK, così
chiunque
può creare il suo editor o filtro senza reverse engineering
o cose del
genere. Adobe comunque rimane la proprietaria e mantiene per sè
lo sviluppo
allo scopo di non snaturare il formato (e di tenere segrete alcune
caratteristiche).
Il sistema di password del pdf è molto poco sicuro. Esistono
due tipi di
password: la password del proprietario e la user passoword. La password
del
proprietario controlla le opzioni di sicurezza (o permessi), ma non
impedisce a un file di essere caricato e visto. La user password impedisce
a un file di essere decifrato e visto. Benchè il sistema di
cifratura sia
conosciuto non esistono al momento sistemi per craccare la user password.
Si potrebbe tentare qualcosa con un bruteforce.
Se qualche caratteristica di sicurezza è stata attivata dall'autore
del
file, il PDF sarà cifrato. Queste caratteristiche impediscono
di
selezionare e copiare il testo e le immagini e di stamparlo.
Ma se un file pdf può essere visualizzato allora è molto
vulnerabile,
indipendentemente dalla presenza della password del proprietario. Le
opzioni di sicurezza per impedire la stampa, selezione e copiatura
del
testo, l'aggiunta di note, sono inutili.
^ Modifichiamo il pdf affinchè si
possa selezionare (e copiare) il testo e
le immagini.
Se abbiamo un file PDF che ha l'opzione di sicurezza solo per la selezione
del testo e delle immmagini, ci verrà in aiuto xpdf, un programma
per la
visualizzazione dei pdf per UNIX, VMS e OS/2 che gira sotto X Window
System.
Per le vecchie leggi sul divieto di esportazione della crittografia
dagli
USA, il creatore del programma xpdf, Derek B. Noonburg, non poteva
distribuire la
sua patch per visualizzare i file PDF con opzioni di sicurezza
attivate, ma occorreva collocarla fuori dagli USA. Ora, invece, che
le leggi
sono cambiate (dal dicembre 1999), l'autore mi ha detto che la implementerà
nella prossima versione.
Per patchare il programma procuriamoci i
sorgenti. Decompattiamo i sorgenti
di xpdf e poniamo la patch nella stessa directory in modo che si abbia:
xpdf-0.90/
xpdf-0.90-fefe-diff2
possiamo così provvedere a patchare i sorgenti con
patch -p0 <xpdf-0.90-fefe-diff2
Ora possiamo ricompilare facendo configure e make (se avete problemi
guardate le istruzioni all'interno dell'archivio o usate la
versione 0.80 già
patchata e impacchettata in rpm ).
Con xpdf patchato possiamo visualizzare i file e selezionare (e copiare)
il
testo.
Ricordo che le parti di xpdf che non si appoggiano all'interfaccia
grafica
X di Unix (pdftops, pdftotext, pdfinfo e pdfimages) possono essere
ricompilati per win32. Usando pdftops patchato possiamo rendere inefficaci
le opzioni di sicurezza che ci impediscono di selezionare il testo.
^ Risultati di un testo di prova dove ho
usato pdftops patchato e ps2pdf
per riottenere un nuovo pdf ma con i permessi cambiati.
Originale Finale
*Dimensione 462 kB 2536 kB
*metodo protezione standard nessuno
*pw apertura no no
*pw protezione si no
*stampa consentito consentito
*modifica doc non consentito non consentito
*selezione testo e img non consentito consentito
*aggiunta o modifica
di note e campi modulo non consentito non consentito
Il postscript di passaggio risultava di circa 1248 kB.
Nel passaggio da pdf a ps si perdono alcune caratteristiche esclusive
del
pdf quali i bookmark del file, le note, i link.
Il fatto che la grandezza del pdf finale sia più che quintuplicata,
unito
al fatto che tentando di zipppare il pdf, riotteniamo all'incirca la
dimensione iniziale, mi ha fatto pensare a qualche metodo di compressione
che non è stato attuato nelle conversioni. Questa ipotesi è
corroborata dal
fatto che il Readme di xpdf parla dell'algoritmo di compressione LZW
(presente nei vecchi pdf) che è brevettato da Unisys Corporation
(si,
proprio la stessa che ha il brevetto
delle gif), la quale non rilascia la
licenza a prodotti distribuiti gratuitamente con sorgenti come xpdf.
Come
soluzione del problema xpdf non decomprime i dati compressi con LZW
ed
eventualmente presenti in un pdf, ma ne cambia prima il formato per
poi
decomprimerli.
Nei nuovi file pdf l'algoritmo LZW non è più usato e
come metodo di
compressione si usa il filtro FlateDecode, che è lo stesso di
gzip, il
quale non è sottoposto a brevetti e spesso raggiunge risultati
migliori del
vecchio LZW.
^ Stampiamo un file con l'opzione di sicurezza
sulla stampa ovvero
eliminiamo tale opzione (anzi tutte)
E' molto semplice: basta prendere GhostView
(interfaccia grafica di
GhostScript) che serve
a visualizzare, stampare, etc. file pdf e ps.
Una volta installato occorre sostituire il modulo di sicurezza con
quello
che trovate qua.
Ora potrete stampare il vostro file (questa procedura è valida
anche per
gli utilizzatori del porting di GS per Windows).
Ma voi, cari lettori, non vi saziate mai :-) e quella opzione di sicurezza
vi sta tanto antipatica da volere un nuovo file pdf ma con tutte le
opzioni
di sicurezza azzerate. Allora stampiamo ancora, ma questa volta su
file :-)
scegliendo in "Printer Setup" pdfwrite come device. Il risultato sarà
un
pdf senza alcuna opzione di sicurezza attiva ma non potrete fare estrazione
o ricerca del testo giacchè avete ottenuto il file per stampa
su file (se
proprio vi serve il testo potrete sempre estrarlo dall'originale con
GhostView|Edit|Text Excract). Infatti selezionando e copiando il testo
otteremo solo caratteri illegibili.
Abbiamo così anche scoperto un metodo di protezione ;-) contro
la selezione
(e copiatura) del testo, ma questa volta più efficace di una
semplice
opzione di sicurezza.
Kyler Laird mette a disposizione attraverso
un CGI un servizio che cambia ùin un PDF le opzioni di sicurezza.
Egli la definisce "un'utility per sbarazzarsi della assurda e
sciocca opzione che impedisce la stampa". E' la stessa utility di GS
modificata con modulo di sicurezza per PDF. Nel sito si afferma inoltre
che
essendo un'utility grezza manca la gestione degli errori, ma io non
ho
avuto modo di provarla perchè nel momento in cui scrivo queste
righe il
servizio ha temporanei problemi tecnici.
E' da notare che questa utility non cracca il pdf ma estrae i dati
stampabili in postscript per poter ricostruire il PDF. Quindi si cambiano
i
permessi e la password del proprietario data la user password. Si può
ottenere così un file identico al precedente che di diverso
ha solo i
permessi.
Diverso è invece il servizio della stessa Adobe per la conversione
da PDF
in altri formati (html, ascii). Per maggiori informazioni consultare
http://access.adobe.com Un altro servizio gratuito è http://www.babinszki.com/distiller/
che
trasforma postscript (anche più files zippati) in pdf. Anche
questo non
sono riuscito a provarlo per dei loro temporanei malfunzionamenti.
Di questi pdf, a patto che siano visualizzabili (quindi, senza user
password), nel corso di queste righe siamo riusciti a fare di tutto
(fondamentalmente stampare e copiare i contenuti dove non era possibile).
Spero che questo testo contribuisca ad eliminare la fiducia nella sicurezza
che qualcuno ripone in questo formato.