
تطبيق إخفاء المعلومات متعدد المنصات مع واجهة مستخدم رسومية وواجهة سطر أوامر وخدمة ويب، يدعم WEBP وAES.
باختصار، إخفاء المعلومات هو فن إخفاء الرسائل في وسيط آخر على مرأى من الجميع دون أن يدرك الناس ذلك. هذا التنفيذ يقرأ الصور بتنسيقات الويب الشائعة (WEBP, PNG, GIF, JPEG)، ويخفي النص (المشفّر اختياريًا) فيها ويحفظ النتيجة كصورة WEBP. يمكنك بعد ذلك رفع هذه الصورة الجديدة إلى أي موقع عام، منتدى، إنستغرام، دردشة فيسبوك، إرفاقها بالبريد الإلكتروني، أيًا كان. لن يلاحظ أحد، ولن يعرف أحد أن هناك رسالة في الصورة إلا إذا أخبرتهم بذلك صراحةً (وإذا تم استخدام التشفير، فسيحتاجون أيضًا إلى كلمة المرور الصحيحة بالطبع).
اختر صورة إدخال (إما عبر رابط أو من ملف محلي)
أدخل كلمة المرور اختياريًا (إذا كنت تريد تشفيرًا عسكريًا إضافيًا)
3/أ. للتحقق من وجود رسالة في صورة، اضغط على تحميل. إذا لم تكن هناك رسالة أو كانت كلمة المرور خاطئة، فقد ترى نصًا غير مفهوم.
3/ب. اكتب رسالتك واضغط على حفظ. سيتم حفظ صورة جديدة (تحتوي على الرسالة المخفية بداخلها)، استخدم هذا الملف كما تشاء.
اذهب إلى الموقع.
حمّل لنظام لينكس (GTK) وويندوز (GDI). هذه ملفات تنفيذية محمولة، لا حاجة للتثبيت، ولا تترك أي أثر على جهازك. تبدو واجهة المستخدم وتعمل تمامًا مثل خدمة الويب.

