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

Steganography แบบภาพภาพ (Image-based Steganography) ด้วย Python


ในบทความนี้ เราจะเรียนรู้เกี่ยวกับ Steganography แบบภาพภาพโดยใช้ Python Steganography เป็นวิธีการซ่อนข้อความไว้เบื้องหลังเสียง วิดีโอ และภาพ ใช้เพื่อเพิ่มความปลอดภัยและป้องกันการอ้างทรัพย์สินทางปัญญาเท็จ

เราทำได้ด้วยคุณสมบัติการเข้ารหัส (encoding) ที่มีในโมดูล stepic ใน Python สำหรับการแสดงผลและดู เราใช้ PIL (Python Imaging Library) ใน Python

IDE ที่แนะนำ − Jupyter Notebook

นำเข้า dependencies ทั้งหมด −

>>> import stepic

ในบทความนี้ เราจะเข้ารหัสข้อความบนภาพด้านล่าง กรุณาดาวน์โหลดภาพด้านล่างและบันทึกเป็น "logo.png" ในโฟลเดอร์ localhost ของ Jupyter Notebook

Steganography แบบภาพภาพ (Image-based Steganography) ด้วย Python

คุณสามารถใช้ภาพใดก็ได้ คุณเพียงต้องระบุพาธของภาพของคุณภายในเครื่องหมายคำพูดคู่

>>> img = Image.open('logo.png')
>>> img.show()

ฟังก์ชัน Image ช่วยให้เราเปิด "ภาพ" ที่ต้องการทำ steganography ฟังก์ชัน .show() ช่วยให้เราเห็นภาพในรูปแบบป๊อปอัป (popup) ตามที่แสดงด้านล่าง

Steganography แบบภาพภาพ (Image-based Steganography) ด้วย Python

ตอนนี้ ใช้โมดูล stepic เราเข้ารหัสข้อความเป็นข้อมูลไบนารี 8 บิตโดยใช้ค่า ASCII สำหรับการเข้ารหัส ใช้ฟังก์ชัน .encode() ซึ่งรับสองพารามิเตอร์ คือ ภาพและข้อความ

เราใช้ฟังก์ชัน .save() เพื่อบันทึกข้อความที่ซ่อนไว้ลงในภาพต้นฉบับของเรา

>>> img1 = stepic.encode(im, b'Tutorialspoint')
>>> img1.save('logo.png', 'PNG')

ตอนนี้มาแสดงภาพที่ เข้ารหัสแล้ว (encoded)

>>> img1 = Image.open('logo.png')
>>> img1.show()

Steganography แบบภาพภาพ (Image-based Steganography) ด้วย Python

ฉันคิดว่าคุณจะไม่เห็นความแตกต่างในสองภาพ เพราะข้อความถูกซ่อนอยู่และมองไม่เห็นโดยตรง

เพื่อยืนยันว่าคุณเข้ารหัสข้อความสำเร็จ ให้ดูโค้ดด้านล่าง

>>> im2 = Image.open('logo.png')
>>> message_hidden = stepic.decode(im2)
>>> print(message_hidden)

ผลลัพธ์

'Tutorialspoint'

ข้อความที่ซ่อน/เข้ารหัสไว้จะถูกแสดงโดยดีโค้ดเดอร์ (decoder) ในตัวของโมดูล stepic ใน Python

สรุป

ในบทความนี้ เราได้เรียนรู้เกี่ยวกับ Steganography แบบภาพภาพโดยใช้โมดูล stepic และ PIL ใน Python 3.x หรือเวอร์ชันก่อนหน้า