2008-09-08 14 views
20

Quindi, per semplificare la mia vita, voglio essere in grado di aggiungere da 1 a 7 caratteri addizionali alla fine di alcune immagini jpg che il mio programma sta elaborando *. Si tratta di padding fittizio (filler, ecc., Probabilmente tutto 0x00) solo per rendere la dimensione del file un multiplo di 8 byte per la crittografia a blocchi.I dati casuali aggiunti a un JPG renderanno inutilizzabile?

Dopo aver provato questo con alcuni programmi, sembra che stiano bene con i caratteri aggiuntivi, che si verificano dopo il FF D9 that specifies the end of the image - quindi sembra che il formato del file è ben definito abbastanza che la 'corruzione' sto aggiungendo a la fine non dovrebbe avere importanza.

Posso sempre postare i file in un secondo momento, se necessario, ma la mia preferenza è fare la cosa più semplice possibile - che è lasciarli rimanere (sto decrittando altri tipi di file e non gli dispiacerà, quindi avere un caso speciale è fastidioso).

immagino che con tutto il parlare di Steganography anni hullaballo fa, qualcuno ha qualche input qui ...

(il processo di codifica da 8 blocchi di byte, non voglio salvare la dimensione del file pre-criptato, in modo da aggiungere 0x00 all'input dei dati e lasciarli lì dopo la decodifica)

risposta

20

No, è possibile aggiungere bit alla fine di un file jpg, senza renderlo inutilizzabile. L'intestazione del file jpg indica come leggerlo, quindi il programma che lo legge si fermerà alla fine dei dati jpg.

Infatti, le persone hanno nascosto i file zip all'interno dei file jpg aggiungendo i dati zip alla fine dei dati jpg. A causa del modo in cui questi formati sono strutturati, il file risultante è valido in entrambi i formati.

+0

inutilizzabile (che era la domanda) non è lo stesso di ridurne l'usabilità. Un po 'di nickpick, lo garantisco. Ma, una distinzione importante perché potrebbe essere una soluzione praticabile. –

+0

Ok, non sono sicuro che dire "senza ridurne l'usabilità" potrebbe significare "renderlo inutilizzabile", ma lo modificherò solo per renderlo più chiaro. – pkaeding

+0

Heh heh heh. Noi programmatori possiamo dividere un capello in modo così preciso ... –

7

È possibile .. ma i risultati possono essere imprevedibili.

Anche se nel formato sono disponibili informazioni sufficienti a comunicare al client di ignorare i dati aggiuntivi, è probabile che non si tratti di un test per il programmatore.

Un programma paranoico potrebbe osservare le dimensioni, notare la discrepanza e decidere che non elaborerà il file perché chiaramente non lo capisce completamente. Ciò è particolarmente probabile quando si leggono dati dal web quando i byte casuali in un file possono essere considerati un rischio per la sicurezza.

3

È possibile incorporare i dati nel tag XMP all'interno di un campo JPEG (o EXIF ​​o IPTC). XMP è XML, quindi hai un bel po 'di flessibilità per fare le tue cose personalizzate.

Probabilmente non è la cosa più semplice possibile ma mettere qui i tuoi dati manterrà l'integrità del JPEG e non richiede alcuna "post elaborazione".

I dati verranno quindi visualizzati in altri software di imaging come PhotoShop, che potrebbe non essere l'ideale.

1

Come altri hanno affermato, non si ha il controllo su come i programmi elaborano i file di immagine e quindi alcuni programmi potrebbero trovare le immagini valide per altre no.

Tuttavia, c'è un problema più grande qui. A giudicare dalla tua domanda, sto deducendo che stai praticando "la sicurezza attraverso l'oscurità". È ampiamente considerata una pessima pratica. Usa Google per trovare una miriade di articoli sull'argomento.

+3

Cosa indica questo? Sto utilizzando l'algoritmo TEA per crittografare i dati, ma crittografa 8 byte alla volta. Piuttosto che includere i metadati all'interno del file crittografato per dirmi quanto fossero grandi i dati originali, sto sostituendo l'originale con un limite di 8 byte e lasciando il padding in posizione. –

Problemi correlati