
go get lukechampine.com/jsteg
jsteg هي حزمة لإخفاء البيانات داخل ملفات jpeg، وهي تقنية تُعرف باسم الستيغانوغرافيا. يتم ذلك عن طريق نسخ كل بت من البيانات إلى البتات الأقل أهمية في الصورة. تعتمد كمية البيانات التي يمكن إخفاؤها على حجم ملف jpeg؛ حيث يتطلب الأمر حوالي 10-14 بايت من jpeg لتخزين كل بايت من البيانات المخفية.
// فتح ملف jpeg موجود
f, _ := os.Open(filename)
img, _ := jpeg.Decode(f)
// إضافة بيانات مخفية إليه
out, _ := os.Create(outfilename)
data := []byte("my secret data")
jsteg.Hide(out, img, data, nil)
// قراءة البيانات المخفية:
hidden, _ := jsteg.Reveal(out)
لاحظ أن البيانات غير محددة بأي علامات؛ تقع مسؤولية تحديد البايتات المطلوبة من hidden على عاتق المستخدم. أسهل طريقة للقيام بذلك هي إضافة طول البيانات في بدايتها.
يتضمن هذا المستودع أمر jsteg، الذي يوفر غلافًا بسيطًا حول دوال هذه الحزمة. يمكنه إخفاء البيانات واستخلاصها من ملفات jpeg ويدعم إعادة توجيه الإدخال/الإخراج. كما أنه يتعامل تلقائيًا مع بادئات الطول ويستخدم رأسًا سحريًا للتعرف على ملفات jpeg التي تم إنشاؤها بواسطة jsteg.
كما يتضمن الأمر slink ذو التوجيه الأكثر تخصصًا. يقوم slink بتضمين مفتاح عام داخل ملف jpeg، ويسهل توقيع البيانات والتحقق من التوقيعات باستخدام أزواج مفاتيح مشتقة من سلاسل كلمات المرور. راجع cmd/slink للحصول على وصف كامل.
يمكن العثور على الملفات التنفيذية لكلا الأمرين هنا.
تستخدم هذه الحزمة قدرًا كبيرًا من الكود من حزمة image/jpeg. يمكن العثور على الترخيص من نمط BSD الذي ينظم استخدام ذلك الكود في ملف go_LICENSE.