2018년 6월 27일 수요일

NTFS log 분석

파일 삭제 부분은 Encase의 $MFT 분석만으로는 알다시피 한계가 있어
폴더 삭제 말고는 정확한 삭제 날짜 확인이 불가능하다는거
 
그래서 $LOG, $USN 정보를 확인해야 하는데
이게 완성형 포렌식 툴에서는 X-Way가 지원하고
그렇지 않은 경우 외부 분석 프로그램을 구해서 써야하는데 로그 트랙커라고 그거 쓰면 잘 됨.

2017년 6월 8일 목요일

분석

테스트 장비
24core 3.2Ghz,64GB 메모리
Case 보관 및 원본 저장 스토리지의 성능 중요 (분석 시, SATA기준 읽기/쓰기가 초당 15Mbyte 발생)

FTK 6.1
1. 설치 후, 라이센스 메니지먼트 프로그램을 통해서 동글 라이센스를 최신상태로 갱신해야함. (device refresh)
2. DB 폴더를 Case 및에 넣어서 case 관리가 가능해졌으나 폴더이름을 영어로만 사용해야 Case가 생성됨.
3. 가상화 파일은 VDI, VMDK, VHD만 가능
프로세싱 시간 : 50기가 VHD 파일 -> 4 시간
CPU 및 메모리 전체 고르게 사용함. (CPU 전체 평균 35%, 메모리 10G)
오후 2:38 ~ 7:16분 완료 (총 4시간 38분 소요) : Forensic 표준 프로세스 적용
도구에 이미지 무결성 확인 : 5분정도 소요 -> 의미는 볼륨 Hash값 확인
internet shortcut : 바로가기
live search : bit 단위 검색 (오래걸림)
index search : dtsearch라고도 하며, 파일 내부 검색
파일수 : 130만5천3백개
카빙된 파일 : 0개
삭제된 파일 : 826,609개 (MFT에서 복구)
별도 카빙 : 12:04 ~ 13:38 (42분수행) -> 169,701개 추가됨

가상PC 만들기(Windows Virtual PC)
https://www.microsoft.com/ko-kr/download/details.aspx?id=3702
가상 컴퓨터 만들기 -> 윈도우 CD 삽입 -> 부팅 -> 윈도우 설치

Encase 8.1
프로그램 설치 -> 실행 -> 동글 등록
https://www.guidancesoftware.com/support/product-registration
등록 후 메일 받으면 하단 링크에서 Cert 파일을 encase 설치된 경로에 복사
(C:\Program Files\EnCase8\Certs) 확장자가 cert임.

50G VHD파일
Process Options (기본카빙 포함) -> 오전 11시02~53분 완료 (51분 소요)
recovered folders 파일 : 30,064개
Lost Files : 3,094개
전체 삭제파일 : 200,117개 (컨디션 is del)

CPU 평균 49% 사용, 메모리 32.5G 사용

카빙 2가지 조사 : 17:25~26:11분 (9시간 가량 소요)

가상화 파일 조사
Xenconvert 2.3.1 설치 및 실행
XVA를 OVF파일로 변환하면, OVF와 VHD 파일이 2개 생성됨.
VHD 파일을 포렌식 툴로 조사하면 됨

삭제 파일 의미
1. del : 복구 100%됨
2. Overwrite : 복구 불가한 삭제된 파일. MFT에 정보가 있는데 실제 비할당 영역에 가보니 데이터가 없는 경우나
역으로 비할당 영역에서 Overwrite되어 Carving으로 일부만 복구해진 경우
3. carving은 메타데이터가 덮어써졌을때 복구하는 방법으로 복구가 되어도 파일명은 복구되지 않는다.
파티션 Size 구하는법
- MFT에서 뒤에 64byte가 파티션 정보 -> decode로 보면 처음 sector 정보와 전체 Size Sector 정보가 나옴.
마지막-처음위치 정보 -1이 전체 Size이고 Sector니까 *512로 Byte로 바꾸고 1024로 나눠서 계산하면됨.

볼륨시리얼인란? 링크파일에서의 의미
파티션에 대한 시리얼 번호를 나타낸다. 해당 시리얼 번호는 링크파일에 정보가 담겨있는데
이를 emdmgmt registry 정보를 통해서 확인할 수 있다. 16진수로 되어있는데 해당 10진수로 변환하여 그 값은 EMDmgmt에서 찾아보면
해당 USB 등의 시리얼 번호를 확인 가능하다.

파티션 매직하면 북마크에 정보가 나오는데 이때 bookmark sector의 정보가 파티션 섹터 위치를 나타냄
add partition에 위치 정보 넣고 total sectors in partition 부분에는 그다음 bookmark sector에서 뺀 값을 씀.

 I have worked about security for 10 years and I have licenses related in forensic, network, DB and so on. (EnCE, FTK, OCP, CCNA)
I am working in doosan company and I am in charge of security manager and I have lots of experience about digital forensic.

 I am studying through the internet site (SANS, University...) and book related in security.
and then I summary the information to note.
I will bring my note to test center.
인텍스 할때 (Process-> Index)
2번째 : 윈도우, 오피스 시스템등 불필요한 프로그램들에 대해서 스킵한다. (해쉬 라이브러리에 Known으로 되어있는거)
3번째: 윈도우, 오피스 시스템등 불필요한 프로그램들에 대해서 스킵한다. (의심, Known등 전체 다 skip)
논리적으로 지워지지 않은 파일에 대해서 (오버라이트는 무시) 우선 검색한다.
라이브러리 다운로드. -> 실행파일 클릭하면 라이브러리를 알아서 설치함. 라이브러리 연동은 케이스 옵션 탭에

필터창에 find item my hash catagory.
contain : 단어 포함
match : 정확한거 여러개
find : contain 여러개
PC에 USB에 물려 파일 열어보면 링크파일만 남음. 저장은 메모리에만 남음.Swap이 되면 page 파일에 남을 수 있음.
페이지 파일 키워드 검색한다.
프로세싱할때 키워드 검색이 인덱스 검색이 가능하다. 옵션에 컴파운드 파일이 있어서 raw 서치 + index 서치가 같이됨.
할때 같이해라. 그냥 셀랙트하는거랑 프로세싱해서 하는거랑 차이가 있다.
포렌식 - 해당 인원의 업무를 파악해라. 외부에 가게되면 어떠한 정보가 유용하게 사용될 것인가? 컨설팅이 주 업무인 경우, 회사에서 만든 전략 보고서가 중요하지 않을 수 있다.
그들이 필요한건 잘 구조화 되어있는 템플릿 보고서인데 이는 이미 개인 PC에 보관하고 이를 활용하여 회사 자료를 만드는 경우가 대부분이라 보통의 경우 회사 자료가 크게 쓸모가 없다.
그런데 인사 프로세스, 프로젝트, 교육컨텐츠 개발폼등은 오랜 시간 다듬어온 절차와 보고서 문서이므로 외부에서 활용될 가치가 높다. 외부에서 업무상 참고할 자료 측면에서 무엇을 가지고 나갈지에
대해서 고민을 하고 조사를 하는 것이 중요하다.

2017년 3월 1일 수요일

[업무력] 파워포인트 템플릿 활용

최근 공유라는 개념이 일반화 되가고 있다.
공유의 가치가 중요시되고 있는데 과거만 해도 내만이 가지고 있는 자료
내꺼가 중시되었다. 
남한테 공개안하고 나만이 가지고 사용하는게 뭔가 특별하고 나의 경쟁력이라 믿었는데
지금은 많이 다르다. 내가 알고 있는 것을 함께 나누고 더하면서 발전하는 사회이다.

회사에서 일하다 보면 파워포인트 템플릿이 상당히 업무에 중요하다. 
생각을 도식화 하고 전달력있게 표현하는 것이 기획 업무에서 큰 축을 차지하기 때문인데
최근에는 이런 템플릿을 제공하는 Site들이 많기 때문에 이를 활용하면 시간도 줄이고
보고서의 품질을 크게 높일 수 있다.

아래 업무하며 활용가치가 높았던 대표 Site를 공유하겠다. 

