BCD 코드
Binary Coded Decimal Code.
10진수 0부터 9까지를 2진화한 코드
EX) 10진수 237을 BCD 코드로 변환 -> 0010 0011 0111
BCD 코드 연산
6 + 3 = 9 -> 0110 + 0011 = 1001
17 + 46 = 63
정답 0001 0111 + 0100 0110 = 0101 1101 + 0000 0110 = 0110 0011
58 + 67 = 125
정답 0101 1000 + 0110 0111 = 1011 1111 + 0110 0110 = 1 0010 0101
그레이 코드
가중치가 없는 코드이기 때문에 연산에는 적당하지 않음.
아날로그-디지털 변환기나 입출력 장치 코드.
연속되는 코드들 간에 하나의 비트만 변화 -> 새로운 코드.
연습 문제
2진 코드는 그레이 코드로, 그레이 코드는 2진 코드로 변환하시오.
10110101(2) -> 11101111(g)
00101100(2) -> 00111010(g)
01011101011(g) -> 01101001101(2)
11100101011100(g) -> 10111001101000(2)
영숫자 코드
표준 BCD 코드
6비트로 하나의 문자를 표현 .
최대 64문자까지 표현 가능한 코드.
존 비트 -> 영어 대문자, 특수 기호
ASCII 코드
128가지의 문자를 표현 가능.
EX) A = 41 = 100 0001
EBCDIC 코드
대형 컴퓨터와 IBM 계열 컴퓨터 사용되는 8비트 코드.
256종류의 문자 코드를 표현할 수 있는 영숫자 코드.
유니코드
ASCII 코드의 한계성을 극복 위해 개발.
전 세계 모든 컴퓨터에서 일관되게 표현할 수 있는 산업 표준코드.
에러 검출 코드
패리티 비트
데이터 전송 과정에서 에러 검사를 위한 추가비트.
컴퓨터 내부의 주기억 장치에 사용.
종류
짝수 패리티: 데이터에서 1의 개수를 짝수 개로 맞춤.
홀수 패리티: 1의 개수를 홀수 개로 맞춤.
단점
패리티는 단지 에러 검출만 가능.
여러 비트에 에러가 발생할 경우에는 검출이 안될 수도 있음.
연습 문제
다음 중 짝수 패리티 시스템에서 에러가 발생한 경우를 찾아보시오.
10110 - 에러
10101110100
1100010101011 - 에러
해밍 코드
1비트의 에러를 정정할 수 있는 코드.
패리티 비트에 비해 추가 비트가 필요 -> 데이터 양의 증가.
2개 이상의 비트에 에러시 정정 불가능.
해밍 코드에서는 짝수 패리티 사용.
XOR
0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 = 0
0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 1 = 1
1 ⊕ 1 ⊕ 1 ⊕ 0 = 1
연습 문제
다음 해밍 코드 중 에러가 있는지 검사하여라
111101001010
11 1 0
1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 = 0
1 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 ⊕ 1 = 0
1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 = 0
0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 = 0
-> 0000
정답 에러 없음
순환 중복 검사(CRC)
높은 신뢰도 확보.
에러 검출을 위한 오버헤드가 적음.
랜덤 에러나 버스트 에러를 포함한 에러 검출에 매우 좋은 성능을 가짐.
데이터가 1001101이고 키 값이 1001인 경우 FCS를 계산하시오.
시간 정보 표현 방식
UTC
협정세계표준시.
GMT와 혼용해서 사용.
Local Time
현지 시간
우리나라 = UTC + 9h
MS-DOS 시간 저장 형식
컴퓨터의 현재 날짜와 시간을 저장
날짜, 시간 -> 각각 2 byte로 표현
날짜 - 상위 7 bits : 연도 (+1980), 중간 4 bits : 월, 하위 5 bits : 일
시간 - 상위 5 bits : 시, 중간 6 bits : 분, 하위 5 bits : 초 (x2)
유닉스 시간 저장 형식
1970년 1월 1일 자정 이후 경과된 초 저장.
기록 범위 (부호 있는 4 bytes) - 시작 : 1970년 01월 01일 00:00:00, 끝 : 2038년 01월 19일 03:14:07
기록 범위 (부호 없는 4 bytes) - 시작 : 1970년 01월 01일 00:00:00, 끝 : 2106년 02월 05일 21:28:15
기록 범위 (부호 없는 8 bytes, time64_t) - 시작 : 1970년 01월 01일 00:00:00, 끝 : 292277026596년 12월 04일
FILETIME
1601년 1월 1일 자정 이후 100 나노초 간격의 숫자
구조체 = 날짜 + 시간
기록 범위 - 시작 : 01601년 01월 01일 00:00:00 (00000000 : 00000000), - 끝 : 60056년 03월 28일 14:36:10 (FFFFFFFF : FFFFFFF)
연습 문제
다음의 시간 정보를 해석하시오.
0x4821 0x822A = 0100100 0001 00001 = 1980 + 36년 1월 1일 = 2016년 1월 1일
= 10000 010001 01010 = 16시 17분 10초
데이터 인코딩
텍스트 데이터
일반적으로 텍스트 에디터로 편집할 수 있는 데이터 포맷.
일반적인 자연 언어(한국어, 영어)와 숫자 등으로 구성.
제어 문자도 포함(탭, 줄바꿈).
바이너리 데이터
문자와 상관 없이 데이터를 사용할 수 있는 데이터 영역을 활용.
문자에 할당되는 영역 외의 영역도 사용하므로 일반적인 텍스트 에디터로는 열 수 없음.
uuencoding
Unix to Unix encoding
유닉스 시스템에서 바이너리 파일을 전송(이메일, 텔넷)
3 bytes의 바이너리 데이터를 4 bytes의 텍스트 데이터로 변환.
'School > 디지털 포렌식' 카테고리의 다른 글
디지털 포렌식 연습문제 기말 (0) | 2024.06.08 |
---|---|
디지털 포렌식 연습 중간고사 과제 모음 (0) | 2024.04.19 |
디지털 포렌식 5주차 (0) | 2024.04.18 |
디지털 포렌식 2주차 (0) | 2024.04.18 |
디지털 포렌식 1주차 (0) | 2024.04.17 |