본문 바로가기

디지털포렌식(Digital forensic)/그림

그림색에 RGB로 심은 암호, ANSAN

반응형

RGB는 "Red, Green, Blue"의 약어로, 빛의 색상을 나타내는 가장 일반적인 방법이다.

이 세 가지 기본 색상을 다양한 비율로 섞어 다양한 색상을 생성할 수 있다.

RGB는 컴퓨터 그래픽스 분야, 디지털 이미지 처리 분야, 모니터 및 TV 디스플레이, 디지털 카메라 등

다양한 분야에서 사용된다.

 

  1. RGB는 빛의 추가적인 빛을 이용하여 색상을 혼합하는 가산혼합 방식을 나타낸다.
  2. 빨간색(Red), 초록색(Green), 파란색(Blue) 세 가지 색상이 각각 다양한 강도로 결합됨으로써
    다양한 색상을 생성할 수 있습니다.
  3. 이렇게 생성된 RGB 값은 일반적으로 0에서 255 사이의 숫자로 표현된다.
    예를 들어, (255, 0, 0)은 빨간색을, (0, 255, 0)은 초록색을, (0, 0, 255)는 파란색을 나타낸다.

아래는 ASCII Code 일람표다.

각 각의 문자는 10진수와 16진수, 물론 8진수, 2진수로 표현이 가능하다.

우리는 여기에서 'ANSAN', 안산이라는 도시명을 영어로 뽑아보자.

 

A 0x40 65
N 0x4E 78
S 0x53 83
A 0x40 65
N 0x4E 78

다음 단계로 RGB 테이블의

1행은 1번 000000으로 시작해서 333333, 666666, 999999, CCCCCC, FFFFFF 와 가티 만들어지고

2행부터는 1행의 기본값에 2자리가 바뀌면서 코드값이 만들어진다.

 

이제 ANSAN에 해당되는 16진수값을 임의로 추출한 5가지 색에 포함한다.

 

편의상 X,Y를 임의의 RGB값을 골랐다.

0000FF

336633

66CC66

CC33CC.

FFCC66

 

 

0000FF

 

336633

66CC66

CC33CC

FFCC66

 


추출한 색들 코드값중 끝의 두 자리를 ANSAN으로 치환해보자.

 

0000FF ▶▶▶ 000041

336633 ▶▶▶ 33664E

66CC66 ▶▶▶66CC53

CC33CC.▶▶▶CC3341

FFCC66 ▶▶▶FFCC4E

 

바뀐 결과 이미지는 아래와 같다.

 

 

이렇게 바뀐 색상테이블 값을 일렬로 나열해보면

원본은 아래와 같은데

 

아래는 뒷자리 16진수 2개가 바뀐 결과다. 

인간의 시각으로는 약간 달라졌다고 느낄 뿐이지만

코드값은 전혀 다른 값이다.

C#으로 이 다섯개의 RGB값을 추출, 가공해서 글자를 합성해보자.

 

using System;
using System.Text;

namespace RGBToTextConversion
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] rgbValues = { "000041", "33664E", "66CC53", "CC3341", "FFCC4E" };

            foreach (string rgb in rgbValues)
            {
                string hexCode = rgb.Substring(4, 2); // 마지막 두 값을 추출
                int asciiValue = Convert.ToInt32(hexCode, 16); // 16진수를 10진수로 변환

                char character = (char)asciiValue; // 10진수를 텍스트로 변환
                Console.Write(character);
            }

            Console.WriteLine();
        }
    }
}

결과

ANSAN

728x90