1. SlideShare (http://slideshare.net)
전 세계의 PPT 템플릿을 살펴 볼 수 있는 Site이다. 그리고 좋은 내용의 메세지를 담은 PPT도 많다.

2. 마이크로소프트 템플릿 (http://templates.office.com/)
MS에서 직접 운영하는 Site이다. 아직 부족한 부분이 있지만 메이저급에서 운영하는 Site이기 때문에 발전 가능성이 크고 자료의 질과 양 또한 급성장하는 Site이다.
또한 다양한 분양의 양식이 잘 정리 되어있다. 단순히 일반적인 기획 PPT가 아닌 이력서, 마일스톤 등 업무 성격별로 자료들이 정리가 잘 되어 있다.

3. 네이버 (http://hangeul.naver.com/document)
2~3년 전부터 네이버에서도 템플릿을 제공하는데 아무래도 한국 유저들이 많기 때문에 상당히 우리가 필요로하는 양식들이 많다. 그리고 IT 강국 답게 이미지 퀄리티가 높다.
PPT 템플릿 외에도 한글, 워드, 엑셀 등을 제공하기 때문에 자세히 살펴보면 좋습니다.


4. Presentation Pro (http://www.presentationpro.com/) 이 사이트는 양질의 다이어 그램이 많다. 다만 대부분 퀄리티 높은 자료들이 돈을 내고 사야한다. 내용도 알차고 양식도 괜찮은 템플릿이 많기 때문에 활용하면 도움이 많이 될 것이다.
무료/유료가 있는데 무료도 상당 수준의 자료가 많이 올라와 있으니 활용해 보기 바란다.

5. Smile Templates (http://www.smiletemplates.com/
) 10만개가 넘는 템플릿을 보유하고 있는 대표적인 사이트이다. 유료이기는 하나 3장까지는 무료이니 활용해보길 바란다.

2017년 2월 28일 화요일

[포렌식] Encase8 사용 후기

최근 한달정도 Encase8을 테스트 해보고 있다.

일단 기존에 v7의 경우 속도, 버그 등의 이슈가 무척 많았다.
250G 정도의 HDD도 분석이 버거웠고 특히 카빙이나 인덱싱 등의 작업은 대부분 실패로 끝나기가 일 수 있다.

그리고 아무리 작업 환경의 분석 서버가 Spec이 좋아도 전체 자원을 효율적으로 사용하지 못하고 CPU나 Memory 부분을 확인해 보면 대부분 자원이 놀고 있었다.

이번 v8의 경우, 일단 50G 이미지를 활용해서 테스트하고 있지만 우선 기존에 비해서 가볍고 빠르다.
과거는 시도 조차 힘들었던 카빙 부분도 하루 이내에 분석이 되었다.
물론 카빙의 종류를 다양하게 했을때는 2~3일 시간이 걸렸으나 기본 2~3개 정도는 충분히 분석해 내는 모습이었다.

UI 부분도 대폭 개선이 되었다. 보다 직관적으로 변경이 되었으며 수시로 발생하는 응답없음 오류도 기존 보다 눈에 띄게 줄었다.

전체 기능에 대해서 단위 테스트 중인데 사용하면서 좀 더 후기를 업데이트 하도록 하겠다.

2017년 2월 27일 월요일

[포렌식] USB 정보확인 (EMDMgmt)



SSD의 EMDMgmt 정보를 확인했다.
아래 폴더가 비어있는데 일반 SATA형 HDD의 경우 해당 위치에 정보가 들어가 있다.

2017년 2월 26일 일요일

[업무력] 일하는 동선을 줄이자

10여년 회사 생활을 하며 업무력에 대해서 고민을 많이 해왔다.

어떻게 업무력을 높일 수 있을까? 
같은 시간에 남들보다 더 Output을 내기 위해서 나름의 노하우가 생겼는데
그 기본은 동선을 줄이는데 있다.

1. 작게는 책상에서의 내가 자주 사용하는 물건은 인근에 배치하는 것으로 부터
2. 자주 사용하는 문서폼을 템플릿화해서 재활용하는 부분
3. 메일을 자동 분류하여 검색을 빠르게하고 불필요한 메일을 필터하는 방법
4. 자주 사용하는 메일의 문구나 폼은 서식으로 저장하여 메일을 쓸때 서명으로 불러와서 재활용하는 방법
5. 업무 폴더를 나만의 방식으로 구조화하여 접근성을 높이는 것
6. 탐색기 폴더에 자주사용하는 폴더는 즐겨찾기 링크를 걸어서 사용하는 것
7. 자주 사용하는 업무 단축키를 숙련시켜 작업 속도를 높이는 법
8. 클라우드를 활용해서 자료 전달이나 수정 등을 용이하게 하는 법
9. 공동 작업은 클라우드 오피스 등을 활용해서 협업공간에서 공동작업 하는 법
10. 마우스나 키보드의 펑션키를 지정하여 자주 쓰는 뒤로가기, 앞으로 가기 등을 추가 동선업이 바로 사용하는 법
11. 에버노트, 원노트 등을 통해 자료 정리를 용이하게하고 스크랩 속도를 높이는 법
12. 부서간 작업하는 프로세스를 살펴보고 불필요한 행위를 제거하는 법
13. 파워포인트의 슬라이드 마스터를 정의하고 글머리 규칙들을 사전에 정형화하여 작업 속도를 높이는 법
14. Iconfinder 등의 웹을 이용해서 이미지 검색 시간을 단축시키는 법
15. 문서명의 명명규칙을 정의하여 가시성을 높이고 검생을 용이하게 하는 법
16. 무선 환경 구축을 통해 장소를 넓게 활용하여 업무를 수행하는 방법
17. SSD, NAS, Win10등의 최신 기술들을 적용해서 업무를 용이하게 하는 법

등등 업무하면서의 발생하는 작고 소소한 시간들이 누적되고 반복되면 상단히 많은 시간이 된다. 이런 많은 시간들을 남보다 적게쓰고 시간을 Save할 수 있다면 우리는 그 시간을 통해 다른 곳에 투자할 수 있다. 

앞으로 업무력에 대한 글을 통해서 세부적으로 어떻게 업무를 효율적으로 할 것인지에 대해서 노하우를 공유하는 시간을 가지도록 하겠다.


[포렌식] 연결 불량인 외장하드 복구

결론 : CHKDSK /R 드라이브명 명령어를 통해서 논리/물리적 결함을 수정해주면 드라이브 인식이 정상화 될 것이다.


사용 하던 하드디스크가 접근이 불가한 경우
윈도우의 CHKDSK를 실행 하여 디스크를 복구 할 수 있다.

이 명령어는 이미 많은 분들이 알고 있을건데 이 명령어를 통해서 실제 인식 불가한 디스크를 복구할 수 있다는 걸
알고 있는 사람은 많지 않다. 

CHKDSK 옵션 명력어를 통한 복구 방법을 오늘 살펴 보겠다.

디스크를 연결했을 때 탐색기에서 드라이브는 올라오나 raw 상태로써 인식이 안되는 경우가 더러 발생한다.
그리고 해당 디스크를 더블클릭하여 연결을 시도하면 포멧을 하라고 나온다.

항상 사용하던 외장하드가 갑자기 연결이 안된다. 분명 데이터는 들어있는데 포멧을 하라고만 나오고
정말 답답할 다름이다. 
이때는 MFT 파일 시스템의 정보가 깨져서 발생할 가능성이 매우 높고 이를 CHKDSK로 복구해줄 있다.

우선 복구하기전에 디스크 복제를 시도한다. CHKDSK로 복구 시도했을때 대부분 살겠지만 만에 하나를 위해
현재 디스크로 동일하게 디스크 복제를 해주는데 Encase나 FTK를 사용해도 되고 또는 전용 복제 장비인 Solo4나 팔콘 장비를 써도 된다.

우선 디스크 복제를 했다고 가정하고 복구 방법을 서술하겠다.















위와 같이 인식 불량하드를 복제하고나서 다시 연결을 한다.
아무런 조치를 안했으니 디스크관리를 가보면 디스크 상태가 정상이 아닌 raw일 것이다.
 
이때 컴퓨터의 시작 -> 실행 -> CMD (관리자 모드)로 실행을 한다.
그리고 CHKDSK /F 해당 드라이브 (g:)
이렇게 명령어를 친다.


이처럼
CHKDSK /F G:  엔터

이렇게 해주면 체크디스크가 실행 됩니다.
아래와 같이 손상된 파일테이블을 찾아서 복구를 하는데 만약 복구가 안되는 경우
CHKDSK /R G: 명령어를 사용한다.

명령어의 차이는 논리적 오류를 자동으로 처리하는게 F
논리 및 물리적 결함까지 체크하여 복구하는 것이 R이다. 

결국 잘 모르겠으면 무조건 R로 복구를 해준다.
옵션의 차이는 아래와 같다.



이렇게 해서 복구를 진행하면 30분정도 후에 복구가 되어져 있을 것이다.

그리고 포렌식 관점에서는 기존의 디스크복제한 HDD와 이번에 복구한 HDD를 포렌식 툴에 놓고
MFT의 값을 비교해봐라.

Sector값의 변화를 확인 할 수 있을 것이다.

2017년 2월 25일 토요일

[비용절감] 5인가족 전기요금 할인

많은분들이 5인 가족 이상이 되는 경우 전기요금 할인 혜택을 받을 수 있다는 사실을
모르고 있다.
주민등록 등복상 5인 이상인 경우, 아파트 관리 사무소에 신청하며 할인을 받을 수 있으며
주택 같은 경우, 한전에 전화해서 신청을 하면 된다.
다자녀 할인은 많은 사람들이 알고 있는데 5인 가족은 모르고 있는 사람이 상당하다.
나 같은 경우도 얼마전에 알았다.
이제 등록 출력해서 이번주 신청할 건데 2년 넘게 모르고 있었다니 50만원 돈을 그냥 버린샘이다. 이제라도 알았으니 다행이지.
모르고 있던 분들 등본 출력해서 신청하세요.
국가에서 알아서 챙겨서 혜택을 주는게 합리적으로 보이는데 우리나라는 아는 만큼 챙겨 먹는다. 육아 어린이집 신청도 전기료도 신청해야 받을 수 있으니... 쩝
이렇게 신청하고 신청 받고 서류 증빙하고 다단계의 프로세스를 거치고 이에 따른 비용이 발생하는데 과연 이렇게 운영하는 것이 합리적인가 싶다.


2017년 2월 23일 목요일

[포렌식] USB등 외부 저장매체 인식 문제 해결 방법

포렌식 관점에서 보면, 8번 같은 경우가 간혹 발생하는데 CHKDSK 명령어를 통해 복구를 시도해보고 안되면 포렌식 툴로 데이터를 복구시켜서 재 포맷해서 사용하면 된다.

1.USB연결시 PC에서 아무런 반응이 없는경우
- 다른 PC에 연결하여 인식해서도 아무런 반응이 없다면, USB 고장으로 판단

2.USB연결시 USB장치가 과도하게 뜨거워지는 경우
- USB 접촉과정에서 과전류가 흐를경우 USB가 뜨거워지면서 USB메모리가 파손됨
  겉으로는 멀쩡해도 메모리에 저장된 데이터는 물론 심할경우 프라스틱 케이스가
  녹을 수 있으며 이러한 경우 복구는 어려움

3.USB연결시 인식은 되나, 윈도우 컴퓨터관리 디스크관리 항목에서 "읽을수 없음"으로 나오는 경우.
- 대부분 아래 9번의 경우처럼 Dead cell(Bad cell)이 발생한 경우임

4.USB연결시 "디스크를 삽입해 주세요" 메세지가 나오는 경우
- USB부팅시디를 만들려다 실패하는 경우이며 MPTOOL로 메모리를 다시 초기화 하면됨

5.USB연결시 "장치인식실패" 메세지 
- PC의 USB 장치드라이버나 USB단자불량 또는 접촉 불량으로 또는
   USB 메모리 물리적인 문제로 인해서 출력되는 경우

6.인식은 정상이나 파일을 USB에 복사하거나, 읽어올때 USB가 인식이 끊어졌다 다시 인식되는 경우
- 대부분 메모리에 발생한 Dead cell(Bad cell)이 원인으로 나타납니다.
   USB메모리 접촉불량으로 일시적으로 나타날수도 있지만, 대부분 메모리 자체 불량임

7.USB연결시 인식이 되었다가 끊어지는 증상이 반복
- 이 증상도Dead cell(Bad cell)이 대표적인 원인입니다. 메모리컨트롤러에 문제가 있는 경우도 있음

8.인식은 정상이나 "포맷하시겠습니까?"메세지가 출력되는 경우
-  USB메모리에 논리적인 파일시스템 손상이 있거나 물리적으로 문제가 있을경우 "포맷하시겠습니까?" 메세지가 출력되는 경우
   ​물리적인 손상이든 논리적인 손상이든지 저장장치에서 파일시스템 정보를 읽어올수 없기 때문에 파일시스템이 없는 저장장치라고 인식해서 "포맷하시겠습니까?" 라고 메세지를 출력하는 겁니다.
  
제어판 -> 관리도구 -> 컴퓨터관리에서 왼쪽 [디스크 관리] 항목 탭을 선택후 열어보면 아래 그림처럼 속성이 RAW로 인식.


이러한 경우, 도스창에서 해당 볼륨으로 이동한 다음 CHKDSK /r /f을 실행하여 파일 시스템 정보 복구를 시도해보고 그래도 안되면 포렌식 툴 (FTK Imager나 Encase)을 이용하여 복구하면됨. 파일 시스템이 손상된거지 파일 내용에 문제가 있는게 아니기 때문에 100% 복구가 가능하다.

9.인식은 정상인데 내컴퓨터에서는 드라이브가 뜨지 않고, 디스크 관리에서 할당되지 않음으로 나오는 경우
- "포맷하겠습니까?" 처럼 논리적 손상이든지 물리적 손상이든지 동일하게 출력되는 메세지입니다. 8번과 같이 시도하여 복구하거나 파일이 없는 경우 아래 디스크 관리에서 드라이브 할당을 해주면 해결됨.


2017년 2월 22일 수요일

[포렌식] Encase와 FTK 비교

테스트 장비

24core 3.2Ghz,64GB 메모리
Case 보관 및 원본 저장 스토리지의 성능 중요 (분석 시, SATA기준 읽기/쓰기가 초당 15Mbyte 발생)



FTK 6.1

1. 설치 후, 라이센스 메니지먼트 프로그램을 통해서 동글 라이센스를 최신상태로 갱신해야함. (device refresh)
2. DB 폴더를 Case 및에 넣어서 case 관리가 가능해졌으나 폴더이름을 영어로만 사용해야 Case가 생성됨.
3. 가상화 파일은 VDI, VMDK, VHD만 가능

프로세싱 시간 : 50기가 VHD 파일 -> ?? 시간
CPU 및 메모리 전체 고르게 사용함. (CPU 전체 평균 35%, 메모리 10G)

오후 2:38 ~ 7:16분 완료 (총 4시간 38분 소요) : Forensic 표준 프로세스 적용

도구에 이미지 무결성 확인 : 5분정도 소요 -> 의미는 볼륨 Hash값 확인

internet shortcut : 바로가기
live search : bit 단위 검색 (오래걸림)
index search : dtsearch라고도 하며, 파일 내부 검색

파일수 : 130만5천3백개
카빙된 파일 : 0개
삭제된 파일 : 826,609개 (MFT에서 복구)

별도 카빙 : 12:04 ~ 13:38 (42분수행) -> 169,701개 추가됨


가상PC 만들기(Windows Virtual PC)

https://www.microsoft.com/ko-kr/download/details.aspx?id=3702

가상 컴퓨터 만들기 -> 윈도우 CD 삽입 -> 부팅 -> 윈도우 설치


Encase 8.1

프로그램 설치 -> 실행 -> 동글 등록

https://www.guidancesoftware.com/support/product-registration

등록 후 메일 받으면 하단 링크에서 Cert 파일을 encase 설치된 경로에 복사

(C:\Program Files\EnCase8\Certs) 확장자가 cert임.


50G VHD파일
Process Options (기본카빙 포함) -> 오전 11시02~53분 완료 (51분 소요)

recovered folders 파일 : 30,064개
Lost Files : 3,094개
전체 삭제파일 : 200,117개 (컨디션 is del)


CPU 평균 49% 사용, 메모리 32.5G 사용


카빙 2가지 조사 : 14:13~17:20 (3시간 소요)
결과는 artifacts에 들어가 있고 362146개의 PPT파일이 복구되었는데 파일 size가 4096으로 일관되게 복구되었고 하나의 파일 형태가 아니였다. 기본 옵션으로 복구 시 파일을 쪼개서 복구했음.



가상화 파일 조사

Xenconvert 2.3.1 설치 및 실행
XVA를 OVF파일로 변환하면, OVF와 VHD 파일이 2개 생성됨.
VHD 파일을 포렌식 툴로 조사하면 됨


삭제 파일 의미

1. del : 복구 100%됨
2. Overwrite : 복구 불가한 삭제된 파일. MFT에 정보가 있는데 실제 비할당 영역에 가보니 데이터가 없는 경우
3. carving은 메타데이터가 덮어써졌을때 복구하는 방법으로 복구가 되어도 파일명은 복구되지 않는다.

파티션 Size 구하는법

- MFT에서 뒤에 64byte가 파티션 정보 -> decode로 보면 처음 sector 정보와 전체 Size Sector 정보가 나옴.
마지막-처음위치 정보 -1이 전체 Size이고 Sector니까 *512로 Byte로 바꾸고 1024로 나눠서 계산하면됨.

파티션 매직하면 북마크에 정보가 나오는데 이때 bookmark sector의 정보가 파티션 섹터 위치를 나타냄
add partition에 위치 정보 넣고 total sectors in partition 부분에는 그다음 bookmark sector에서 뺀 값을 씀.


index 옵션

2번째 : 윈도우, 오피스 시스템등 불필요한 프로그램들에 대해서 스킵한다. (해쉬 라이브러리에 Known으로 되어있는거)
3번째 : 윈도우, 오피스 시스템등 불필요한 프로그램들에 대해서 스킵한다. (의심, Known등 전체 다 skip)

라이브러리 다운로드 -> 실행파일 클릭하면 라이브러리를 알아서 설치함. 라이브러리 연동은 케이스 옵션 탭에 있고 프라이머리로 설정하여 연결. 다운로드 받은 파일은 모두 Known 파일임.


연결된 해쉬 라이브러리 확인은 필터창에서 find item my hash catagory로 분석할 수 있음.
그냥 컨디션으로 hash을 match에 넣어서 분석도 가능하나 수량이 많은 경우는 위 방법으로 처리

contain : 단어 포함
match : 정확한거 여러개
find : contain 여러개

PC에 USB에 물려 파일 열어보면 링크파일만 남음. 저장은 메모리에만 남음.Swap이 되면 page 파일에 남을 수 있음.
페이지 파일 키워드 검색한다.

프로세싱할때 키워드 검색이 인덱스 검색이 가능하다. 옵션에 컴파운드 파일이 있어서 raw 서치 + index 서치가 같이됨.
할때 같이해라. 그냥 셀랙트하는거랑 프로세싱해서 하는거랑 차이가 있다.

Encase의 recover folder는 meta carving으로써 아주 과거의 MFT의 정보를 추적하여 복구하는 기능이다. MFT도 컴퓨터가 실행되면 메모리에 올라가고 그렇게 되면 HDD 공간 페이지 파일 등에 정보가 남아 있다. 이러한 정보들을 통해 MFT의 Meta 정보들을 활용해서 복구하는 방법이다.

Lost files의 경우 폴더 위치 정보를 찾을 수 없는 파일들을 모아 놓은 곳이다. MFT를 분석을 했더니 폴더 전체 Tree를 그리지 못하는 경우인데 파일 어트리뷰트는 파일명과 부모 폴더 ID를 가진다. 그런데 부모 폴더 상위 이상의 파일들이 삭제되고 나서 레코드가 재활용 되버린 경우 폴더의 전체 Tree를 잃어 버렸기때문에 경로를 알수 없는 file들이 생긴다.

참고로 MFT 정보에 파일명, 폴더 위치 정보가 남아있지 실제 파일에는 이런 정보가 없다. 따라서 carving으로 복구했을때 파일명도 그리고 폴더위치도 알수가 없는것이다.
Carving 복구하면 임의의 문자명으로 복구됨. MFT 정보에서 복구한것이 아니기 때문에 스스로의 위치나 파일명 정보를 알수가 없다.



2017년 2월 21일 화요일

[비용절감] 샤오미로 통신비 줄이기

통신비를 줄이기위해 듀얼유심을 활용할 수 있다.

샤오미 등 외국 스마트폰의 경우 적지않게 듀얼 유심을 지원한다.
즉 유심 2개를 동시에 사용할 수 있는데
이렇게 생각해보자. 
최근에 알뜰폰을 보면 무료 요금제가 있다. 유선 30분에 데이터는 0분인데 비용은 0원.
그렇다면 0원 유심을 유선 전화용 유심으로 사용하고 나머지 유심은 데이터만 저렴하게 판매하는
알뜰폰이나 통신사 요금을 선택해서 사용한다. 
그러면 유선과 데이터를 분리해서 요금제를 구성해 볼 수 있고 또는 각 통신사 마다 제공하는 프로모션 요금만을 조합해서 사용할 수 있다.

핼로 모바일의 5천원 요금제 (40분, 0.5기가), KT M모바일의 8천원 요금제 (40분, 1.5기가) 예를 들어 이런식의 요금제 구성이 가능하다는 소리다. 그리고 양쪽다 각각 카드할인도 별도로 받고

듀얼심이란?
- 전통적으로 유럽이나 미국에서는 많이 사용하는 형태로 1개의 핸드폰에 2개의 유심을 넣는 것이다. 유럽이나 미국의 사용자들의 대부분은 비싼 통신비를 절약하기 위해 사용하는 방식이다. 1개의 유심은 문자 무제한 유심을 나머지 1개의 유심은 통화 무제한 유심을 넣어 사용한다.

듀얼 스텐바이란?
- 2개의 유심을 삽입하여 인식하는 방식은 크게 3가지가 존재한다. 듀얼 패시브, 듀얼 스텐바이, 듀얼 액티브이다.
ㅇ듀얼 패시브(통신 모뎀 1개)는 사용자가 사용할 때마다 사용할 유심을 선택하는 방식이다.
ㅇ듀얼 스텐바이(통신 모뎀 1개)는 두 개의 유심이 언제든지 사용을 대기하고 있다가 자동 선택적으로 또는 사용자가 선택하여 유심을 사용하는 방식이다. 통신 모뎀이 1개이기 때문에 하나의 유심이 사용 중일 때는 나머지 유심으로는 어떠한 사용도 불가능하다.
예> 1번 유심으로 전화가 들어오면 2번 유심은 데이터도 전화도 메시지도 보내지 못한다.
ㅇ듀얼 액티브(통신 모뎀 2개)는 듀얼 스텐바이의 역활을 모두 수행하며 2개의 유심을 동시에 사용할 수 있다.
예> 1번 유심으로 전화가 들어와도 2번 유심을 사용하여 데이터도 전화도 메시지도 사용할 수 있다.

샤오미가 뜨는 이유는?
- 듀얼 스텐바이

현재까지 듀얼심 핸드폰은 GSM와 GSM방식 또는 3G와 GSM방식 또는 LTE와 GSM방식이었다. GMS 통신망이 전무한 우리나라에서는 사용할 수 없었다.(넷콤2.0) 그러나 샤오미의 스마트폰은 LTE와 3G를 이용한 듀얼심 방식으로 우리나라 사용이 가능하다.(넷콤3.0)
*우리나라(남한,북한)와 일본만 GMS 통신망이 없다.

이제는 우리나라에서도 유럽이나 미국처럼 듀얼심을 사용할 수 있다. 샤오미 스마트폰은 유심을 2개 넣을 수 있다. 1개의 슬롯에는 SKT나 KT의 기존 사용 유심을 넣고 나머지 빈 슬롯에는 알뜰폰 통신사(MVNO)의 무제한 LTE 데이터 유심을 넣어 통화는 SKT나 KT로 인터넷은 무제한 LTE를 사용할 수 있다.
*LTE용 데이터 유심은 SKT, KT, LG U+ 모두 사용가능하다.
*두 개의 유심이 동일한 통신사일 때는 작동하지 않는다.

- 듀얼 앱
2개의 유심으로 전화번호가 2개가 된 상태이지만 메신저 앱(카카오톡, 라인 등)을 1개만 사용한다면 굉장히 불편하다. 그런데 샤오미의 MIUI8(안드로이드 6.0 마시멜로를 샤오미가 튜닝한 버젼)에서는 카카오톡을 2개, 라인을 2개 설치할 수 있다. 이렇게 2개씩 설치된 앱으로 각각의 다른 계정으로 로그인할 수 있다. 물론 모바일 게임도 2개씩 설치할 수 있다.

2017년 2월 20일 월요일

[비용절감] 생활비 절약하기

가계의 수익구조를 개선 시키는 방법은 수익을 극대화하거나 비용을 절감하는 방법이다.
그리고 마지막으로 개인 시간의 확보, 같은 시간에 투입되는 노동의 시간을 줄여 여분의 시간을 확보하는 방법이다. 즉 시간은 돈이니까
1. 수익의 극대화

최근 루프펀딩이라는 P2P 부동산 투자를 하고 있다. 수익률은 년 13~18프로의 고수익을 보장한다. 단 부동산을 담보로 투자를 하는거지만 조금의 리스크는 있다. 상품 마다 조건이 다르니 꼼꼼히 분석해서 분산 투자한다면 주식이나 채권보다 안전하다고 생각한다.
천만원을 투자하면 세금을 제외하고 11만원 정도 수익이 발생하는데 우리가 여기서 곰곰히 생각해보자.
1천만원 대출이자는 5프로 이내이며 이를 투자로 돌리면 이자을 납부하고도 5프로 이상의 수익이 발생한다. 물론 여유돈으로 투자하는 것을 권장하지만 이렇게 생각할 수도 있다는 것이다. 기업에서 차입을 통해 투자활동을 일으켜 수익을 발생하는 것 처럼 투자대비 수익률 분석을 개인에게도 적용해 볼 수 있는 것이다.
2. 마른수건도 다시 짜라. 비용 절감편
알뜰폰 당장 신청해라 6기가에 350분 무료통화 상품이 최근 2만원도 안된다. 통신사 50프로 비용도 안되는 돈이며 앱등 기능도 기존 통신사와 큰 차이가 없다.
보통 가정이 2~4인임을 가정하면 최소 5만원 이상의 비용 절감 효과를 볼 수 있다.
그리고 이를 확장해서 부모님, 친인척 들에게도 적용하면 얼마나 큰 이득이란 말인가
LED 전구로 모두 교체해라. 요즘 인터넷으로 가격이 너무 싸다. 교체 주기도 5배나 길지만 전기료는 절만 이하다. 주저하지 말고 투자해서 교체해라.
집에 적용했더니 전기료가 1만원이 줄었다. 부모님에게도 적용하고 친인척에게도 적용하고 모두 만족하고 있다.
변화에 주저하지말고 바로 실천에 옮겨라

영어 학습 비법

1. 하루 20분을 영어공부 최소치로 잡자 (하루의 1.3%)
2. 관심사, 삶과 취미와 맞닿아있는 컨텐츠를 공부하자 (영화든, 전화영어든, 학원이든)
3. 소리내어 읽어 종합적으로 트레이닝하자



출처 : https://www.youtube.com/watch?v=w6xSCX3Qt2c


2017년 2월 15일 수요일

[포렌식] VDI의 XVA이미지를 VHD 파일로

포렌식 툴은 기본 VHD나 VMDK파일을 지원하나 XVA를 지원하지 않는다.
따라서 컨버터툴이 필요한데
2.3.1 젠컨버터 프로그램으로 변환을 해야 한다. 해당 버전만 오직 지원하니 버전을 잘 확인하고 사용해야 한다.

2016년 2월 24일 수요일

[포렌식]패스워드 크래킹

1.패스워드 크래킹이란?

공격 대상이 이미 ID를 알고 있다는 가정 하에 비밀번호를 알아내는 해킹 기법이다.                                                    이 기법은 해킹 기법중 난이도는 낮은 편이나 가장 강력한 공격이다.


2.취약한 패스워드 분류

1. 길이가 너무 짧거나 아예 패스워드를 설정하지 않은 경우                                                                                   2. 사전에 나오는 단어나 이들의 조합                                                                                                                3. 키보드 자판의 나열                                                                                                                                      4. 사용자 계정 정보에서 유추가능한 단어


3.패스워드의 안전성 확인

입력문자 

7자리 

8자리 

영문 소문자(26문자) 

 45분

20시간 

 영문 소문자 + 숫자(36문자)

 8일

13일 

 영문 대문자 + 숫자(62문자)

25일 

4년반 

 영문 대소문자 + 숫자 + 특수문자(94문자)

437일 

114년 

<출처 : 정보보호뉴스>

우리가 평균적으로 사용하고 있는 영문소문자 +숫자로 구성된 8자리 패스워드는 13일이면 해킹당할 수 있다.                  13일이라는 시간을 들여 일반인의 패스워드를 크래킹하는 경우는 잘없겠지만 공공기관이나 주요 직책의 사람들의 것일 경우는 이야기가 달라진다. 점점 높아지는 컴퓨터 사양으로 인해 이시간은 점차 쭐어들 것으로 보인다.                         이러한 문제점을 해결하기 위한 가장 빠르고 정확한 해결방안은 사용자 본인이 경각심을 느끼고 패스워드 관리에 좀더 신경을 쓰는 것이라고 생각한다.


이미지

위 프로그램은 kisa에서  제공하는 패스워드 안전성검사 프로그램이다.                                                                   현재 자신의 패스워드의 안정성을 표시해준다.(스스로의 패스워드를 진단해보길 바란다)

*안전한 패스워드                                                                                                              1. 2가지 변수 + 10가지 이상의 길이                                                                                                                2. 3가지 변수 + 8가지 이상의 길이                                                                                                                 (변수 : 영문대문자, 영문소문자, 숫자, 특수문자(4가지))

4.패스워드 크래킹의 종류

고전기법과 현대기법이 있지만, 암묵적인 의미에서 현대기법(자동화된 툴이용)만 사용

이되고 있고, 아래와 같은 종류가 있다.

고전 기법

1. Shoulder Sniffing

누구나 한번쯤 타인의 비밀번호를 어깨너머로 훔쳐본 적 있을것이다. 

이 기법은 단어 뜻 그대로 어깨넘어로 훔쳐 본다는 의미를 가진 크래킹 기법 이다.


2. Dumpster Diving 

영화에 가끔 등장하는 장면 중 하나인 쓰레기통을 뒤져 서류나 메모를 찾아 정보를 얻는 장면을 볼수 있다.

그렇게 무심결에 버려진 정보들을 찾아서 정보를 훔치는 기법이다.


3. Social Engineering

사회 공학 기법이라고도 하며 요즘 크게 문제가 되고 있는 보이스 피싱, 스미싱과 같이

사람들을 속여 정상 보안 절차를 깨트리기 위한 비기술적 침입 수단을 뜻하는 기법이다.


현대 기법

1.Dictionary attack(사전 공격)  

사전 대입 공격으로 미리 사전파일을 만들어 놓고 그 내용을 하나하나 대입하는 기법이다. 

이 기법은 용량이 크면 클수록 좋다. 해외에서 공격이 잦다.

(사전파일 안에 내용이 중요)(ex-한글)


2.hybrid attack : 

앞선 사전 공격 보다 진화(혼합 공격)

 guessig 이 첨가된 부분이 크기 때문에 경험이 높은 사용자의 경우에는 효과가 높지만,

 경험이 미비한 사용자의 경우에는 역효과

 단점:추측을 잘못하면 더오래걸릴수있다


3.brute force attack : 

무차별 대입 공격으로 암호를 풀기 위해 가능한 모든 경우의 값을 대입하여 암호를 해독하는 기법

언젠가는 뚤리지만, 정확히 언제인지는 알 수 없다. 관제서비스에서 필터링 되어 질  확률이 높다.

장점:가장 정확하다.

단점:오래 걸림


5.사전 공격을 위한 사전 파일 정보 수집 -> "구글링"

site : 해당 도메인 내에서 검색

ex>kr, jp,cn....

 inurl : url 내에서 포함된 문자열 검색

ex>www.i2sec.co.kr <-- 개인정보 및 취약점 노출확인가능


intitle : <title> </title> 내에 포함된 문자열 검색


filetype : exe, pdf, xls, hwp와 같은 파일 확장자를 검색

ex>filetype:ppt 제안서

   이력서와 같은 민감한 파일들이 노출된다.


사전파일 찾는 요령 : inurl:dictionary.txt 및 password.txt

             filetype:txt,doc



6.Dictionary attack(사전 공격)


이미지

사전 공격을 위해 Unsecure이란 툴을 사용


이미지


공격을 위한 사전파일이 툴과 같은 폴더에 들어 있어야 한다. 

툴 사용법

1.Computer name and IP - 패스워드 크래킹할 PC나 서버의 IP주소 입력

2.Port - 접속 방식의 포트 번호 입력(ex-21:ftp, 22:ssh, 23:telent)

3.Username : 패스워드 크래킹 할 ID 입력

4.Dictionary file : 준비된 사전 파일 이름을 입력

5.Attack options : 사용할 공격을 설정하는 부분 (Dictionary attack 선택)

6.Connect 클릭!

7.사전 파일을 비교하고 맞는 암호가 있으면 출력! (사전파일이 많을수록 시간이 오래걸린다)


*간단하고 쉬운 공격같아 보이지만 상대방의 IP와 ID만 알면 누구나 쉽게 공격할 수 있는 무서운 공격이다.

직접 실습해본 결과 사전파일의 양보다는 역시 질이 중요한 것 같다.

아무리 많은 경우의 수를 가지고 있더라도 모두 다 틀린답인 경우 결과는 모르는 상황과 같다.

많은 추리, 추측과 경험이 요구되는 기법인 것 같다.

하지만 이러한 것이 갖춰졌을때 무엇보다도 무서운 공격이 될꺼 같다.

또다시 비밀번호의 중요성을 느끼는 시간이 되었다.


출처 == I2sec

2016년 1월 26일 화요일

파티션 테이블 구조 분석


http://cappleblog.co.kr/590

1. MBR 과 EBR 의 구조에 대한 간략 설명

이번 단락에서 이야기할 MBR 과 EBR, 주 파티션, 확장 파티션, 논리 드라이브에 대한 내용은 이미 다른 글들에서 여러 차례 정리를 했었지만, 이 글만 보실 분들도 계실테니 되집어 보는 의미에서 간단하게 다시 정리하는 시간을 가지도록 하겠습니다.


MBR(Master Boot Record) 은 디스크의 가장 첫 번째 섹터에 위치해 있는 512Byte(섹터 하나의 크기) 공간으로, 이 512Byte 의 작은 공간에 현재 디스크로 부팅할 수 있도록 도와주는 부팅 코드와 함께 디스크 고유의 서명 정보, 그리고 디스크에 포함된 파티션에 대한 정보가 모여 있습니다. 이러한 MBR 을 간략하게 모식으로 나타내면 아래와 같습니다.

코드 영역 : 디스크의 부팅과 관련이 있는 440Byte 의 공간으로 PC 의 부팅과 관련된 작업을 진행합니다. 코드 영역에 기록된 부팅 코드의 기본적인 목적은 파티션 테이블에서 활성 파티션을 찾고 해당 활성 파티션의 부트 섹터로 이동하게끔 해주는 것입니다. [BIOS → MBR 코드 영역 → 활성 파티션의 부트 섹터 → 부트 매니저(로더)]

디스크 서명 : 해당 디스크를 식별하기 위한 4Byte 의 고유한 IDentity 정보입니다. [해당 디스크의 고유한 아이디]

파티션 테이블 : 현재 디스크에 존재하고 있는 파티션에 대한 정보들이 저장된 64Byte 의 공간으로, 파티션의 크기, 위치, 속성, 활성 여부에 대한 정보가 저장되어 있습니다. 파티션 테이블에는 총 네 개의 엔트리(각 16Byte)가 존재하고 있으며, MBR 의 파티션 테이블 엔트리에는 주 파티션과 확장 파티션의 정보가 기록됩니다. 논리 드라이브는 따로 EBR 이라는 공간에 개별적으로 기록됩니다.



이와 같은 MBR 코드의 전체적인 모습을 실제로 헥스 에디터로 살펴보면 아래와 같습니다.

실제 MBR 의 모습



코드를 실제로 보니까 감이 더 잘 잡히죠? 이제 최종적으로 MBR 의 구조를 표로 정리하면 아래와 같습니다.

마스터 부트 레코드의 구조[Structure of a Master Boot Record]
주소설명크기
Bytes
16진수8진수10진수
000000000코드 영역[code area]440
(max. 446)
01B80670440디스크 서명[disk signature (optional)]4
01BC0674444비어 있음[Usually nulls; 0x0000]2
01BE0676446첫 번째 파티션 엔트리 (16Byte)64
두 번째 파티션 엔트리 (16Byte)
세 번째 파티션 엔트리 (16Byte)
네 번째 파티션 엔트리 (16Byte)
01FE077651055hMBR 서명[MBR signature];
0xAA55
2
01FF0777511AAh
MBR, 전체 크기: 446 + 64 + 2 =512



다시 기억이 새록새록 떠오르시나요? 아무튼, MBR 은 그 구조적인 문제 때문에 원래는 하나의 디스크에 최대 네 개의 파티션만을 기록할 수 있습니다. 그게 바로 주 파티션(Primary Partition) 입니다. 주 파티션! 기억하시고요.

그런데 이러한 MBR 의 규격대로라면 하나의 디스크에는 최대 네 개의 파티션만을 생성할 수 있습니다. 그런데 솔직히 말해서 네 개는 조금 부족합니다. 그래서 다시 그 안에 파티션을 나눌 수 있는 특수한 파티션을 하나 만들게 됩니다. 그게 바로 확장 파티션(Extended Partition) 입니다. 이러한 확장 파티션은 하나의 디스크에서 하나만 존재할 수 있는 특성이 있습니다. 확장 파티션! 마찬가지로 기억하시고요.

아무튼, 이와 같이 MBR 에는 최대로 [주 파티션 4 개] 또는 [주 파티션 3 개 + 확장 파티션 1 개] 를 기록할 수 있습니다. 파티션에 대한 정보를 담을 수 있는 파티션 엔트리가 네 개 밖에 없으니까요! 매우 간단한 문제잖아요?


자~ 확장 파티션 이야기가 나왔으니 확장 파티션에 대해서 더 이야기를 해야 겠죠? 확장 파티션은 쉽게 그냥 빈 껍데기 파티션이라고 생각하시면 됩니다. 이 안에 (주 파티션과는 다른) 새로운 파티션을 생성할 수 있다고 영역만 그어 놓은 파티션인 겁니다. 그리고 이렇게 확장 파티션 안에 생성할 수 있는 파티션을 논리 드라이브(Logical Drive)라고 부릅니다.

그런데 논리 드라이브도 파티션이니까 그 정보를 기록해야 겠죠? 하지만 MBR 의 파티션 테이블 엔트리는 주 파티션과 확장 파티션에서 모두 사용했기 때문에(사용할 것이기 때문에) 그곳에 논리 드라이브의 정보를 기록할 수는 없습니다. 그래서 확장 파티션내에 EBR(Extended Boot Record) 라는 것을 두고 논리 드라이브에 대한 정보는 그곳에 따로 기록을 하는 방식을 사용하게 됩니다. 즉, 논리 드라이브는 주 파티션이나 확장 파티션과는 다르게 MBR 에 정보가 기록되는 게 아니라, EBR 이라는 독립된 공간에 따로 기록이 되는 거죠.


이러한 EBR 의 기본적인 구조 자체는 MBR 과 100% 똑같습니다. 단지 코드 영역과 같은 부분들은 필요가 없기 때문에 사용되지 않고, 파티션 테이블 엔트리 부분만 사용할 뿐이죠. 그런데 MBR 의 파티션 테이블 엔트리가 총 네 개 뿐인지라 최대 네 개의 파티션만 생성할 수 있다는 제한이 생겼고, 그로 인해 확장 파티션과 논리 드라이브란 것을 추가로 만들었습니다.

자~ 그럼 여기에서 생각을 해보도록 하겠습니다. 기본적으로 EBR 도 MBR 과 그 구조가 100% 똑같다고 했습니다. 만약 EBR 의 파티션 엔트리를 MBR 과 동일한 방식으로 사용한다면 어떻게 될까요? 마찬가지로 확장 파티션 내에 생성 가능한 논리 드라이브의 개수도 최대 네 개라는 똑같은 제한이 생기겠죠. 기껏 힘들게 확장 파티션과 논리 드라이브라는 개념을 만들어서 파티션 개수의 한계를 극복해보고자 하는데 이러면 또 별로 재미가 없잖아요?

그래서 EBR 은 MBR 과는 다른 방식으로 파티션 엔트리를 사용합니다. 우선 EBR 은 MBR 처럼 하나만 존재하는 게 아닙니다. 논리 드라이브가 생성될 때 함께 생성이 되는 방식입니다. 즉, EBR 은 논리 드라이브의 개수 만큼 존재하게 됩니다. 이러한 상태에서 첫 번째 파티션 엔트리에는 현재 자신과 연결된 논리 드라이브에 대한 정보를 기록하고, 두 번째 파티션 엔트리에는 다음 EBR 의 위치를 기록하는 방식을 사용합니다.

즉, 정리하면 EBR 은 MBR 과 달리 하나만 있는 게 아니라 논리 드라이브의 개수만큼 EBR 이 생성되는 것이고, 앞서의 EBR 에서 다음 EBR 의 위치를 알려주는 방식을 사용합니다. 이처럼 EBR 은 체인과 같이 서로 끊임없이 연결될 수 있고, 이러한 구조로 논리 드라이브는 개수의 제한 없이 원한다면 계속하여 생성할 수 있습니다.

EBR 의 구조
[출처 - 마이크로소프트 테크넷]


이 때 EBR 은 논리 드라이브가 생성될 때 함께 생성이 되기 때문에, 마이크로소프트 테크넷의 자료처럼 EBR 을 그냥 논리 드라이브에 포함된 하나의 구조로 보기도 합니다. 뭐 이건 쉬운 이해를 위해 구조를 어떻게 바라 보느냐 하는 시선의 문제이기 때문에 깊게 생각할 문제는 아니고요. 그저 기본적인 구조는 MBR 과 동일하지만 파티션 테이블 엔트리를 사용하는 방법이 다르다는 것, 하나만 존재하는것이 아닌 논리 드라이브 개수만큼 함께 생성된다는 것, EBR 끼리 서로 연결되는 방식으로 무한히 확장된다는 것, 이 세 가지만 기억하시면 될 듯 합니다.


여기까지가 MBR 과 EBR 의 파티션 테이블 엔트리 정보를 해석하기 위해 기본적으로 알고 있어야 할 내용입니다. 예전에 정리를 끝냈지만 이 글만 보실 분들도 계실 것이기 때문에 다시 한 번 간략하게 정리를 해보았습니다. 그럼 본격적으로 MBR 과 EBR 의 파티션 테이블 엔트리 정보를 어떻게 해석할 것인지, 그것에 대해서 이야기를 해보도록 하겠습니다.






2. MBR 에 위치한 주 파티션에 대한 파티션 테이블 엔트리 정보의 해석

총 6 개의 파티션으로 구성된 예제 디스크
[주 파티션 2 개 + 확장 파티션 1 개 + 논리 드라이브 3 개]


위와 같은 예제 디스크를 준비해봤습니다. 현재 예제 디스크는 총 6 개의 파티션으로 구성이 되어 있죠. 이 중에 주 파티션과 확장 파티션에 대한 정보는 MBR 의 파티션 테이블 엔트리에 기록이 되어 있을 것이며, 세 개의 논리 드라이브에 대한 정보는 함께 생성된 각각의 EBR 에 기록되어 있을 겁니다.

아래는 실제로 위 디스크의 MBR 정보를 헥스 에디터를 통해 살펴본 것입니다. 주 파티션 2 개와 확장 파티션 1 개, 총 세 개의 파티션에 대한 정보가 기록되어 있는 것을 실제로 확인할 수 있습니다.

총 네 개의 파티션 테이블 엔트리 중 3 개의 파티션 테이블 엔트리에 정보가 기록되어 있는 모습.



위의 헥스 에디터를 통해 살펴본 파티션 테이블 엔트리에 기록된 정보를 보기 편하게 다시 글로 정리하면 아래와 같습니다.

첫 번째 파티션 엔트리 정보80 20 21 00 07 FE FF FF 00 08 00 00 00 00 00 05
두 번째 파티션 엔트리 정보00 FE FF FF 07 FE FF FF 00 08 00 05 00 00 C0 03
세 번째 파티션 엔트리 정보00 FE FF FF 0F FE FF FF 00 08 C0 08 00 A0 27 06



최종적으로 이 정보를 해석하기 위해 필요한 파티션 테이블 엔트리의 구조는 아래와 같습니다. 해당 구조에 맞춰서 각 파티션 테이블 엔트리의 정보를 해석하기만 하면 되는 거죠.

16-Byte 로 된 파티션 테이블 엔트리의 구조 (리틀 엔디안)
오프셋필드 길이설명
0x001 Byte파티션 상태 (0x80 = 부팅 가능, 0x00 = 부팅 불가, 기타 = 비정상)
0x013 Byte파티션의 첫 번째 섹터의 실린더-헤드-섹터 주소 [CHS 주소]
0x041 Byte파티션의 종류(형식)
0x053 Byte파티션의 마지막 섹터의 실린더-헤드-섹터 주소 [CHS 주소]
0x084 Byte파티션의 첫 번째 섹터의 LBA 주소
0x0C4 Byte파티션의 크기 (단위: 섹터) [* 전체 섹터의 개수]


여기에서 한 가지 중요한 것은 파티션 테이블 엔트리의 모든 정보는 리틀 엔디안 방식으로 저장이 되어 있다는 것입니다. 그렇기 때문에 정보를 해석할 때도 리틀 엔디안 방식으로 해석을 해야 합니다. 리틀 엔디안과 빅 엔디안이 무엇인지는 각자 알아서 찾아보시도록 하고요. 이 글에서는 따로 설명하지 않도록 하겠습니다.


그럼 글에서는 첫 번째 파티션 테이블 엔트리에 저장되어 있는 첫 번째 주 파티션에 대한 정보를 해석해보도록 하겠습니다.


첫 번째 파티션 엔트리 정보80 20 21 00 07 FE FF FF 00 08 00 00 00 00 00 05





A. 파티션 상태

오프셋필드 길이설명
0x001 Byte파티션 상태 (0x80 = 부팅 가능, 0x00 = 부팅 불가, 기타 = 비정상)

첫 번째 파티션 엔트리 정보80 20 21 00 07 FE FF FF 00 08 00 00 00 00 00 05


해당 파티션이 활성 파티션인지 아닌지를 나타내는 값입니다. 즉, 현재 80 이기 때문에 이 파티션은 부팅할 수 있는 활성 파티션이라는 의미가 됩니다. 만약 일반 파티션이라면 00 의 값을 가지게 됩니다. 간단하죠? 이것에 대해선 더 이야기할 게 없네요.




B. 파티션의 종류

오프셋필드 길이설명
0x041 Byte파티션 종류

첫 번째 파티션 엔트리 정보80 20 21 00 07 FE FF FF 00 08 00 00 00 00 00 05


해당 파티션의 형식(종류)가 무엇인지를 나타내줍니다. 현재 07 값을 가지고 있기 때문에 해당 파티션이 NTFS 파일 시스템이거나 exFAT 파일 시스템일 것이라고 예상할 수 있습니다. 만약에 이 값이 0F 의 값을 가지고 있다면, 해당 파티션은 확장 파티션임을 의미하게 됩니다. 파티션 형식 값에 대한 보다 자세한 정보는 아래의 글들을 참고하시길 바랍니다.






C. 파티션의 시작 위치와 마지막 위치 - CHS 주소 체계

오프셋필드 길이설명
0x013 Byte파티션의 첫 번째 섹터의 실린더-헤드-섹터 주소 [CHS 주소]
0x041 Byte파티션 종류
0x053 Byte파티션의 마지막 섹터의 실린더-헤드-섹터 주소 [CHS 주소]

첫 번째 파티션 엔트리 정보80 20 21 00 07 FE FF FF 00 08 00 00 00 00 00 05


디스크의 처음을 기준으로 파티션이 시작되는 위치와 마지막 끝나는 위치를 CHS 주소 체계로 표현한 값입니다. 즉, 해당 파티션이 정확하게 디스크의 어디부터 어디까지 위치해 있는지 그 영역을 알려주는 정보이죠. 하지만 미리 결론을 말하자면 이 정보는 현재는 실질적으로 그 역할을 제대로 수행하지 못하는 죽은 정보입니다. 이유는 간단합니다. 이미 현대 디스크의 용량이 24bit(3Byte) 의 CHS 주소 체계로 표현할 수 있는 한계를 벗어났기 때문입니다.


그래도 일단 해석은 해보죠. 파티션 테이블 엔트리에서 CHS 주소는 [실린더 10bit, 헤드 8비트, 섹터 6bit] 해서 총 24bit(3Byte) 의 값으로 기록이 되어 있습니다. 그런데 이게 좀 많이 복잡하게 되어 있습니다. 우선 현재 첫 번째 파티션 테이블 엔트리의 파티션 시작 위치 정보인 20 21 00 값을 해석하려면 아래와 같은 구조로 해석하면 됩니다.

202100
001000000010000100000000
001000000010000100000000
헤드(Head)실(C)섹터(Sector)실린더(Cylinder)

000000000000100000100001


어째 예제가 별로 좋지 못한 기분이 들지만 아무튼, 실린더 10bit, 섹터가 6비트, 헤드가 8비트이기 때문에 파티션 엔트리에 저장되어 있는 헥스 값을 비트 값으로 변환하여 풀어헤치고, 이를 다시 위의 구조에 대입하여 각 값을 알아낸 후, 최종적으로 데시멀 값으로 변환하여 CHS 주소 값을 알아내면 됩니다. 이 때  실린더 10bit 값을 조합할 때는 예제에서 21 값의 00 을 값의 가장 앞으로 붙이면 됩니다. [이게 지금 예제가 별로라 좀 헷갈리는데 마지막에 간단하게 다른 예제로 설명을 하도록 하겠습니다.]

아무튼, 현재 나온 CHS 주소의 값을 십진수 값으로 변환하면 CHS 0:32:33 이라는 주소를 최종적으로 얻을 수 있습니다.


하지만 파티션 테이블 엔트리에서 사용하는 총 24bit 의 CHS 주소 체계로 표현 가능한 용량은 2^10 x 2^8 x (2^6 - 1) x 512Byte = 7.88GB 라는 한계를 가지고 있습니다. 즉, 최대 실린더 수 1024(0~1,023), 최대 헤드 수 256(0~255), 최대 섹터 수 63(1~63) 이라는 주소 표현 한계가 존재하기 때문에 디스크에서 7.88GB 를 넘어서는 지점 부터는 파티션 테이블 엔트리에서 CHS 주소로는 표현이 불가능한 것이죠.

그래서 실제로 예제로 살펴 보고 있는 파티션 엔트리에 기록된 해당 파티션의 마지막 섹터 위치인 FE FF FF 값을 해석하게 되면, 십진수 값으로 CHS 1023:254:63 이라는 거의 최대 한계에 근접한 값이 나오게 됩니다.

FEFFFF
111111101111111111111111
111111101111111111111111
헤드(Head))실(C)섹터(Sector)실린더(Cylinder)

111111111111111110111111


이로 인해 실제로는 40GB 짜리 파티션인데 파티션의 마지막 위치는 대략 7.84GB 지점이라는 어처구니 없는 결과가 나오게 됩니다. 이게 바로 제가 처음에 실질적으로 그 역할을 제대로 수행하지 못하는 죽은 정보라고 표현한 이유입니다. 물론 만약에 파티션의 시작 위치와 끝나는 위치가 모두 디스크의 7.84GB 안 지점에 존재한다면 이러한 CHS 주소 값으로도 해당 파티션의 위치를 파악할 수 있습니다. 하지만 현재의 컴퓨팅 환경에선 사실상 그러한 경우가 드물기 때문에 결론적으로 현대에 와서는 이러한 파티션 엔트리의 CHS 주소 값들은 실제로는 사용되지 않는 죽은 값이 되었다고 보아도 좋은 것입니다.

그래서 같은 이유로 파티션 엔트리를 잘 살펴보면 대부분의 파티션 엔트리에서 파티션의 시작 위치와 마지막 위치를 나타내는 CHS 주소 값이 한계 값인 FE FF FF 값을 가지고 있는 것을 확인할 수 있습니다. 말한 것과 같이 디스크의 7.84GB 를 넘어서는 지점은 CHS 주소로 표현할 수 없기 때문에 발생하게 되는 현상입니다.

사실상 현대의 디스크에서 CHS 주소 체계는 명맥만 남았다고 보셔도 좋습니다. 이제는 LBA 주소 체계가 사용되고 있고, 파티션 엔트리에서도 파티션의 시작 위치와 마지막 위치를 파악하는데에도 바로 뒤에서 알아 볼 LBA 주소 정보를 대신 사용하게 됩니다.


여담이지만 CHS 주소 체계는 디스크의 기본 주소 지정 체계가 LBA 주소 체계로 전환되면서 사라졌어야 했지만, 기존의 CHS 주소 체계를 사용하던 프로그램들과의 호환성을 위해 어쩔 수 없이 그 구조만이 남아서 현재까지 오고 있는 것입니다. 그래서 현재 사용되는 CHS 주소 체계는 실린더당 헤드의 개수 값은 255 로, 트랙당 섹터의 개수 값은 63 으로 고정한 채 실린더의 값을 한없이 늘린 형태로 사용하고 있습니다.


참고로 CHS 주소를 LBA 주소로 변환하는 방법은 아래와 같습니다.

LBA = ((실린더 값 x 실린더당 헤드 개수 + 헤드 값) x 트랙당 섹터 개수) + 섹터 값 - 1

말한 것과 같이 현재의 CHS 주소 체계는 실린더 당 헤드의 개수는 255 개로, 트랙당 섹터의 개수는 63 개로 고정한채 실린더 값을 계속하여 늘린 형태이기 때문에 위에서 살펴본 첫 번째 파티션 엔트리의 파티션 시작 위치인 CHS 0:32:33 주소를 LBA 주소로 변환하면 ((0 x 255 + 32) x 63 ) + 33 - 1 = 2,048 하여 LBA 2,048 값이 나오게 됩니다. 참고로 알아두시길 바랍니다.

※ 파티션 엔트리의 CHS 주소 파악하기 다른 예제

파티션 엔트리 정보00 4B 82 0A 07 D5 89 8C 00 08 80 00 00 00 20 00

4B820A
010010111000001000001010
010010111000001000001010
헤드(Head))실(C)섹터(Sector)실린더(Cylinder)

100000101001001011000010


* 파티션의 시작 위치 (CHS 주소) :: 실린더 1000001010 : 헤드 01001011 : 섹터 000010 → CHS 522:75:2
 
   CHS to LBA 변환 :: ((실린더 값 x 실린더당 헤드 개수 + 헤드 값) x 트랙당 섹터 개수) + 섹터 값 - 1
   ((522 x 255 + 75) x 63 ) + 2 - 1 = 8,390,656

* 파티션의 시작 위치 (LBA 주소) :: 00 08 80 0000 80 08 00 → Hex 800800 → Dec 8,390,656

* CHS 주소 정보를 통해 변환한 LBA 값과 LBA 주소 정보의 값이 일치하는 것을 확인.





D. 파티션의 시작 위치 - LBA 주소 체계

오프셋필드 길이설명
0x084 Byte파티션의 첫 번째 섹터의 LBA 주소

첫 번째 파티션 엔트리 정보80 20 21 00 07 FE FF FF 00 08 00 00 00 00 00 05


디스크의 처음을 기준으로 파티션이 시작되는 위치를 LBA 주소 체계로 표현한 값입니다. 즉, 앞서의 CHS 주소 정보 때와 마찬가지로 해당 파티션의 영역이 정확하게 디스크의 어느 지점에서 시작하는지를 알려주는 정보이죠. 그런데 LBA 주소 정보에서는 앞서 살펴본 CHS 주소 정보와는 다르게 오직 파티션이 시작하는 위치만을 알려주는데요. 이는 파티션의 시작 위치를 알고 파티션의 정확한 크기를 알면 파티션이 끝나는 지점은 간단하게 계산할 수 있기 때문에, 굳이 파티션이 끝나는 지점까지 LBA 주소로 표현할 필요는 없다고 판단한 모양입니다. [아니 그럼 CHS 주소 정보도 그런 식으로 했으면 되잖아? 라고 물어 보실 분들! 이런 자료를 해석할 때마다 항상 하는 말이지만, 이거 제가 설계한 거 아닙니다. 그러니 저에게 딴지 걸지 마세요. 전 다른 놈들이 십수년 전에 이미 만들어 놓은 것을, 단순히 해석하는 위치에 있을 뿐입니다.]

LBA 주소는 CHS 주소처럼 복잡한 구조를 가지고 있지 않고, 논리적으로 모든 섹터를 일렬로 정렬시켜놓고 차례로 번호를 매긴 매우 간단한 주소 체계이기 때문에, 파티션 엔트리에 저장되어 있는 00 08 00 00 값을 그대로 해석하면 됩니다.

해당 값은 리틀 엔디안 방식이기 때문에 역순으로 읽으면 됩니다. 즉, 00 00 08 00 값이 그대로 LBA 주소가 되는 것이죠. 앞의 0 값들은 빈 값이기 때문에 떼어버리면 800 이라는 헥스 값만 남죠. 이를 십진수 값으로 변환하게 되면 LBA 2,048 값이 나오게 됩니다.

즉, 해당 파티션은 2,048 번째 섹터에서 시작하는 것이고, 이를 용량 단위로 해석하면 섹터 하나의 크기는 512Byte 이기 때문에 해당 파티션은 디스크의 2,048 x 512Byte = 1MB 지점에서 시작하는 게 되는 것이죠. 프로그램에 따라서 '파티션의 시작 섹터가 2,048 섹터이다.' 또는 '파티션의 오프셋은 1MB 지점이다.' 라고 달리 표현하기도 합니다. 그냥 참고로 알아 두시고요.

아래는 이렇게 구한 LBA 2,048 (Logical Sector 2,048) 지점을 실제로 헥스 에디터를 통해 살펴본 모습입니다. 부트 섹터(NTFS 파티션이기 때문에 정확하게는 VBR) 의 모습이 보이네요. 이를 통해 파악한 파티션의 시작 지점이 정확한 것을 확인할 수 있습니다.

파티션의 시작 지점에 정확하게 위치해있는 부트 섹터(VBR)의 모습





E. 파티션의 크기 - 파티션에 포함된 전체 섹터의 개수

오프셋필드 길이설명
0x0C4 Byte파티션의 크기 (단위: 섹터) [* 전체 섹터의 개수]

첫 번째 파티션 엔트리 정보80 20 21 00 07 FE FF FF 00 08 00 00 00 00 00 05


마지막으로 해당 파티션이 총 몇 개의 섹터로 이루어져 있는지 파티션에 포함된 전체 섹터의 개수를 표현한 정보입니다. 이를 통해 해당 파티션의 정확한 크기를 파악할 수 있습니다. 단순한 개수 정보이기 때문에 간단하게 00 00 00 05 라는 값 자체를 해석하면 그게 그대로 섹터의 개수가 됩니다.

역시나 리틀 엔디안 방식이기 때문에 해석할 땐 역순인 05 00 00 00 으로 파악하면 됩니다. 헥스 값 5,000,000 을 그대로 십진수 값으로 변환하면 83,886,080 개가 됩니다. 즉, 해당 파티션은 총 83,886,080 개의 섹터로 이루어져 있는 것이죠. 섹터 하나의 용량은 512Byte 이기 때문에, 이를 계산하면 [83,886,080 x 512Byte = 42,949,672,960Byte = 41,943,040KB = 40,960MB = 40GB] 가 되죠. 즉, 해당 파티션의 크기는 40GB 인 것을 알 수 있습니다. 간단하죠?

이제 여기에서 덤으로 앞서 구한 파티션의 시작 위치에 이곳에서 구한 전체 섹터의 개수를 더한 후 1 을 빼면 파티션의 마지막 지점에 대한 섹터 위치도 파악이 가능합니다. 즉, 2,048 + 83,886,080 - 1 = LBA 83,888,127 지점이 바로 해당 파티션이 끝나는 위치인 것이죠. 간단하죠?






3. MBR 에 위치한 확장 파티션 정보를 통해 EBR 의 위치를 파악하고 해석하기

이번엔 논리 드라이브에 대한 정보가 담겨 있는 EBR 을 살펴보도록 하겠습니다. 먼저 알아두셔야 할 것은 EBR 정보는 MBR 에 기록된 확장 파티션에 대한 정보와 함께 봐야 한다는 겁니다. 예제에서 확장 파티션은 MBR 의 세 번째 파티션 엔트리에 기록되어 있었습니다. 이 때 모든 정보의 해석은 주 파티션 때와 동일하게 해석하시면 됩니다.

세 번째 파티션 엔트리 정보00 FE FF FF 0F FE FF FF 00 08 C0 08 00 A0 27 06


확장 파티션의 시작 지점은 00 08 C0 08 이죠. 해당 지점을 찾으면 바로 그곳에 첫 번째 EBR 이 있습니다. 마찬가지로 리틀 엔디안 방식이기 때문에 역순으로 읽으면 08 C0 08 00 이 됩니다. 이를 십진수 값으로 변환하면 LBA 146,802,688 값이 나오죠. 해당 지점이 바로 확장 파티션이 시작되는 지점이고, 그곳에 바로 첫 번째 EBR 이 위치하고 있습니다.

확장 파티션의 시작 지점에 정확하게 위치해있는 EBR 의 모습.


EBR 에선 첫 번째 파티션 엔트리와 두 번째 파티션 엔트리만이 사용되기 때문에 굉장히 휑하죠? 여기에서 첫 번째 파티션 엔트리의 정보는 바로 해당 EBR 과 연결된 논리 드라이브에 대한 정보(Current Entry)이고, 두 번째 파티션 엔트리의 정보는 다음 EBR 의 위치를 나타내는 정보(Next Entry)입니다.

그런데 이러한 EBR 의 정보를 해석할 때에는 미리 알아두셔야 할 굉장히 중요한 내용이 있습니다.

1. Current 엔트리에서 LBA 시작 위치는 현재 자기 자신(EBR)의 위치를 기준으로 합니다. 나머지는 MBR 때와 동일합니다.
2. Next 엔트리에서 다음 EBR 의 위치는 확장 파티션의 시작 위치를 기준으로 합니다.


현재 첫 번째 EBR 에서 Current 와 Next 엔트리의 정보는 아래와 같습니다.

Current 엔트리 정보00 FE FF FF 07 FE FF FF 00 08 00 00 00 00 80 02
Next 엔트리 정보00 FE FF FF 05 FE FF FF 00 08 80 02 00 08 40 01

자~ Current 엔트리에서 현재 EBR 과 연결된 논리 드라이브의 시작 위치는 00 08 00 00 라고 나오네요. 리틀 엔디안 방식으로 해석하면 00 00 80 00 해서 헥스 값으로 800 이 나오고, 이를 십진수 값으로 변환하면 2,048 이 됩니다. 그런데 이는 현재 EBR 의 위치, 즉 자기 자신의 위치를 기준으로 한 위치라고 했죠?

그래서 최종적으로 첫 번째 논리 드라이브의 시작 위치는 현재 EBR 의 위치 값에 이렇게 나온 값을 더해주어야 합니다. 현재 EBR 은 첫 번째 EBR 이기 때문에 확장 파티션의 시작 위치와 동일합니다. 그래서 최종적으로 아래와 같이 나오게 됩니다.

146,802,688 + 2,048 = LBA 146,804,736

첫 번째 논리 드라이브의 시작 지점(부트 섹터, VBR) 모습


이제 파티션의 종류라던가, 파티션의 크기와 같은 Current 엔트리에서 나머지 정보는 MBR 때와 동일하게 해석하시면 됩니다.


다음으로 Next 엔트리에 기록되어 있는 두 번째 EBR 의 위치는 00 08 80 02 이죠. 리틀 엔디안 방식으로 해석하면 02 80 08 00 해서 최종적인 십진수 값으로는 41,945,088 이 됩니다. 그런데 이 값은 확장 파티션의 시작 위치를 기준으로 한다고 했습니다. 그래서 확장 파티션의 시작 위치 값에 이 값을 더해주면 다음 EBR 의 위치를 파악할 수 있습니다.

146,802,688 + 41,945,088 = LBA 188,747,776

두 번째 EBR 의 모습


그러면 위와 같이 두 번째 논리 드라이브에 대한 정보가 담겨 있는 두 번째 EBR 의 모습을 확인할 수 있습니다. 이제 두 번째 EBR 의 Current 와 Next 엔트리 정보를 확인해보면 아래와 같습니다.

Current 엔트리 정보00 FE FF FF 07 FE FF FF 00 08 00 00 00 00 40 01
Next 엔트리 정보00 FE FF FF 05 FE FF FF 00 10 C0 03 00 08 40 01


역시나 또 계산을 해보도록 하겠습니다. 두 번째 논리 드라이브의 시작 위치인 00 08 00 00 정보는 다시 한 번 말하지만 현재 EBR 의 위치를 기준으로 한다고 했습니다. 아무튼, 00 00 08 00 으로 해석하여 십진수 값으로 변환하면 2,048 이고, 여기에 현재 EBR 의 위치를 더해주면 되는 것이죠.

188,747,776 + 2,048 = LBA 188,749,824

두 번째 논리 드라이브의 시작 지점(부트 섹터, VBR) 모습


다음으로 Next 엔트리에 기록되어 있는 세 번째 EBR 의 위치는 00 10 C0 03 값을 가지고 있습니다. 03 C0 10 00 으로 해석하여 십진수 값으로 변환하면 62,918,656 이 나옵니다. 반복하여 계속 말하게 되지만 Next 엔트리의 다음 EBR 위치는 확장 파티션의 시작 지점을 기준으로 한다고 했습니다. 그래서 확장 파티션의 시작 위치 값에 현재 구한 값을 더해주면 세 번째 EBR 의 위치가 나오게 됩니다.

146,802,688 + 62,918,656 = LBA 209,721,344

세 번째(마지막) EBR 의 모습


좀 헷갈리지만 잘 생각해보면 그래도 간단하죠? 이제 이렇게 확인한 세 번째 EBR 은 마지막 EBR 이기 때문에 Current 엔트리는 정보가 있지만, Next 엔트리는 비어 있는 것을 확인할 수 있습니다. 만약 이 상태에서 네 번째 논리 드라이브를 생성한다면 동시에 네 번째 EBR 이 생성되며, 바로 이 EBR 의 Next 엔트리에도 다음 네 번째 EBR 의 위치가 기록되는 겁니다.


이와 같은 방식으로 EBR 은 이전 EBR 정보와 연계되어 계속 새롭게 생성되는 방식으로 운영되기 때문에, 논리 드라이브의 생성 개수는 이론적으로 무한히 생성될 수 있는 것입니다. EBR 의 정보 해석에 대해서는 이정도면 될 듯 합니다.






4. 마치며...

현재 글에서 사용한 디스크의 정보를 확인할 수 있는 헥스 에디터는 아래의 무료 헥스 에디터 프로그램을 사용하였습니다.



그리고 Hexadecimal - Decimal - Octadecimal - Binary 값의 변환에는 작고 가벼운 아래의 프로그램을 추천합니다. 참고로 헥스 값을 변환할 때에는 대소문자를 주의하시길 바라며, 값을 입력하실 때에는 소문자로 입력하시면 됩니다.



그럼 도움이 되셨길 바라며, 이번 글은 여기까지 하도록 하겠습니다. 이상입니다. ^^