إخفاء المعلومات العملية. إخفاء المعلومات في صور PNG





في مسابقات القراصنة وألعاب CTF (Capture The Flag) ، تظهر أحيانًا ألغاز إخفاء المعلومات: يتم إعطاؤك صورة تحتاج فيها إلى العثور على رسالة مخفية . ربما تكون أسهل طريقة لإخفاء النص في صورة PNG هي كتابته بإحدى قنوات الألوان أو في قناة ألفا (قناة الشفافية). لتحديد هذه "الإشارات المرجعية" ، توجد أدوات خاصة مثل stegsolve و pngcheck و stegdetect ، وفي بعض الأحيان يتعين على المتسابقين التلاعب يدويًا بالفلاتر في GIMP أو Photoshop.



ومع ذلك ، فإن التقدم لا يزال قائما - وفي الآونة الأخيرة يتم استخدام طرق أخرى لإخفاء البيانات بشكل متزايد ، على سبيل المثال ، ملء PNG. دعونا نرى كيف يتم ذلك.



لنبدأ بمقدمة نظرية صغيرة للأجزاء "غير المرئية" من PNG.



قناة ألفا



عند عرض صورة على شاشة الكمبيوتر ، يتم إنشاء الألوان من خلال الجمع بين مكونات الأحمر والأخضر والأزرق. تسمى مستويات الألوان الثلاثة هذه القنوات. عادة ما يتم كتابتها كـ RGB.



بالإضافة إلى هذه القنوات الثلاث ، يمكن أن تحتوي PNG على قناة رابعة تسمى alpha (يُشار إليها بالحرف A) لتحديد مستوى الشفافية. تحدد صورة RGBA الناتجة الألوان المرئية ودرجة الشفافية.



في معظم تنسيقات الرسوم ، تكون قيمة قناة ألفا من 0٪ إلى 100٪ (أو من 0 إلى 255 بالبايت). تشير القيمة 0٪ (أسود) إلى المكان في الصورة حيث يجب أن تكون الشفافية الكاملة - هنا يتم تجاهل قيمة RGB ، وتكون الخلفية الموجودة أسفل الصورة مرئية بالكامل. تعني قيمة ألفا بنسبة 100٪ (أبيض) أن قنوات RGB معتمة تمامًا. تحدد القيم الوسيطة مقدار مزج الخلفية مع قيمة RGB بكسل. تُستخدم قيم تدرج ألفا





PNG



عادةً لمزج صورة مع صورة أو صفحة ويب أخرى. تتوفر تدرجات ألفا بتنسيقات PNG و WebP و ICO و ICN وتنسيقات نقطية أخرى. يدعم تنسيق GIF منطقيًا فقط (يكون البكسل شفافًا أم لا).



تعد قناة ألفا أحد الخيارات لوضع نص مخفي. دعنا ننتقل إلى حشوة PNG لكتابة البيانات مباشرة إلى ملف ثنائي.



محتوى PNG حسب الأعمدة



تنسيق PNG بسيط للغاية . يبدأ كل ملف بتوقيع قياسي من ثمانية بايت ، وهنا القيم العشرية 137 80 78 71 13 10 26 10. يتم تحديد البايت الأول خارج ASCII بحيث لا يخطئ أي محرر عن طريق الخطأ في الصورة لملف نصي. تتوافق البايتات الثلاثة التالية مع الأحرف P و N و G. ثم فاصل سطر DOS (13 10) ، وعلامة نهاية الملف DOS (26) لمنع برنامج الكتابة من طباعة كل القمامة الثنائية ، وعلامة سطر جديد لـ Unix.



بعد الترويسة ، تبدأ كتل البيانات (الأجزاء) ذات الهيكل القياسي. تأتي أولاً كتلة IHDR التي تشير إلى عرض الصورة وارتفاعها ، ومساحة اللون ، وعدد البتات لكل بكسل ، وطريقة الضغط ، وطريقة التصفية ، ووجود / عدم وجود تشفير متشابك. يتم تخصيص أربعة بايت للعرض والارتفاع ، بايت واحد للمعلمات الأخرى.



يتبع ذلك كتلة نص اختيارية بها بيانات تعريف نصية ، مثل اسم البرنامج الذي أنشأ ملف PNG. يمكنك كتابة معلومات نص عادي في كتل نصية.



يتبع IHDR و tEXt كتل IDAT بقيم RGB أو RGBA مضغوطة لوحدات البكسل النقطية. عند تقديم PNGs ، تتم معالجتها بواسطة IHDR ، يتم تخصيص مخزن مؤقت في الذاكرة للصورة ، ويتم استخراج البيانات من التنسيق المضغوط وكتابتها إلى بكسل المخزن المؤقت بالبكسل. ينتهي ملف PNG بكتلة IEND.



