الانتقال إلى المحتوى الرئيسي
رؤوفResearchOS
العربية
سيدني، أسترالياالوقت الحالي في سيدني—
اضغط Escape لإغلاق هذه النافذة.
أداة لإخفاء البيانات في الصور

معرف التجربة: 003

أداة لإخفاء البيانات في الصور

مفاهيمي

إخفاء بيانات الصور باستخدام البت الأقل أهمية (LSB) في Go، بإدراج حمولة يسبقها طولها في القناة الحمراء لبكسلات PNG.

الهدف

إنشاء قناة خفية بتعديل أقل بتات بيانات البكسلات أهمية، ثم التحقق من استعادة البيانات الأصلية دون تغيير.

القيود

حجم الحمولة محدود بـ (العرض × الارتفاع) / 8 بايت ناقص ترويسة الطول البالغة 4 بايت. لا يقاوم إعادة الترميز بصيغة JPEG أو تغيير حجم الصورة.

  • Go
  • التشفير
  • معالجة الصور
الكود المصدري · اللغة الأصليةsrc/main.go
1package main23import (4	"encoding/binary"5	"fmt"6	"image"7	"image/color"8	"image/png"9	"os"10)1112func embed(img *image.NRGBA, payload []byte) error {13	header := make([]byte, 4)14	binary.BigEndian.PutUint32(header, uint32(len(payload)))15	bits := append(header, payload...)1617	idx := 018	for y := img.Bounds().Min.Y; y < img.Bounds().Max.Y; y++ {19		for x := img.Bounds().Min.X; x < img.Bounds().Max.X; x++ {20			if idx >= len(bits)*8 {21				return nil22			}23			c := img.NRGBAAt(x, y)24			bytePos, bitPos := idx/8, uint(7-idx%8)25			bit := (bits[bytePos] >> bitPos) & 126			c.R = (c.R & 0xFE) | bit27			img.SetNRGBA(x, y, color.NRGBA{R: c.R, G: c.G, B: c.B, A: c.A})28			idx++29		}30	}31	if idx == len(bits)*8 {32		return nil // The payload filled the image exactly.33	}34	return fmt.Errorf("image too small for payload")35}3637func main() {38	f, _ := os.Open("cover.png")39	defer f.Close()40	src, _ := png.Decode(f)4142	dst := image.NewNRGBA(src.Bounds())43	for y := dst.Bounds().Min.Y; y < dst.Bounds().Max.Y; y++ {44		for x := dst.Bounds().Min.X; x < dst.Bounds().Max.X; x++ {45			dst.Set(x, y, src.At(x, y))46		}47	}4849	_ = embed(dst, []byte("HIDDEN_MESSAGE"))5051	out, _ := os.Create("stego.png")52	defer out.Close()53	png.Encode(out, dst)54	fmt.Println("Done — payload embedded into stego.png")55}
شفرة للقراءة فقطUTF-8

بحث

اعثر على مشروع أو ورقة أو مقال أو صفحة.

٣٠ / ٤١ · نتائج البحث

↑ ↓ التنقل في مساحة العملEnter فتحEsc إغلاق