Steganography คือเทคนิคการซ่อนข้อมูลไว้เบื้องหลัง ไม่เหมือน Cryptography ที่เข้ารหัสข้อมูล (เช่น SHA1, MD5) สตีกาโนกราฟีเน้นการซ่อนข้อมูล (ไฟล์, ภาพ, ข้อความ, วิดีโอ) ไว้ภายในไฟล์อื่น เพื่อไม่ให้สังเกตเห็น
เราจะสร้างโปรแกรม Python เรียบง่ายที่ซ่อนข้อความในภาพโดยไม่มีการเปลี่ยนแปลงที่มองเห็นได้ มี 2 ส่วนหลัก:
- Encoding: ซ่อนข้อความลงในภาพ
- Decoding: ดึงข้อความซ่อนออกมาจากภาพ
ไลบรารีที่ใช้
ใช้ Pillow (PIL) และ stepic ติดตั้งได้ด้วย:
$ pip install pillow
$ pip install stepic
พื้นฐาน Pixel และโมเดลสี
- Pixel: หน่วยเล็กที่สุดของภาพ
- ขาวดำ: 0 = ขาว, 1 = ดำ
- สี (RGB): แต่ละสี 0-255 (8-bit) เช่น (255,255,255)=ขาว, (0,0,0)=ดำ
- การแปลงไบนารีเป็นทศนิยม:
0b01010101 = 85
ขั้นตอนการทำงาน
- นำเข้าไลบรารี
- เปิดภาพต้นฉบับ
- Encode ข้อความลงในภาพ และบันทึก
- เปรียบเทียบภาพก่อน/หลัง (ควรไม่เห็นความแตกต่าง)
- Decode ภาพเพื่อดึงข้อความออกมา
โค้ดตัวอย่าง
>> from PIL import Image
>>> import stepic
# 1. เปิดภาพ
>>> im = Image.open('TajMahal.png')
# 2. Encode ข้อความและบันทึก
>>> im1 = stepic.encode(im, b'Hello Python')
>>> im1.save('TajMahal.png', 'PNG')
# 3. ตรวจสอบภาพ (เปิดดู)
>>> im1 = Image.open('TajMahal.png')
>>> im1.show()
# 4. Decode ดึงข้อความออกมา
>>> im2 = Image.open('TajMahal.png')
>>> stegoImage = stepic.decode(im2)
>>> stegoImage
'Hello Python'
ผลลัพธ์
ภาพก่อนและหลังซ่อนข้อมูลจะดูเหมือนกันทุกประการ แต่มีข้อความ "Hello Python" ซ่อนอยู่ใน LSB (Least Significant Bits) ของพิกเซล
ประยุกต์ใช้
- ซ่อนข้อมูลลับในภาพส่งผ่านช่องทางสาธารณะ
- ลายน้ำดิจิทัล (Digital Watermarking)
- ส่งข้อมูลลับโดยหลบเลี่ยงการตรวจสอบ
สามารถใช้กับวิดีโอ ไฟล์เสียง หรือรูปแบบอื่นได้เช่นกัน ด้วยไลบรารีที่เหมาะสม