스테가노그래피는 이면에 정보를 숨기는 기술입니다. SHA1, MD5 등과 같은 다른 알고리즘을 통해 데이터를 암호화하는 데 중점을 둔 암호화와 달리 스테가노그래피는 다른 파일, 이미지, 메시지 또는 비디오 내에서 데이터(데이터는 파일, 이미지, 메시지 또는 비디오일 수 있음)를 숨기는 데 더 중점을 둡니다. 매력을 피하기 위해.
그래서 여기에서 우리는 이미지 모양의 눈에 띄는 변화 없이 이미지 뒤에 정보를 숨기는 간단한 파이썬 프로그램을 만들려고 노력할 것입니다. 프로그램에는 두 가지 주요 부분이 있습니다. 첫 번째는 이미지 파일에서 비밀 정보를 추출할 수 있는 디코딩 기능이고 두 번째는 비밀 메시지를 이미지로 인코딩하는 인코딩 기능입니다.
우리는 이 목적을 위해 Python Pillow 라이브러리를 사용합니다(Cv 또는 다른 사람도 열 수 있습니다 ☺). pip를 사용하여 설치할 수 있습니다. 명령 프롬프트에서 pip install pillow를 실행하기만 하면 됩니다.
$pip install pillow
픽셀 및 색상 모델의 기본 개념:
픽셀은 이미지의 가장 작은 개별 요소입니다. 따라서 각 픽셀은 원본 이미지의 일부를 나타냅니다. 즉, 픽셀이 높을수록 실제 사진의 표현이 더 높거나 훨씬 정확합니다.
흑백 이미지(회색조가 아님)에서 검은색 픽셀은 값 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 >>>
인코딩 및 디코딩 목적으로 계단식 라이브러리를 사용했습니다. 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 ☺