C#-SQL Server-Arduino C# Steganografi Yöntemi Kullanılarak Piksel İçerisine Yazı Gizleme By Konuk Yazar Posted on 17 Ağustos 2017 8 min read 1 0 3,598 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhabalar. Başlıktan anlaşılacağı üzere bu yazı içerisinde veri saklama yöntemlerinden biri olan Steganografi tekniği nedir ne değildir bunlar hakkında birkaç bilgi verip, C# ile yazılmış bir programı kodlarıyla birlikte paylaşacağım. En basit şekilde fazla anlaşılmayan ifadelerden uzak bir anlatımla içeriği sunmaya çalışacağım.* Steganografi Nedir? Eski Yunancada “gizlenmiş yazı” anlamına gelir ve bilgiyi gizleme bilimine verilen isimdir. Kriptoloji ile arasında bir fark bulunur, kriptolojide saklanan veri fark edilebilirken Steganografide böyle bir durum söz konusu değildir. Steganografide saklanacak bilgi kamufle edilmiş bir biçimde gizlenir. Kriptolojide siz bir veriyi sakladığınızda bu genellikle dikkat çekici olmaktadır. Bu sebepledir ki veri tam olarak gizlenmiş sayılmaz, bir şekilde şifrelenen veri çözülür. Lakin artı olarak verinin çözülmesi Steganografiye göre daha zordur. Steganografide fark edilen gizlenmiş veri kolaylıkla ortaya çıkarılabilir. Eski zamanlardan bir iki örnek; Herodot’un bir hikâyesine göre Pers saldırısının öncesinde saçları tıraşlanan bir kölenin kafasına yazılan uyarı mesajı, saçlarının uzaması sayesinde saklanmıştır. Bu sayede, mesaj dikkat çekmeden gerekli yere ulaşabilmiş, ulaştığında da kölenin saçları tekrar kesilerek uyarı okunabilmiştir Eski Yunanistan’da, insanlar mesajları tahtaya yazıp üzerini mumla kaplarlardı. Böylece cisim kullanılmamış bir tablete benzerdi öte yandan mumun eritilmesiyle birlikte içindeki gizli mesaj okunabilirdi. (Yukarıda ki Ağaç resmine gizlenmiş kedi resmi)1 Fark edildiği üzere çözülen kedi resminde bozulmalar meydana gelmiş… Nerelerde Kullanılır Bu Steganorafi? Veriler Nerede Saklanır? Bu teknik, bir resim içerisine (bizim yöntemimiz), ses dosyası içerisine veya bir video içerisine veri saklamamızı sağlamaktadır. Bu veri yazı olabilir, resim olabilir. Evet, bir resim içerisinde başka bir resim saklayabilirsiniz. Ben buna Resimception ya da Fotoception diyorum. Program Nasıl İşliyor Kodlar Ne Anlatmak İstiyor? Evet, ilk önemli kısmımıza geldik. Öncelikle programın nasıl çalıştığını anlatayım. Daha doğrusu göstereyim. Videoda sesli anlatıma gerek duymadım. Video; https://www.youtube.com/watch?v=SNyCsgP3TUU&feature=youtu.be Kod Kısmı İkinci önemli hatta en önemli kısmımız kodlar nasıl işliyor kısmı. Steganografide birkaç yöntem bulunur. Bu projede LSB yani en önemsiz bite ekleme yöntemi kullanıldı. LSB Yöntemi Nedir? İkilik sistemi ondalık sisteme çevirmeyi biliyoruzdur. (101)2 binary ifadesi sağdan başlayarak 1*20 + 0*21 + 1*22 olarak yazılır ve işleme tabi tutulur. Buda ondalık olarak 5 rakamını verir. Şimdi, LSB yani en anlamsız bit 1’e veya 1’den 0’a çevrildiğinde üzerinde belirgin bir değişiklik meydana gelmeyecek olan bittir. En solda ki bit 100 yerine 101 değerini alarak değişim yaşar buda gözümüzle pek fark edemeyeceğimiz bir değişikliktir. Piksel işlediğimiz için bu bitleri tabi ki piksellerde bulacağız. RGB 0 – 255 arası değer alır malumumuz. Şimdi, görüntünün 300 x 400 boyutunda olduğunu düşünelim. O zaman 300 * 400 * 3 = 360000 LSB buluruz. Ve her karakter 8 bit ile temsil edildiğinden 360000/8 = 45000 karakteri resime gizleyebiliriz. Adım Adım İşleme Pikseller alınır. R, G ve B’nin her bir değeri için LSB sıfıra eşitlenir. Bu alınan bitler karakterleri gizlemek için kullanılacaktır. Her karakter tek tek işleneceği için ele alınan karakter tam sayıya çevrilir. 8 bit işleneceği (her karakter 8 bit ile temsil edilir) için R1, G1, B1 biçiminde bitler ardışık olarak gizlenir. 8 bit işlendiğinde bir sonraki karaktere geçilir ve tüm işlem bitene kadar bu böyle devam eder. Metin kısa olabilir. Buda resmin sadece küçük bir bölümüne işlenmesi demektir. Bu durumda çözüldüğünde problem yaşamamak için 8 ardışık sıfır metnin sonuna ulaşılınca konulur. Çıkarma Karakteri gizleme işleminden daha basittir. 8 ardışık sıfır bulunana kadar pikseller alınır. Yine sürekli bahsettiğimiz LSB bitleri bulunur. Bu karakterler bitene kadar devam eder ve çıktı verecek olan sonuç metnine aktarılır. Bunlara ek olarak kodların yanında açıklamalar verildi… Proje içerisinde kod yanlarında açıklamalar bulunmaktadır. Projeyi bu linkten indirebilirsiniz. http://www44.zippyshare.com/v/DENf4IOC/file.html Ömer KOCAMAN