01 / VISIBLE IMAGE
우리가 보는 사진
어떤 사진이 들어 있을까요?
일반적인 이미지 뷰어가 보여주는 사진입니다.
사진을 바이트로 바라보기
사진도, 음악도, 문서도 파일의 내용은 바이트로 저장됩니다.
프로그램은 그 바이트를 정해진 규칙으로 읽어 사진과 소리, 글로 보여줘요.
0과 1 여덟 자리로 0~255의 값을 표현해요. 길게 늘어선 이진수는 보통 16진수 두 자리로 짧게 적습니다.
11111111→FF같은 값을 이진수와 16진수로 표현한 예시예요.
.jpg, .png, .txt는 파일 이름 끝에 붙는 형식의 힌트예요. 운영체제는 확장자를 연결된 앱이나 아이콘을 고르는 데 활용합니다.
cat.jpg→cat.png이름만 바꾼 예시: 안의 바이트는 여전히 JPEG예요. PNG로 변환하려면 이미지 내용을 PNG 형식으로 다시 저장해야 합니다.
이름이 아니라 바이트의 구조를 확인해요. JPEG는 FF D8로 시작하고, 프로그램은 JPEG의 규칙대로 데이터를 읽어 사진을 표시합니다.
FF D8 … FF D9→사진시작과 끝을 단순화한 예시예요. 프로그램마다 확장자와 내부 정보를 활용하는 방식이 달라서, 이름을 바꾼 파일은 열리지 않을 수도 있어요.
그렇다면, 사진 파일의 바이트 안에 또 다른 사진도 들어 있을까요?
모든 분석은 이 브라우저 안에서 진행돼요. 파일은 서버에 업로드하지 않아요.
01 / VISIBLE IMAGE
어떤 사진이 들어 있을까요?
일반적인 이미지 뷰어가 보여주는 사진입니다.
02 / EMBEDDED IMAGE
같은 사진일까요, 다른 사진일까요?
파일 안에 실제로 저장된 이미지를 꺼내 봅니다.
추출본 저장 ↓| 필드 | 의미 | 실제 값 |
|---|---|---|
| 내부 JPEG 전체 길이 (시작·끝 마커 포함) |
“여기서 JPEG가 시작돼요.”
이미지 정보와 압축된 내용이 들어 있어요.
“여기서 JPEG가 끝나요.”
정확한 이름은 SOI(시작 마커)와 EOI(끝 마커)입니다. 여기서는 쉽게 헤더·푸터라고 부를게요. JPEG의 모든 헤더 정보가 두 바이트뿐이라는 뜻은 아닙니다.
내부 사진의 시작
내부 사진의 끝
위치와 길이로 찾은 구간이 실제 이미지로 열리는 것까지 확인했어요. 시작·끝 표시만 발견했다고 사진이 들어 있다고 단정하지는 않습니다.
이 예제는 고양이 JPEG가 끝난 뒤에 다른 JPEG를 붙였습니다. EXIF 썸네일과는 다른 방식이며, 모든 이미지 뷰어가 이런 부가 데이터를 보존하지는 않아요.
서로 다른 이미지가 보여도 그 이유까지 확정할 수는 없어요. 이 예제는 차이를 보여주기 위해 직접 구성했어요.
캡처하거나 재저장한 사진은 내부 정보가 달라질 수 있어요. 분석에는 전달받은 JPEG 파일을 그대로 사용하세요.