Альтернативные потоки данных 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:\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", я вижу, что это относится к моей операционной системе, хотя они упоминают, что эти потоки не будут поддерживаться в будущем. Кто-нибудь может пролить свет на это?
Ответы
Ответ 1
В верхней части головы: NTFS datastreams были представлены в 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 для взаимодействия с другими файловыми системами.
Ответ 2
Кстати, вы можете открыть AltDataStream с помощью блокнота:
notepad.exe 1013.pdf:Zone.Identifier
Кроме того, вы можете указать тип AltDataStream (не только с помощью Notepad, но и "полное имя потока" ):
1013.pdf:Zone.Identifier:$DATA
Ответ 3
Это строго связанная с NTFS магия
Не так - у Mac OS были эти с тех пор еще в тот же день, они называются forks в этом мире, и вы должны использовать ResEdit, чтобы добраться до них. классическое использование из них заключается в объединении медиа-активов вместе с исполняемым файлом.
Ответ 4
Одна возможная цель для альтернативного потока: метаданные. Можно добавить для документа большое описание, не затрагивая содержимое исходного файла.
Ответ 5
Win32 API отлично справляется с именами альтернативных потоков.
CMD, с другой стороны, делает некоторый фанковый анализ имени файла, когда возможно иметь */? расширение и barfs, когда присутствует ":". То, что копируются и печатаются, но выполняется простое перенаправление.
Ответ 6
Ошибка в буквальном смысле означает, что она не распознается как альтернативный поток данных, а ссылка, которую вы создаете, содержит определенный символ, который недопустим в имени пути (:
; другие недопустимые символы включают \\
, /
и т.д.).
Try:
start this_is_a.txt:ads.exe