나는 MFT에서 파일 정보를 검색하는 작업을하고 있습니다. MFT 레코드에는 표준 정보, 파일 이름, 데이터 및 몇 가지 다른 속성에 관한 정보가 있습니다. MFT 레코드를 구문 분석하여 포함 된 모든 세부 정보를 얻으려고 시도했습니다. 모든 파일에 대해 파일 이름, 데이터 (대체 스트림의 데이터 포함)를 얻을 수는 있지만 이름이 지정된 대체 데이터 스트림의 파일 이름을 가져올 수 없습니다. 테스트를 위해 데이터가 들어있는 두 개의 대체 스트림이있는 파일을 만들었습니다. 파일에 해당하는 MFT 레코드를 구문 분석 할 때 대체 스트림 이름을 식별 할 수 없었습니다. 대체 스트림 이름이 MFT에 저장되지 않는다는 의미입니까? 그러면 stream.exe와 같은 일부 유틸리티는 대체 스트림 이름을 어떻게 식별합니까?대체 데이터 스트림 이름에 대한 MFT 정보
1
A
답변
1
속성을 직접 파싱하는 경우 공통 머리글에서 속성 이름의 오프셋을 찾을 수 있습니다. 오류의 머리글에 WORD
값이 있습니다 (내가 here이라고 알았을 때) 속성의 오프셋 0x0A
에 있습니다. 오프셋은 속성의 이름을 가리 킵니다. (하지 상주, 실제 데이터가 그렇지 않은 경우 데이터 실행) 일반 헤더 필드에 저장된 속성 길이 일치해야 속성 헤더 크기 + 속성의 길이가 데이터의 +를 길이의 이름 (0x04
오프셋).
Windows API를 사용하는 경우 파일에 FindFirstStreamW 함수를 사용하여 스트림을 가져올 수 있습니다. 일반적으로 스트림의 이름을 포함하는 WIN32_FIND_STREAM_DATA 구조체를 반환합니다.