"بصوا كدة على الصورة اللي تحت ده .. الصورة دي شكلها طبيعي صح؟ مجرد صورة لـميم المشهور وهو جيفري بولين.. طيب، جوه الصورة دي أنا مخبي رسالة سرية. إنت مش قادر تشوفها، عينك مش هتقدر تكتشفها، وحتى الكمبيوتر بتاعك مش هيعرف. الملف النصي ده كمان نفس الشيء، فيه رسالة مستخبية جوه الملف ده بس إنت حتى مش قادر تشوفها.
ده بقا اسمه 'ستيجانوجرافي' (steganography). والنهارده هوريكم بالظبط الموضوع ده بيشتغل إزاي وإزاي تقدروا تخبوا رسايل سرية في البيانات. الموضوع هو ممارسة إخفاء رسايل مستخبية في حاجات باينة إنها مش مخبية أي حاجة أصلاً. فبدل ما تشفر رسالة وتخلي الموضوع باين جداً إنك بتحاول تخبي حاجة بإنك تشفرها، إنت فعلاً تقدر تعمل ترميز (encode) لرسالة جوه مثلاً صورة، ملف صوت، ملف نصي، فيديو.. وتقدر تعمل ترميز للرسالة السرية جوه البيانات نفسها. ووقتها مش هيبقى باين إنك بتحاول تقول لحد سر، لأنك مش مشفرها، إنت 'مرمزها' جوه حاجة تانية.
طب ده بيشتغل إزاي؟ كل صورة زي ما أنتم عارفين بتتكون من بكسلات، وكل بكسل من دول فيه معلومات ألوان، ومعلومات الألوان دي متخزنة كـ 'باينري' (binary) اللي هو لو تعرفوا عبارة عن أصفار وحايد بس. فمثلاً، لو عندك بكسل الباينري بتاعه 10101010، تقدر فعلاً تقلب آخر 'بت' (bit) وتخليها 1، وساعتها ده بيغير الهيكل الباينري للبكسل. التغيير الصغير ده مستحيل يتلاحظ بالعين، بس لو عملت كدة آلاف المرات في الصورة كلها بإنك تقلب البتات، تقدر تخبي رسالة كاملة جوه صورة.
وعشان نطبق ده عملي، هنستخدم أداة اسمها 'ستيج-هايد' (steghide). ففي المرة دي، إحنا هندمج ملف جوه صورة. أنا كتبت الملف النصي (اللي هو اسمه hidden ) السري ده 'hello i am sparrow' (دي رسالة مستخبية)، وهنخبيها في صورة الميم بتاعتنا. الأمر اللي هنكتبه هو:
steghide embed -ef hidden -cf 19.jpg
دلوقتي بيقولي دخلي الباسوورد، هنكتب 'sparrow'. وكدة هو دمج الرسالة السرية بتاعتنا جوه صورة اللينكس. فدلوقتي رسالتنا بقت مشفرة جوه الصورة دي، لأنه طلب باسوورد. ولو كنت عملت باسوورد معقد فعلاً غير 'sparrow'، كان هيضيف طبقة حماية إضافية لأي حد يفك ترميز الرسالة السرية اللي جوه الصورة. لو دوسنا على صورة الميم، مش هتشوف أي فرق، هي هي نفس الصورة، وفيها بس رسالة سرية جواها إنت مش عارفها.
كمان لو حبيت تتاكد وتعرف هل فيه اي حاجة مخفية في الصورة ولا لا هنستخدم الامر ده :
steghide info 19.jpg
ولو عاوزين نستخرج الرسالة السرية من جوه الصورة، هتستخدم بس أمر (extract).
وعشان نكون أذكياء أكتر، إيه لو خبينا رسالة في ملف نصي عادي؟ لا صور، ولا تلاعب بالباينري، مجرد مساحات فاضية (whitespace)! وهنا بيجي دور 'ستيج-سنو' (Steg Snow). الأداة دي بتخبي الرسايل المستخبية في الملفات باستخدام المسافات اللي في الآخر والـ 'تابس' (tabs) والمساحات الفاضية غير المرئية. لو بصينا على صفحات الشرح (man pages) بتاعة Steg Snow، بتقول إن البيانات بتستخبى في الملف النصي عن طريق إضافة تسلسلات بتوصل لـ 7 مسافات مع تداخل 'تابس'. ده عادة بيسمح بتخزين 3 بتات لكل 8 أعمدة.
دلوقتي عندنا الملف النصي اللي هندمج فيه ملف نصي سري تاني. عشان ندمج الملف السري في الملف الأصلي، هنشغل الأمر
لو عملنا 'cat' لـ hhh زي ما أنتم شايفين، هو أضاف 6 سطور.
ولو حبينا ان احنا نستخرج الملف المخفي من الملف النصي هنكتب :
فكروا كدة في اللي عملناه لثانية.. إحنا خبينا بيانات في البكسلات وفي المساحات الفاضية. وسيلتين مختلفتين تماماً بس نفس المفهوم. الـ 'ستيجانوجرافي' هو عبارة عن إخفاء بيانات جوه 'الضجيج' (noise)، والملفات الرقمية مليانة ضجيج. بتات البكسلات، عينات الصوت، المساحات الفاضية، حشو هيكل الملفات.. في أي مكان فيه هيكل رقمي، فيه فرصة إنك تخبي بيانات.
الـ 'ستيجانوجرافي' قوي جداً لأنه بيبعد الشك. لو شفرت رسالة، ده بيبين إن عندك حاجة تخبيها لأن الرسالة مشفرة. هي ببساطة بتصرخ وبتقول 'فيه بيانات مهمة جوه الملف المشفر ده'. لكن صورة عادية، محدش بيفكر فيها مرتين، وإنت عندك رسالة مستخبية جوه الصورة. الـ 'ستيجانوجرافي' مش هدفه يخلي البيانات غير قابلة للقراءة، هدفه يخليها غير مرئية، وده جمال الموضوع.
دي كانت نظرة عامة عن الـ 'ستيجانوجرافي'، أتمنى تكونوا استفدتوا. تأكدوا إنكم تعملوا لايك وتشتركوا وتدوسوا على كل الزراير، وأشوفكم المرة الجاية."
