Vincenzo Vincenzo

De-watermark il mio libro #1

Pubblicato il
Topic:

In questa serie di post condivido i passaggi necessari per rimuovere testi e immagini DRM e watermark da un libro PDF che ho acquistato, in modo da avere una copia stampabile e meglio leggibile.

Setup

  • OS1: Debian (su WSL 2)
  • Librerie:
    sudo apt update
    sudo apt-get install xpdf qpdf mupdf-tools
    
  • OS2: Windows 10
  • Software: Foxit Phantom PDF 10.0.0.35798

Walkthrough

01 Ancora nessuna manipolazione delle pagine.

02 Il PDF dispone di un blocco password che impedisce le principali funzionalità di editing.

I watermark che possiamo individuare sono presenti in tutte le pagine: un’immagine centrale e un testo sottostante. Il libro è protetto da una password, il che ci impedisce, tra le altre cose, di stamparlo e modificare oggetti grafici. Un possibile approccio sblocca il PDF e richiede la modifica manuale di ogni watermark in tutte le pagine. Lo escludiamo.

Piuttosto, “corrompo” il PDF sostituendo tutti i riferimenti al watermark immagine con dei riferimenti fittizi.

Preparazione

qpdf --decrypt --stream-data=uncompress input-protected.pdf uncompressed.pdf

Rottura riferimenti watermark immagine

pdfimages -list uncompressed.pdf

La lista delle immagini è presentata di seguito: come possiamo vedere nella colonna object, l’immagine 522x144 (object 11) è presente in ciascuna delle 4 pagine.

page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image     522   144  sep     1   8  jpeg   no        11  0   196    31 8066B  11%
   1     1 image     179   266  index   1   8  image  no         9  0   101   101 46.5K 100%
   1     2 image     298   250  index   1   8  image  no        10  0   101   101 72.8K 100%
   2     3 image     522   144  sep     1   8  jpeg   no        11  0   196    31 8066B  11%
   3     4 image     522   144  sep     1   8  jpeg   no        11  0   196    31 8066B  11%
   3     5 image     376   554  index   1   8  image  no        67  0   101   101  203K 100%
   4     6 image     522   144  sep     1   8  jpeg   no        11  0   196    31 8066B  11%

Entrando più nel dettaglio:

mutool show uncompressed.pdf grep > mutool-show.txt

...
11 0 obj <</BitsPerComponent 8/ColorSpace 8 0 R/Filter/DCTDecode/Height 144/Length 8066/Subtype/Image/Type/XObject/Width 522>> stream
...

Rottura riferimenti all’immagine

Dobbiamo assicurarci che l’oggetto che sostituirà il n. 11 deve avere stessa lunghezza:

sed <uncompressed.pdf >filtered.pdf -e "s/11 0 obj/99 0 obj/g"

Repack

qpdf filtered.pdf output1.pdf
mutool clean -g -g -g output1.pdf output2.pdf
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output3.pdf output2.pdf

03 Risultato finale.

Gestione errore error: Unable to find trailer dictionary while recovering damaged file: guida.