2014-09-03 8 views
1

나는 MFT에서 파일 정보를 검색하는 작업을하고 있습니다. MFT 레코드에는 표준 정보, 파일 이름, 데이터 및 몇 가지 다른 속성에 관한 정보가 있습니다. MFT 레코드를 구문 분석하여 포함 된 모든 세부 정보를 얻으려고 시도했습니다. 모든 파일에 대해 파일 이름, 데이터 (대체 스트림의 데이터 포함)를 얻을 수는 있지만 이름이 지정된 대체 데이터 스트림의 파일 이름을 가져올 수 없습니다. 테스트를 위해 데이터가 들어있는 두 개의 대체 스트림이있는 파일을 만들었습니다. 파일에 해당하는 MFT 레코드를 구문 분석 할 때 대체 스트림 이름을 식별 할 수 없었습니다. 대체 스트림 이름이 MFT에 저장되지 않는다는 의미입니까? 그러면 stream.exe와 같은 일부 유틸리티는 대체 스트림 이름을 어떻게 식별합니까?대체 데이터 스트림 이름에 대한 MFT 정보

답변

1

속성을 직접 파싱하는 경우 공통 머리글에서 속성 이름의 오프셋을 찾을 수 있습니다. 오류의 머리글에 WORD 값이 있습니다 (내가 here이라고 알았을 때) 속성의 오프셋 0x0A에 있습니다. 오프셋은 속성의 이름을 가리 킵니다. (하지 상주, 실제 데이터가 그렇지 않은 경우 데이터 실행) 일반 헤더 필드에 저장된 속성 길이 일치해야 속성 헤더 크기 + 속성의 길이가 데이터의 +를 길이의 이름 (0x04 오프셋).

Windows API를 사용하는 경우 파일에 FindFirstStreamW 함수를 사용하여 스트림을 가져올 수 있습니다. 일반적으로 스트림의 이름을 포함하는 WIN32_FIND_STREAM_DATA 구조체를 반환합니다.