Альтернативные потоки данных NTFS

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

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

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

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

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

c:DOWNLOADS>streams.exe -s .

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

c:DOWNLOADS13.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 ответов


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

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

more < 1013.pdf:Zone.Identifier

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

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

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

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


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


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

notepad.exe 1013.pdf:Zone.Identifier

кроме того, вы можете указать тип AltDataStream (не только с Блокнотом, это "полное имя потока"):

1013.pdf:Zone.Identifier:$DATA

это строго связанная с NTFS магия

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


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


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

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


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

попробуй:

start this_is_a.txt:ads.exe