حمّل لنظام لينكس وويندوز (كلاهما يعتمد على libc فقط). ثم اكتب
./stegano-cli <ملف الصورة>
./stegano-cli -p <كلمة المرور> <ملف الصورة>
لطباعة الرسالة في الصورة إلى الإخراج القياسي، و
./stegano-cli <ملف الصورة> <الرسالة>
./stegano-cli -p <كلمة المرور> <ملف الصورة> <الرسالة>
لتشفير رسالة في ملف صورة .webp جديد (قد يؤدي ذلك إلى استبدال الملف الأصلي). تمامًا كما في خدمة الويب، كلمة المرور اختيارية. على عكس إصدار واجهة المستخدم الرسومية أعلاه، فإن إصدار سطر الأوامر لا يحتوي على أي تبعيات على الإطلاق، فهو يعمل فقط(tm) في كل مكان.
قم بتشغيل make في المجلد src، فهو suckless.
يحتاج فقط إلى emcc و gcc من emscripten للتجميع (إصدار واجهة المستخدم الرسومية لنظام لينكس يحتاج أيضًا إلى pkg-config و GTK, GDK, pango, cairo,
إلخ. برامج GTK الزائدة المعتادة).
make wasm إذا كنت تريد فقط تجميع إصدار WebAssembly (ملف html الأساسي المطلوب موجود في المجلد public).make cli إذا كنت تريد فقط تجميع إصدار سطر الأوامر (بدون تبعيات تمامًا، يجب أن يعمل على أي نظام POSIX).make gui إذا كنت تريد فقط تجميع إصدار واجهة المستخدم الرسومية (لنظام ويندوز GDI، وإلا يعتمد على GTK).إذا قمت بتحديد كلمة مرور، فسيتم أولاً تشفير نصك. ثم يتم فك ضغط الصورة إلى مخزن بكسلات، حيث يتم تخزين بتات رسالتك (المشفّرة) في سطوع قنوات الألوان. ينتج عن ذلك أنماط موجية طفيفة جدًا في الصورة، وهي غير ملحوظة تمامًا بالعين البشرية المجردة (وفي غياب المقارنة بالصورة الأصلية، غير ملحوظة تمامًا لأجهزة الكمبيوتر أيضًا).
عند التحميل، يتم فك ضغط الصورة مرة أخرى إلى مخزن بكسلات، ويتم تحويل هذه الموجات السطوعية في قنوات الألوان إلى كتلة بتات متسلسلة. إذا تم إعطاء كلمة مرور، يتم فك تشفير كتلة البتات. يتم التحقق من صحة الترميز UTF-8 للرسالة النهائية، وإذا كانت صالحة، يتم عرضها. (هذا الفحص UTF-8 ضروري لأنه لا يمكن لأحد معرفة ما إذا كانت هناك حقًا رسالة في الصورة، أو إذا كانت كلمة المرور المقدمة صحيحة أم لا.)
يتم تخزين الرسالة كتيار متعدد البايتات منتهي بالصفر بتشفير UTF-8، حيث يُسمح فقط بتسلسلات التحكم \t (تبويب أفقي)، \r (إرجاع العربة)
و \n (سطر جديد). عند التحميل مرة أخرى، يحول إصدار واجهة المستخدم الرسومية لنظام ويندوز أحرف \n المفردة
إلى تسلسلات CRLF \r\n. عند الحفظ، يقبل إصدار سطر الأوامر تسلسل الحرفين \+t، \+r، \+n،
ويحولها إلى أحرف التحكم الفردية المقابلة.
بالنسبة للتشفير، يتم حشو الرسالة بالأصفار لجعل طولها مضاعفًا للعدد 16، ثم يتم حساب
sha256(ملح+sha256(كلمة المرور)) أولاً، مما يعطي 32 بايتًا ثنائيًا، منها يتم استخدام 16 بايتًا متتاليًا كـ
iv لتشفير AES-256-CBC بدءًا من قيمة البايت الرابع modulo 16. ثم يتم تهيئة مفتاح AES-256-CBC كـ
sha256(sha256(ملح+sha256(كلمة المرور))+ملح) (استخدام sha لـ sha يجعل من الصعب جدًا إن لم يكن مستحيلاً استخدام
هجوم rainbowhashing ضد كلمة المرور). الملح هو Libre Steganography Standard.
بالنسبة للبكسلات، يتم تحويل جميع الصور إلى مخازن بكسلات RGBA معبأة 32 بت. يتم استخدام أقل 2 بت أهمية من كل من القنوات الأربع لتخزين 8 بتات من الرسالة (مما يعطي 1 بايت رسالة لكل 1 بكسل حامل). يتم استخدام فقط البكسلات التي تكون قناة ألفا فيها أكبر من 3 للتخزين، وتقوم جميع الإصدارات بالإبلاغ عن عدد تلك البكسلات كـ "سعة N بايت."
بتات بايت الرسالة الواحد (7 MSB، 0 LSB): 76543210
بكسل حامل واحد (ألفا أخير، أحمر أول بايت): rrrrrr76 gggggg32 bbbbbb54 aaaaaa10 (a!=0)
(هذه الخدعة غير الشفافة ضرورية لأن مشفر WEBP ليس عديم الفقدان كما يدعي. مع ألفا أكبر من 3، يتم ضمان أن البكسل ليس شفافًا حتى لو كانت البتات المشفرة صفرًا.)
أداة إخفاء المعلومات هذه مرخصة بموجب شروط GPLv3+ (أو أي إصدار لاحق من هذا الترخيص). إنها مرتبطة بشكل ثابت مع stb_image (الذي هو في المجال العام)، و libwebp (المرخص بموجب BSD-3-Clause). أجزاء تشفير SHA و AES مضمنة (من كتابة المطور)، ولا حاجة لأي مكتبة تشفير طرف ثالث على الإطلاق.
هتاف، bzt