Коротко — это возможно. NTFS хранит отображение виртуальных кластеров файла (VCN) в логические кластеры на диске (LCN). Чтобы получить соответствие «файл → кластеры/сектора», можно:
1) Встроенными средствами Windows
- fsutil (требуются права администратора).
- Узнать параметры ФС (байт в кластере и т. п.):
fsutil fsinfo ntfsinfo C:
- Получить список экстентов (отображение VCN→LCN) для файла:
fsutil file queryextents C:\путь\к\файлу
Выход показывает начальный VCN, следующую VCN/длину и начальный LCN — по ним можно вычислить физический смещение.
2) Порядок вычисления сектора/смещения
- Получите BytesPerCluster (из fsutil fsinfo ntfsinfo) и StartingOffset раздела (в байтах):
- PowerShell: (Get-Partition -DriveLetter C).StartingOffset
- или Disk Management / diskpart
- Формулы:
- Смещение в байтах = LCN * BytesPerCluster + PartitionStartingOffset
- Номер сектора (LBA) = Смещение в байтах / BytesPerSector
(BytesPerSector обычно 512 или 4096; узнаётся через Get-Disk / свойства диска.)
3) Программы/утилиты для Windows (GUI / CLI)
- fsutil — встроенная CLI (см. выше).
- Sysinternals DiskView — графическое отображение распределения кластеров на томе; можно искать файлы и подсвечивать соответствующие кластеры.
- Sysinternals Contig — утилита для дефрагментации, в режиме вывода отображает экстенты файла.
- nfi.exe (NTFS File Sector Info) — старый инструмент из комплектов MS/Resource Kit, показывает MFT-запись и соответствие кластеров.
- WinHex / X-Ways Forensics / FTK Imager / R-Studio / Active@ Disk Editor и др. — форензик/hex-редакторы, которые умеют читать MFT и переводить файл в физические адреса (LCN/LBA).
- Коммерческие утилиты восстановления/анализа дисков (например, DMDE, DiskInternals) — часто показывают список кластеров файла и позволяют перейти к сектору.
4) Программный путь
- Если нужно автоматизировать — использовать DeviceIoControl с кодом FSCTL_GET_RETRIEVAL_POINTERS (WinAPI). Это даёт VCN→LCN для заданного дескриптора файла. Можно вызвать из C/C++/C#/.NET/PowerShell (P/Invoke) или взять готовые скрипты с GitHub.
5) Замечания и ограничения
- Требуются права администратора.
- Для сжатых/сжатых NTFS-файлов, sparse-файлов и некоторых случаев отображение может быть «логическим» (файл может храниться не подряд или быть фрагментирован/сжат), и преобразование в физические сектора сложнее.
- Если сектор физически повреждён, chkdsk /r покажет информацию о сбоях и пометит плохие сектора, но не всегда напрямую свяжет конкретный файл с конкретным сектором — лучше сначала получить LCN файла, затем вычислить LBA и сверить с отчётом SMART / утилитой проверки поверхности.
Если хотите, могу:
- Привести точные примеры команд и пример вывода fsutil и показать, как посчитать LBA на вашем диске;
- Подготовить PowerShell-скрипт, который по пути файла вернёт список LCN и LBA.