في نهاية كل كتلة يوجد مجموع تدقيق CRC لتلك الكتلة ، والذي يتم حسابه باستخدام الخوارزمية القياسية .



تحتوي صور PNG عادةً على 8 أو 16 بت من المعلومات لكل قناة RGB أو RGBA ، أي يتم إخراج ثلاثة إلى ثمانية بايت لكل بكسل. في هذا التنسيق ، يتم شغل جميع البايتات بمعلومات مفيدة حول اللون والشفافية ، بحيث لا يوجد مكان لكتابة بيانات عشوائية في نهاية كل سطر من الصورة الرسومية.



ولكن بالنسبة لمهام إخفاء المعلومات ، عليك أن تعرف أن PNG يدعم أيضًا عمق ألوان أقل: 1 بت (لونان) ، و 2 بت (4 ألوان) ، و 4 بت (16 لونًا). في مثل هذه الحالة ، يتضح أن المعلومات حول عدة بكسلات مخزنة في بايت واحد. هذا هو المكان الذي تظهر فيه الإمكانية النظرية للتعبئة "الأفقية" لملفات PNG ببيانات خارجية. إذا كان عرض الصورة بالبكسل ليس من مضاعفات ثمانية ، فإن البايت الأخير من السطر يحتوي على وحدات بت غير مستخدمة ، والتي تشكل معًا "عمودًا من وحدات البكسل" غير المستخدمة.



في حالة الصورة ذات 1 بت ، قد تبقى 7 بتات حرة في نهاية كل سطر ، والتي لن تتم معالجتها بواسطة المحلل اللغوي. في حالة الصورة ذات 2 بت ، يوجد ما يصل إلى 3 بتات مجانية في البايت الأخير. أداة FotoForensics على الإنترنتيعثر على "أعمدة البكسل" غير المستخدمة في صور PNG .



ومع ذلك ، فإن صور PNG ذات عمق الألوان الضحل نادرة جدًا ، لذلك يمكن اعتبار طريقة إخفاء المعلومات هذه غريبة. إذا صادفت صورة PNG ذات لونين أو 4 أو 16 لونًا ، فإن هذه الحقيقة وحدها تثير الشك ويمكن أن تبدأ في فحص محتوى PNG بواسطة الأعمدة.



هناك مسألة مختلفة تمامًا وهي ملء PNG خارج حدود الصورة. هذه طريقة أبسط لإخفاء المعلومات تسمح لك بإخفاء المزيد من المعلومات في الصورة.



PNG -املأ ما وراء حدود الصورة



غالبًا ما يتم استخدام حشوة بعد البكسل PNG في العديد من الألعاب والألغاز والمسابقات ، وليس فقط القرصنة. هذه هي الطريقة التي تعمل بها هذه الطريقة:



  1. التقط صورة PNG (مع أي عمق لوني).





  2. .





  3. PNG, .

  4. hex-.

  5. IHDR. IHDR.





  6. IHDR — , — . c 00 00 01 9D (413 ), , 00 00 01 7E (382 ).





  7. CRC ( PNG CRC , IHDR), . CRC , PNG- IHDR.



    .





يرجى ملاحظة أن البيانات السرية بقيت في أسفل الصورة. لم يتغير حجم الملف: 335906 بايت. الأمر فقط هو أن المحلل اللغوي لا يعالج هذه البكسلات الآن - ولا يظهر الجزء السفلي من الصورة على الشاشة.



من السهل تخمين أنه في الجزء "السري" من الصورة ، لا يمكنك إخفاء نقش نصي فحسب ، بل يمكنك أيضًا إخفاء بيانات عشوائية. على سبيل المثال ، يمكننا كتابة أرشيف RAR محمي بكلمة مرور هناك. يمكن نشر صورة الرسالة السرية على Habrastorage أو أي استضافة مشتركة أخرى. لن يتم استلام الرسالة إلا من قبل الشخص الذي وافقت معه مسبقًا على طريقة إرسال المعلومات ووافقت على كلمة مرور. بهذه الطريقة ، يمكن للبرامج الضارة نقل الحمولة من خلال Habr وخدمات الاستضافة العامة الأخرى.






إعلان



VDS لمواقع الاستضافة تدور حول ملحمتنا ! جميع الخوادم "خارج الصندوق" محمية من هجمات DDoS ، التثبيت التلقائي للوحة تحكم VestaCP المريحة. من الأفضل أن تجربها مرة واحدة ؛)






All Articles