oregon ha scritto:
migliorabile ha scritto:
Le tecniche stenografice
Steganografiche ... la stenografia era un'altra cosa ...
Che bischero che sono!
@Pittuzzo, la domanda che mi pongo io e':
ma tu hai capito bene come funziona la steGAnografia?
Perche', se vai vedere che cosa dice il tool OpenPuff, di cui hai dato il link, relativamente ai vari formati:
audio: non compressi
video: quelli basati sulla compressione JPEG e modificando le DCT (le matrici 16x16 generate DOPO la compressione e usate NELLA decompressione), e DCT sta' per
Discrete Cosine Transform cioe' una variante della trasformata di Fourier! Aggeggio usato per lavorare con immagini, audio e video nel dominio delle frequenze!
Xuggler e' una banale libreria di decompressione/compressione per formati audio e video.
Il problema, che forse stai sottovalutando, e' il seguente:
1) hai il video
2) lo decomprimi
3) ha i singoli fotogrammi
4) modifichi i fotogrammi sulla base dei pixel
5)
li comprimi con un algoritmo a perdita di informazione (lossy)
6) hai il video modificato
E al punto 5, il tuo lavoro va a farsi benedire!
Ora: il tuo approccio funziona
SOLO se usi una compressione
senza perdita di informazione (lossless).
Ripropongo la domanda:
su che libro di testo stai studiando?
Per quanto riguarda il tuo metodo
public void setBit(long frame,int x,int y,boolean bitValue), l'implementazione e' banale:
1) ricuperi il frame (l'esempio lo trovi qui
https://github.com/artclarke/xuggle-xuggler/blob/master/src/com/xuggle/xuggler/demos/DecodeAndCaptureFrames.java)
2) se
w e' la larghezza del frame ed ogni pixel e' un byte, e
buffer e' il bytearray contenente
UN CANALE del frame:
buffer[w*y+x] &= ~0x01; // pone a 0 il LSB
buffer[w*y+x] |= bitValue ? 0x01 : 0x00; // assegna 0 o 1 al LSB in base a bitValue
Semplice semplice.