Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

สตีกาโนกราฟี (Steganography) บนภาพด้วย Python

Steganography คือเทคนิคการซ่อนข้อมูลไว้เบื้องหลัง ไม่เหมือน Cryptography ที่เข้ารหัสข้อมูล (เช่น SHA1, MD5) สตีกาโนกราฟีเน้นการซ่อนข้อมูล (ไฟล์, ภาพ, ข้อความ, วิดีโอ) ไว้ภายในไฟล์อื่น เพื่อไม่ให้สังเกตเห็น

เราจะสร้างโปรแกรม Python เรียบง่ายที่ซ่อนข้อความในภาพโดยไม่มีการเปลี่ยนแปลงที่มองเห็นได้ มี 2 ส่วนหลัก:

  1. Encoding: ซ่อนข้อความลงในภาพ
  2. 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

ขั้นตอนการทำงาน

  1. นำเข้าไลบรารี
  2. เปิดภาพต้นฉบับ
  3. Encode ข้อความลงในภาพ และบันทึก
  4. เปรียบเทียบภาพก่อน/หลัง (ควรไม่เห็นความแตกต่าง)
  5. 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)
  • ส่งข้อมูลลับโดยหลบเลี่ยงการตรวจสอบ

สามารถใช้กับวิดีโอ ไฟล์เสียง หรือรูปแบบอื่นได้เช่นกัน ด้วยไลบรารีที่เหมาะสม