ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory.