خب توی پست قبلی گفتم که چطوری یه فایل توی یه فایل دیگه مخفی کنیم و خب قابل دسترسی بود حالا بیایید همون کارو بکنیم ولی این سری اون دیتا رو با یه دیتا به ظاهر عادی ترکیب کنیم به اصطلاح: (Steganography) مثلا دیتا یه فایل txt رو با یه فایل gpj ترکیب کنیم.
خب کامپیوتر کلا تشکیل شده از صفر و یک هستش، و عکس ها هم ماتریکسی از صفر یک هستن. نمیخوام توضیح بدم که چندتا از اینا صفر و یک ها تشکل RGB میدن و اینا...، درکل ما یه ماتریکس عددی داریم.
این ماتریکسی که ما داریم یه ماتریکس n بعدی، که هر کدوم تشکل دهنده یه پیکسل و یه رنگی هست. حالا ما اگه یه بیت اینارو بالا پایین کنیم و تغییر بدیم فرق چندانی ایجاد نمیکنه.
ابزار steghide میاد اون دیتا رو تقسیم میکنه بین بقیه بیت های فایل اصلی و اونا رو نگه میداره که کجاست.
خب اول نصبش کنیم:
yay -S steghide
بعد نیاز به یه عکس داریم با یه فایل به جای فایل هرچی که دوست دارید میتونید امتحان کنید.
خب من یه فایل درست کردم به اسم secret.txt:
vim secret.txt
و داخلش نوشتم none is here.
خب از روی عکس یه کپی گرفتم که قبل و بعد تغییرات متوجه بشیم.
حالا فقط کافیه که توی ترمینال بنویسم:
steghide embed -cf test-steganography.jpg -ef secret.txt
و بعدش از ما یه رمز میخواد و رمز رو وارد میکنیم.
حالا ما یه عکس داریم که فایل secret.txt توش مخفی شده.
عکس اصلی: (میتونید از نوار بالا از روی اسمشون تشخیص بدید که کدوم فایل هستش)
و عکسی که فایل secret.txt درش مخفی شده:
جالب بدونید بعدش برام سوال شد آیا سایز test-steganography.jpg تغییر میکنه؟!
پس یه
ls -l
گرفتم که ببینم چه خبره!
خب همنطوری که معلوم عکس اصلی هیچ فرقی از لحاظ ظاهری و حجمی با عکس دومی نداره و تصمیم گرفتم حجم فایل secret.txt بیشتر کنم و دوباره امتحان کنم.
فایل ها رو با دستور:
steghide extract -sf test-steganography.jpg
از هم بازشون کردم و تعداد خط های فایل secret.txt بیشتر کردم و سایزش شد ۱.۳m و خب دوباره امتحان کردم.
و خیلی خیلی جالب و باحال سایز test-steganography.jpg باز همون قدر که اول بود به همون صورت مونده و هیچ تغییری با قبلش نکرد!!!