-
[FileSystem] FAT - Directory Entry$ Wargame $/$ digital forensic $ 2020. 1. 27. 13:53
LFN Format 으로 저장되어 있는 파일을 제시해 주고 거기에 저장 되어 있는 파일의 이름을 맞추는 것이 문제입니다.
먼저 우리가 공부할 LFN File 이 어떤 파일인지를 알아봐야 합니다.
이전에 포스팅했었던 디렉터리 엔트리 분석 [Directory Entry Analysis] 글에 나와있는 LFN Format 문제입니다.
하지만 그당시에는 유니코드 관련 내용을 넣지 않았는데, 문제에서는 유니코드를 다루고 있습니다.
해당 파일을 HxD로 열어보겠습니다.
LFN File 구별 가능한 0x42라는값이 적혀있는것같습니다.
위에는 SYSTEM~1 이라고 되어있고,
그리고 아래는 어떤 이상한 값에 ~1HWP 라고 되어 있습니다.
일단 ~1 이라고 적힌 이유는 파일명이 8바이트를넘어가면 ~1 이라고 적고 다른곳에 이름을 표기합니다.
또한 LFN File 은 32바이트 씩 인식을 합니다.
위의 파일 구조를 표로 변환해 보겠습니다.
먼저 0xA0에 "문자열~1HWP" 라는 문자열이 있기 때문에 해당 라인에서 32바이트 위에있는 0x80이 먼저 선으로 FileName1이 되는 것입니다.
파일 이름의 길이에 따라 유동적으로 32바이트를 기준으로 값이 커지기도하고 작아지기도 합니다.
위의 구조에서는 파일이름이 좀 길어서 0x60 ~ 0x9F 까지 사용했지만 이보다 더 길어지면 32*N 만큼의 크기가 커지게 되는것 입니다.
FileName1 중에서도 가장 처음을 의미하는 0x81~0x82의 문자열을 변환해보면 아래와 같습니다.\
이런식으로 유니코드 이므로 리틀엔디안 방식임을 고려해서 변환이 가능합니다.
모든 FileName Data 를 변환해 보겠습니다.
아래는 변환 python 코드입니다.
결과는 아래와 같습니다.
Flag : 파일이름이 생각보다 길다아아아아.hwp
'$ Wargame $ > $ digital forensic $' 카테고리의 다른 글
[FileSystem] FILE Record - Fixup Array (0) 2020.01.29 [FileSystem] FILE Record - Filename, Contents (0) 2020.01.29 [FileSystem] Hash this file (0) 2020.01.27 [Network] FTP - file upload (0) 2020.01.27