NTFS альтернативные потоки данных - PullRequest
16 голосов
/ 27 ноября 2009

Сегодня я видел, что эта странная волшебная система NTFS поддерживает: каждый файл может иметь несколько потоков данных. В основном можно иметь файл a.txt размером 0b, но в отдельном потоке данных для этого файла может быть скрыто любое количество байтов. Это волшебство, строго связанное с NTFS, и я не вижу какой-либо благородной причины иметь эти потоки вокруг Вы можете искать потоки NTFS с помощью утилиты streams от Sysinternals. Это покажет вам, что в основном каждый из этих неприятных thumbs.db файлов имеет дополнительный поток данных.

Хорошо, теперь я видел эту магическую работу в системе Windows NT4, потоки добавлялись в файлы, копировались, удалялись (с помощью вышеупомянутой утилиты), но сейчас я пытаюсь это сделать дома в своей системе Win XP , но хотя я могу обнаружить существующие потоки, я не могу отобразить их содержимое, не могу создать новые или что-либо еще, когда использую синтаксис filename:streamname.

Я получаю эту ошибку:

Имя файла, имя каталога или неверный синтаксис метки тома.

Пример: Вывод из утилиты потоков:

c:\DOWNLOADS>streams.exe -s .

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

c:\DOWNLOADS\1013.pdf:
   :Zone.Identifier:$DATA       46

c:\DOWNLOADS>type 1013.pdf:Zone.Identifier
The filename, directory name, or volume label syntax is incorrect.

Почему я не могу отобразить содержимое альтернативного потока данных?

Глядя на документацию Microsoft " Как использовать альтернативные потоки данных NTFS ", я вижу, что это применимо к моей операционной системе, хотя они упоминают, что эти потоки не будут поддерживаться в будущем , Кто-нибудь может пролить свет на это?

Ответы [ 6 ]

21 голосов
/ 27 ноября 2009

Из головы в голову: Потоки данных NTFS были введены в Windows NT 4.0 и были у всех потомков (исключая потомков win-95: 98, Me). В XP, Vista и Win 7 они все еще существуют. Пока версии Windows поддерживают NTFS, они будут поддерживать файловые потоки. Они будут поддерживать NTFS еще долго.

Ваша ошибка описана на странице, которую вы показываете в своем вопросе. Команда type не понимает потоки. Использование:

more < 1013.pdf:Zone.Identifier

Работа с потоками

Microsoft имеет только несколько команд, которые работают с потоками, на самом деле, только <, > работают с потоками, и, таким образом, могут использоваться только те команды, которые могут работать с этими операторами перенаправления. Я написал пару сообщений в блоге о альтернативных потоках данных о том, как вы все еще можете управлять потоками только с помощью этих команд.

Потоки будут работать только с программами, предназначенными для работы с ними, просто потому, что с ними нужно обращаться особым образом (сравните точки соединения, также особенность NTFS, но драйвер скрывает детали, и программы не должны ничего делать особенное: они просто считают точку соединения настоящим файлом).

Когда вы пытаетесь открыть поток файлов, используя start filename:streamname, и программа говорит что-то вроде «недопустимое имя файла» или «файл не найден», и вы уверены, что имя потока правильное, то, вероятно, программа делает не поддерживает потоки. Я заметил, что Notepad, Wordpad и Word / Excel правильно работают с потоками, хотя Word и Excel считают файлы опасными. Вот некоторые эксперименты , которые вы можете попробовать.


ПРИМЕЧАНИЕ: вы, похоже, считаете альтернативные потоки данных странными. Они странные, потому что они настолько скрыты, но многие основные файловые системы (HFS, NSS) имеют его, и концепция восходит к началу 80-х годов. Фактически, первоначально потоки были добавлены в NTFS для взаимодействия с другими файловыми системами.

8 голосов
/ 30 ноября 2009

Кстати, вы можете открыть AltDataStream с помощью блокнота:

notepad.exe 1013.pdf:Zone.Identifier

Также вы можете указать тип AltDataStream (не только с помощью Блокнота, это «полное имя потока»):

1013.pdf:Zone.Identifier:$DATA
7 голосов
/ 28 сентября 2010

Это волшебство, строго связанное с NTFS

Не так - в Mac OS они были с того времени, в этом мире они называются вилками , и вы бы использовали ResEdit, чтобы получить их. классическое использование из них состоит в объединении медиаресурсов вместе с исполняемым файлом.

6 голосов
/ 27 ноября 2009

Одна возможная цель для альтернативного потока: метаданные. Для документа можно добавить большое описание, не затрагивая содержание исходного файла.

3 голосов
/ 26 июля 2012

Win32 API отлично справляется с наименованием альтернативных потоков.

CMD, с другой стороны, делает какой-то прикольный разбор имени файла, когда возможно иметь * /? расширение и barfs, когда присутствует ":". Вот почему копирование и ввод не удаются, но простое перенаправление работает.

2 голосов
/ 19 мая 2011

Ошибка буквально означает, что она не распознается как альтернативный поток данных, а указанная вами ссылка содержит определенный символ, который не допускается в имени пути (:; другие символы, не допускаемые, включают \\, / и т. Д.).

Попробуйте:

start this_is_a.txt:ads.exe

...