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

Steganography ตามภาพโดยใช้ Python?


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

ดังนั้นในที่นี้ เราจะพยายามสร้างโปรแกรมหลามแบบง่าย ๆ ที่ซ่อนข้อมูลเบื้องหลังภาพโดยที่รูปลักษณ์ของภาพไม่เปลี่ยนแปลงอย่างเห็นได้ชัด โปรแกรมมีสองส่วนหลัก อย่างแรกคือฟังก์ชันถอดรหัสที่สามารถดึงข้อมูลลับจากไฟล์รูปภาพ และส่วนที่สองคือฟังก์ชันการเข้ารหัสที่จะเข้ารหัสข้อความลับลงในรูปภาพ

เราใช้ไลบรารี่ Python Pillow เพื่อจุดประสงค์นี้ (คุณสามารถ openCv หรืออื่น ๆ ได้เช่นกัน☺) คุณสามารถติดตั้งโดยใช้ pip เพียงเรียกใช้ pip install pillow ในพรอมต์คำสั่งของคุณ:

$pip install pillow

แนวคิดพื้นฐานของ Pixel และโมเดลสี:

พิกเซลเป็นองค์ประกอบที่เล็กที่สุดของภาพ ดังนั้น แต่ละพิกเซลจึงเป็นตัวแทนของภาพต้นฉบับ หมายถึง การแสดงภาพจริงที่มีพิกเซลสูงกว่าหรือแม่นยำกว่ามาก

ในภาพขาวดำ (ไม่ใช่ระดับสีเทา) พิกเซลสีดำมีค่า 1 และพิกเซลสีขาวเป็นค่า 0 ในขณะที่ภาพสีจะมีองค์ประกอบสีหลักสามส่วน (RGB- สีแดง สีเขียว สีฟ้า) โดยมีพิกเซล ค่า 0-255 สำหรับแต่ละพิกเซล ดังนั้นพิกเซลของ (255, 255, 255) จะแสดงเป็นสีขาว และ (0,0,0) หมายถึงสีดำ เนื่องจากจำนวนสูงสุดที่เลขฐานสอง 8 บิตสามารถแทน 255 เป็นจำนวนสูงสุดที่เราสามารถทำได้

เนื่องจากฐานของเลขฐานสองคือ 2 เราจึงสามารถแปลงเลขฐานสองเป็นทศนิยมได้ง่ายมาก ให้เลขฐานสองของเราคือ 01010101 แล้วเลขทศนิยมที่เทียบเท่ากัน (ฐาน 10) จะเป็น:

26 +24 + 22 + 20 = 64 + 16 + 4 + 1 = 85

คุณสามารถทดสอบด้านบน – การแปลงไบนารีเป็นทศนิยมในเทอร์มินัลหลามของคุณด้วย

>>> print(0b01010101)
85
>>> type(0b01010101)
<class 'int'>
>>> 0b01010101
85
>>> 0b01010110
86

เราจะบรรลุเป้าหมายได้อย่างไร:

Step 1: Import the required library/package.
Step 2: Open the file or Image
Step 3: Encode some text into the source Image & then save it.
Step 4: Check both the images (with and without hidden data file) and see if there is any visible changes.
Step 5: Decode the image- to extract data from the image

การดำเนินการตามขั้นตอนข้างต้น:

โค้ดตัวอย่าง

>>> #Import the required library
>>> from PIL import Image
>>> import stepic
>>>

ฉันใช้ไลบรารี stepic เพื่อเข้ารหัสและถอดรหัส คุณสามารถติดตั้งไลบรารี stepic โดยใช้ pip:

Steganography ตามภาพโดยใช้ Python?

>>> #Open Image or file in which you want to hide your data
>>> im = Image.open('TajMahal.png')
>>>
>>> #Encode some text into your Image file and save it in another file
>>> im1 = stepic.encode(im, b'Hello Python')
>>> im1.save('TajMahal.png', 'PNG')
>>>
>>> #Now is the time to check both images and see if there is any visible changes
>>> im1 = Image.open('TajMahal.png')
>>> im1.show()

รูปภาพที่มีข้อความซ่อน:

Steganography ตามภาพโดยใช้ Python?

Actual image:
>>> im.show()
>>>'

Steganography ตามภาพโดยใช้ Python?

>>>
>>> #Decode the image so as to extract the hidden data from the image
>>> im2 = Image.open('TajMahal.png')
>>> stegoImage = stepic.decode(im2)
>>> stegoImage
'Hello Python'

ดังนั้นเราจึงเห็นว่าการซ่อนข้อความหลังภาพทำได้ง่ายเพียงใด คุณสามารถใช้รายการป้อนข้อมูลอื่นๆ เช่น วิดีโอหรือรูปแบบอื่นๆ เช่น jpeg และคุณสามารถใช้ไลบรารีอื่นๆ เพื่อให้ได้ผลลัพธ์แบบเดียวกัน Happy Steganography with Python ☺