Come posso aggiungere filigrana invisibile alle immagini dalla riga di comando?


12

Domanda simile qui ma per Tex -document. Imagemagick mostra i modi di filigrana qui, ma non come farlo il più invisibile possibile. Al momento ho appena offuscato alcuni elementi funzionali in foto così estremamente difficili da rimuovere, senza distorcere l'immagine stessa. Esiste uno strumento da riga di comando per aggiungere filigrana invisibile alle immagini, qualcosa di simile al microscopio forse ma ancora leggibile? Ho un enorme albero di immagini (di varietà molto diverse, quindi la filigrana dovrebbe adottare per l'ambiente, ecc.) - Qualche strumento da riga di comando per aggiungere filigrane velocemente invisibilmente su ogni foto?


2
Penso che il tuo requisito di invisibilità sia in contrasto con lo scopo della filigrana. Se la filigrana è invisibile a un normale visualizzatore, probabilmente può essere rimossa facendo un paio di conversioni JPEG sull'immagine, dal momento che, in base alla progettazione, JPEG leviga i dettagli che le persone non mancheranno.
Kyle Jones,

@KyleJones: chi ha richiesto JPEG come formato? Imagemagick contiene solo esempi, il mio obiettivo è quello di offuscare le filigrane nelle immagini nascondendole un po 'come cambiare un punto in Tex.

2
Il mio punto è che la conversione JPEG o qualsiasi altro algoritmo di compressione delle immagini con perdita di dati sarebbe in grado di rimuovere tale filigrana, non che l'immagine debba necessariamente iniziare come JPEG.
Kyle Jones,

Il commento che questo non ha scopo è sbagliato e fuorviato. Certo, "filigrana invisibile" è un ossimoro, ma è una scorciatoia utile per il "messaggio steganografico" astruso - che quasi sempre verrà corretto automaticamente in "stenografico" (cioè, letteralmente, stenografia). Ecco uno sfondo sui casi d'uso: lia.deis.unibo.it/Courses/RetiDiCalcolatori/Progetti98/Fortini/… e un'implementazione esemplificativa: howtoforge.com/tutorial/…
michael

Risposte:


9

Credo che quello che stai cercando sia la steganografia , un modo per nascondere un messaggio in contenuti dall'aspetto innocente.

Non sembra esserci una grande quantità di strumenti là fuori per questo su Linux, ma outguess 1 e steghide 2 farebbero quello che vuoi. openstego è un altro (con un'interfaccia a riga di comando).

Esempio con outguess, ho copiato / incollato il testo della tua domanda in Q.txt:

$ ../src/outguess/outguess -k 'Unix&Linux' -d Q.txt Tux.jpg Tux_steg.jpg
Reading Tux.jpg....
JPEG compression quality set to 75
Extracting usable bits:   10126 bits
Correctable message size: 5008 bits, 49.46%
Encoded 'Q.txt': 4592 bits, 574 bytes
Finding best embedding...
    0:  2274(49.2%)[49.5%], bias  2008(0.88), saved:     2, total: 22.46%
    3:  2269(49.1%)[49.4%], bias  2007(0.88), saved:     3, total: 22.41%
   13:  2268(49.0%)[49.4%], bias  1977(0.87), saved:     3, total: 22.40%
   62:  2237(48.4%)[48.7%], bias  1992(0.89), saved:     7, total: 22.09%
   78:  2216(47.9%)[48.3%], bias  1964(0.89), saved:    10, total: 21.88%
78, 4180: Embedding data: 4592 in 10126
Bits embedded: 4624, changed: 2216(47.9%)[48.3%], bias: 1964, tot: 10119, skip: 5495
Foiling statistics: corrections: 1437, failed: 746, offset: 198.494881 +- 300.529142
Total bits changed: 4180 (change 2216 + bias 1964)
Storing bitmap into data...
Writing Tux_steg.jpg....
$ ../src/outguess/outguess -k 'Unix&Linux' -r Tux_steg.jpg out.txt
Reading Tux_steg.jpg....
Extracting usable bits:   10126 bits
Steg retrieve: seed: 78, len: 574
$ diff out.txt Q.txt 
$ echo $?
0

Immagine di origine (da Tux.svg ):

JPG semplice, senza filigrana

Immagine con la tua domanda nascosta al suo interno:

file con informazioni nascoste

Le immagini sono diverse se guardi da vicino, ma è quasi come se la seconda fosse stata generata con un livello di compressione JPEG più alto. Il fatto che il testo completo della tua domanda sia mescolato (e protetto da password) non è affatto visibile visivamente.
Più piccolo è il messaggio nascosto, meno visivamente diverse saranno le immagini. (Non riesco a distinguere visivamente tra l'originale e un file con "Copyright YOU 2012" incorporato.)

1 vecchio, ma costruisce bene.
2 non viene compilato con un moderno compilatore C ++, sono necessarie alcune correzioni dei sorgenti.


OpenStego ha una CLI, ho modificato la tua risposta e collegata ad essa.
Awendt

0

Ci deve essere un modo per incorporare una filigrana abbastanza stabile nell'immagine, DigiMark lo fa ad esempio nei filtri di Photoshop - quindi perché uno strumento da riga di comando non dovrebbe essere in grado di fare altrettanto?

Questa non è una soluzione, ma un'idea di come potrebbe funzionare ... se si crea una filigrana invisibile su un'immagine bianca vuota e si fonde il codice risultante in qualsiasi altra immagine, il lettore di filigrane è in grado di estrarre il wartermark dall'immagine risultante di nuovo - anche se modificato / ritagliato o stampato e fotografato di nuovo.

Quindi effettivamente l'aggiunta in batch di un determinato codice di gradienti di filigrana non sarà il problema, piuttosto trovare un algoritmo di firma appropriato e un software per estrarre la filigrana.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.