by 유혜정
이진수
디지털데이터는 0 또는 1로 표현하는 이진수를 기본적으로 사용한다.
메모리, 하드디스크 저장장치, 네트워크 장비 등 모든 디지털 시스템에서는 이진수를 사용해서 데이터를 저장하고 처리한다.
16진수
: 디지털 데이터는 2진수를 사용하지만 모든 데이터를 비트로 나타내면 데이터를 화면에 출력하거나 처리할 때 비효율적이어서 간단하고 편리하게 사용하기 위해 4Bit 단위로 묶어서 표현한다.
메모장 프로그램을 실행하여 숫자 123 값을 입력하고 저장한 파일을 HxD 프로그램으로 열어서 저장된 데이터 내용을 확인하면, 아스키코드 값 31,32,33 값이 3바이트로 저장되어 있는 것을 확인할 수 있다.
숫자가 아닌 a,b,c의 문자로 작성된 파일을 분석해봐도 마찬가지로 a,b,c 각각의 아스키코드 값인 61,62,63 값이 3바이트로 저장되어 있는 모습이다.
바이너리 파일이란?
: 이진 파일로 텍스트 파일이 아닌 파일이다. 컴퓨터가 저장 및 처리를 목적으로 이진형식으로 인코딩한 데이터를 포함하는 파일을 의미한다. 이미지파일, 동영상파일, 한글문서파일 등이 이 있으며, 이런 파일은 텍스트로 열어보면 글자가 깨진 것처럼 보인다.
파이썬 프로그램을 활용하여 "123.bin" 파일을 생성하고, HxD 프로그램으로 파일을 열어 데이터를 확인하면 7B 값의 1바이트가 저장되어 있는 것이 확인된다.
즉, 텍스트 파일은 123 값을 저장할 시에 3바이트가 필요하지만, 바이너리 파일로 저장할 경우에는 1바이트가 필요하다.
그러므로 파일 전송 시에 효율성이 좋아 바이너리 파일이 사용된다.
컴퓨터에서 데이터를 저장할 경우 종류 등에 따라 데이터의 저장방식이 다르다. 이런 저장방식의 대표적인 것에는 빅엔디언과 리틀엔디언이 있다.
바이트 열에서 가장 큰 값이 먼저 저장된다.
바이트 열에서 가장 작은 값이 먼저 저장된다.
컴퓨터 포렌식에서 시간과 날짜는 중요한 정보로서, 이 정보가 없다면 대부분의 디지털 증거는 그 의미를 잃어버린다.
<컴퓨터가 시간을 생성하고 관리하는 방법>
윈도우 시스템은 부팅 시에 컴퓨터의 마더보드의 라튬배터리에 연결된 RTC로부터 현재 시간을 가져오거나, 인터넷 서버와 동기화하여 시스템의 시간을 구성한 후 시스템 시간을 출력한다.
각 나라의 시간을 통일하기 위해서 표준시간대를 사용한다. 한국의 표준시간대인 한국표준시는 UTC 기준시간보다 9시간 빠르다.
1) time_t
2) time64_t
3) FILETIME 시간 포맷
Window 32bit에서 주로 사용하는 시간 정보 저장 형식
구조체는 8바이트이며, 날짜와 시간을 각각 4바이트에 저장
FILETIME을 time_t로 변환하는 공식
time_t=(FILETIME - 0x19DB1DED53E8000) / 10000000
4) 파일시스템에서의 시간
생성시간, 수정시간, 접근시간이 1980년 1월 1일부터 2107년 12월 31일까지 기록된다.
8바이트의 고정 길이로 1601년 1월 1일 (월요일) 00시 00분 00초를 기준으로 하고 그 이후의 누적시간을 연,월,일,시,분,초 단위로 환산한 후 기준 시에 더하는 방식을 사용한다.
데이터 인코딩
: 숫자, 문자, 시간 등의 데이터는 원본 그대로의 형태로 저장될 수도 있지만, 다양한 인코딩 알고리즘에 따라 특수한 형태의 데이터로 변환된다. 이러한 인코딩 방식 중 많이 사용되는 것이 Base 64.
Base 64
임의의 바이너리 데이터를 64개 아스키 문자의 조합으로 표현한다.
인코딩된 문자열은 알파벳 대소문자와 숫자, 그리고 +, / 기호 64개로 이루어진다.
인코딩 방식: 아스키코드 변환→2진수 변환→6비트로 나눔→10진수 변환→Base64 문자표 변환
Base64로 인코딩 온라인 변환사이트
파일
: 파일은 응용프로그램의 처리 단위이며, 디지털 포렌식 분석의 주요 대상이다. 파일 시스템 내에 존재하는 파일은 일반적으로 이름과 확장자를 부여하며, 파일의 확장자는 응용프로그램에서 처리 가능한 파일을 분류하는 역할을 한다.
파일 포맷의 내부구조
1) 헤더
2) 메타데이터
3) 데이터