geri

Steganografi

02/05/2004

elimizde her bir karakteri 1 bayt ile ifade edilen n karakterlik bir yazı olduğunu kabul edelim. bu yazıyı bir resmin içerisine saklamak istiyoruz. bu durumda gözün renklerde meydana gelecek küçük değişimleri fark edememesinden faydalanabiliriz. elimizdeki resimde her bir baytın en anlamsız bitinde yapacağımız değişikliği insan gözü fark edemeyecektir. başka bir deyişle resimdeki her bir baytın içine 1 bitlik bilgi saklayabiliriz. bu durumda elimizdeki 1 baytı (1 bayt = 8 bit) resimdeki 8 baytın içine bit bit yerleştirmeliyiz. buradan da anlaşıldığı gibi n baytlık bir yazıyı en az 8*n baytlık bir resme yerleştirebiliriz. diğer türlü ifade edersek m baytlık bir resmin içine ║m/8║ karakter (1 karakter = 1 bayt) saklayabiliriz. bu işlemi gerçekleştiren algoritma aşağıda verilmiştir.

  1. i = 0
  2. p = 0
  3. i = n ise dur
  4. j = 7
  5. resme yerleştirilecek yazıdan i.baytı oku
  6. okunan baytı j bit sağa kaydır
  7. 0x01 ile andle
  8. sonuç 0x01 ise resmin p. baytını 0x01 ile orla
  9. aksi halde resmin p.baytını 0xfe ile andle
  10. p = p+1
  11. j = j-1
  12. j = -1 ise i = i+1, 3'e git
  13. 5'e git

bu algoritmayı gerçekleyen c kodu ise şu şekildedir:

 1 p = 0;
 2 for(i=0; i<n; ++i)
 3 {
 4   for(j=7; j>=0; --j)
 5   {
 6     oku = yazi[i];
 7     oku >>= j;
 8     oku &= 0x01;
 9     if(oku == 0x01)
10       resim[p] |= 0x01;
11     else
12       resim[p] &= 0xfe;
13     p++;
14   }
15 }

resme gizlenmiş yazıyı okumak için gerekli algoritma ise şu şekildedir:


  1. i = 0
  2. p = 0
  3. i = n ise dur
  4. yazının i.karakterini 0'a setle
  5. j = 7
  6. resimden p.baytı oku
  7. 0x01 ile andle
  8. j bit sola kaydır
  9. yazının i.karakterini bu sonuçla orla
  10. p = p+1
  11. j = j -1
  12. j = -1 ise i = i+1 , 3'e git,
  13. 6’ya git

bu algoritmayı gerçekleyen c kodu ise şu şekildedir:

 1 p = 0;
 2 for(i=0; i<n; ++i)
 3 {
 4   yazi[i] = 0;
 5   for(j=7; j>=0; --j)
 6   {
 7     oku = resim[p];
 8     oku &= 0x01;
 9     oku <<= j;
10     yazi[i] |= oku;
11     p++;
12   }
13 }

Follow me on Twitter

yorumlar Disqus aracılığıyla sunulmaktadır