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:
>>> #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()
รูปภาพที่มีข้อความซ่อน:
Actual image: >>> im.show() >>>'
>>> >>> #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 ☺