Были представлены в 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 для взаимодействия с другими файловыми системами.
Поддержка альтернативных потоков данных (AltDS) была добавлена в NTFS для совместимости с файловой системой HFS от Macintosh, которая использовала поток ресурсов для хранения иконок и другой информации о файле. Использование AltDS скрыто от пользователя и не доступно обычными средствами. Проводник и другие приложения работают со стандартным потоком и не могут читать данные из альтернативных. С помощью AltDS можно легко скрывать данные, которые не могут быть обнаружены стандартными проверками системы. Эта статья даст основную информацию о работе и определении AltDS.C:\>echo Just a plan text file>sample.txtC:\>type sample.txt
Just a plan text file
C:\\>echo You can"t see me>sample.txt:secret.txt
C:\ more < sample.txt:secret.txt
C:\ notepad sample.txt:secret.txt
C:\>md stuff
C:\>cd stuff
C:\stuff>echo Hide stuff in stuff>:hide.txt
C:\stuff>dir
Volume in drive C has no label.
Volume Serial Number is 40CC-B506Directory of C:\stuff
09/28/2004 10:19 AM.
09/28/2004 10:19 AM…
0 File(s) 0 bytes2 Dir(s) 12,253,208,576 bytes free
C:\stuff>notepad:hide.txt
C:\WINDOWS>type notepad.exe>test.txt:note.exe
C:\WINDOWS>type test.txt
Test
C:\WINDOWS>start .\test.txt:note.exe
C:\WINDOWS>
UPD:
LADS - List Alternate Data Streams by Frank Heyne
www.heysoft.de/Frames/f_sw_la_en.htm
Streams.exe from SysInternals.
Вы слышали что-нибудь о потоках NTFS ? Весьма интересная функциональность файловой системы, которой можно найти практическое применение. Сегодня поговорим о том, что это и как этим можно пользоваться.
Для начала немного теории
.
Поддержка альтернативных потоков данных была добавлена в NTFS
для совместимости с файловой системой HFS от Macintosh, которая использовала поток ресурсов для хранения иконок и другой информации о файле. Они присутствуют в NTFS
еще с самых ранних версий Windows NT
. Суть технологии в том, что у файла на NTFS
может быть несколько потоков, содержащих данные. Проводник
и большинство популярных файловых менеджеров ограничены работой лишь сглавным потоком
(не имеющим имени), представляющим собой основное содержимое файла. Потоки могут использоваться для хранения метаданных файла, таким образом они использовались в Windows 2000
, насколько мне известно.
В Windows 7
альтернативные потоки NTFS
, наличествующие у файла, штатными средствами не увидеть. И напрасно: адски хитрые вирусы, например, могут писать себя в потоки какого-нибудь вполне безобидного файла. Удалив файл с потоками, содержащими объёмные данные можно обнаружить, что места освободилось значительно больше, чем занимал файл по мнению Проводника
.
Для просмотра имеющихся потоков мы будем пользоваться консольной утилитой , созданной небезызвестным Марком Руссиновичем.
Некоторые консольные команды позволяют создать и отобразить содержимое потока
NTFS
, например команда echo
может позволить создать альтернативный поток для текстового файла. Чтобы было понятно, как это работает, рассмотрим пример. Введите следующее в командой строке:
echo Hello Happy Bulldozer > hello.txt
echo Hello World > hello.txt:test
А теперь откройте файл hello.txt в Блокноте:
Текст Hello World
остался "за кадром", находясь в потоке с именем test
. Если указать в имени открываемого файла и имя потока, открыть файл в потоке не получится: двоеточие - недопустимый символ для названия файла. Однако, можно воспользоваться командной строкой, которая несколько лояльней и позволит выполнить вот такую команду:
more < hello.txt:test
Просмотр потоков NTFS
, как я писал выше, можно выполнить через утилиту streams.exe
streams.exe hello.txt
Я полагаю, тут всё понятно.
Продвинутые программы вроде справятся без особых усилий и отобразят вам содержимое потока:
Стандартный Блокнот будет приписывать расширение txt к имени потока. Если вы хотите использовать его, потоки именовать надо следующим образом:
echo Hello World > hello.txt:test.txt
Тогда выполненная из cmd.exe команда даст положительный результат:
notepad hello.txt:test.txt
У вас может сложится мнение, что область применения альтернативных потоков NTFS не простирается дальше текстовых файлов. Это не так. В следующем примере я добавил к файлу hello.txt поток, содержащий данные архива 7z:
Отмечу, что потоки можно создавать не только для файлов, но и для папок и даже для разделов жесткого диска.
Всё ограничено вашей личной фантазией и потребностями. Используя описанные приёмы, можно легко спрятать личную информацию от неподготовленного пользователя, например. Некая разновидность защиты от дурака, если хотите.
DIR /B C:\WINDOWS\System32\*.SCR
DIR /B C:\WINDOWS\System32\*.* |FIND /i ".SCR"
Опишите подробно назначение параметров каждой команды (помните, что для каждой команды можно вызвать справку ключом /?). Обратите внимание на тот факт, что одинаковые ключи могут иметь различное действие для разных команд.
Файловая система NTFS поддерживает файловые потоки – альтернативные потоки данных. Фактически файловые потоки представляют собой объединение нескольких файлов в одну группу с одним общим именем файла (у каждого потока своё дополнительное имя). В группе существует основной поток данных, с которым большинство программ работают как с файлом, и дополнительные именованные потоки, не отображающиеся обычными средствами. При файловых операциях копирования, переноса, удаления и т.п., в NTFS операция производится над всей группой. При использовании некоторых архиваторов и копировании файлов, содержащих альтернативные потоки, на раздел FAT, эти потоки могут быть утеряны. Технически альтернативные потоки применяются для дополнения файла информацией без изменения содержания основного потока и без создания дополнительных файлов, которые могут быть утеряны.
Альтернативные потоки используются антивирусами для сохранения информации о файле («отпечатка», контрольной суммы) для детектирования изменения файла во времени. Клиенты системы обмена файлами Direct Connect (DC++) могут сохранять результаты хеширования (вычисление контрольных сумм) для больших файлов, которые используются в случае перемещения файла при повторном хешировании, что существенно ускоряет обновление списка.
В перспективе программы библиотек, фильмотек и аудиотек могут использовать альтернативные потоки для хранения совместно с документами потоков обложек, аудиодорожек, описания, причём на различных языках. Альтернативные потоки позволяют прикреплять «секретные» данные, что представляет собой потенциальную опасность.
Просмотреть информацию о потоках можно командой STREAMS 25 , программой NTFS Stream Explorer26 , с помощью модулей расширения файловых менеджеров27 , в Windows 7 командаdir /r выводит список всех потоков для указанных объектов (с командой также dir можно использовать дополнительные ключи).
При сохранении файлов из интернета по умолчанию файлу в NTFS добавляется поток Zone.Identifier 28 , который имеет формат ini-файла, и обычно содержит текст:
Параметр ZoneId с числом означает зону, откуда прибыл файл на компьютер, номер зоны берётся из настроек зон безопасности (Панель управления /Свойства обозревателя (Сеть и интернет/ Свойства брау-
зера )/ вкладкаБезопасность ). Допустимы следующие значения29 : 0 – локальный компьютер
1 – интранет (локальная сеть, домен)
2 – доверенный источник
3 – интернет
4 – недоверенный источник
При значении 3 система выдаст предупреждение «Не удаётся прове-
рить издателя. Вы действительно хотите запустить эту программу?»,
внизу сообщения установлен флажок «Всегда спрашивать при открытии этого файла », снятие которого удаляет потокZone.Identifier . ЕслиZoneId содержит значение 4, то появится предупреждение «Эти файлы нельзя открыть. Параметры безопасности Интернета не позволили открыть
25 Streams (http://technet.microsoft.com/ru-ru/sysinternals/bb897440)
26 NTFS Stream Explorer, программа для работы с потоками NTFS (http://hex.pp.ua/ntfs-stream-explorer.php )
27 NTFS File Information
(http://forum.farmanager.com/viewtopic.php?t=2050)
28 Отключить создание блокирующего потока для файлов можно в редакторе локальной групповой политики (gpedit.msc): Конфигурация пользо-
вателя/ Административные шаблоны/ Компоненты Windows/ Диспетчер вложений/ Удаление сведений о зоне происхождения вложений.
29 Поток Zone.Identifier (http://hex.pp.ua/Zone.Identifier.php)
один или несколько файлов » и открытие файлов блокируется. При открытии в проводнике окнаСвойства для файла, полученного из интернета, внизу вкладкиОбщие появляется кнопкаРазблокировать и
надпись « Осторожно: этот файл получен с другого компьютера и, возможно, был заблокирован с целью защиты компьютера», нажатие кнопки Разблокироватьудаляет поток Zone.Identifier.
С помощью обозревателя интернет скачайте файл STREAMS.zip (можете скачать любой небольшой файл, указав его имя в команде далее), сохраните его в корневую папку диска F:, просмотрите содержимое потокаZone.Identifier командой:
MORE < F:\Streams.zip:Zone.Identifier
Откройте в проводнике окно Свойства (Alt+Enter или командаСвойства контекстного меню) для скачанного файла, на вкладке Общие нажмите кнопкуРазблокировать , в консоли повторите предыдущую команду.
Создайте тестовый файл, командой, перенаправляющей текст оператора вывода текста, добавьте альтернативный поток, просмотрите результат:
ECHO Main text > F:\M.TXT
ECHO Hidden text > F:\M.TXT:Secret.TXT
TYPE F:\M.TXT
MORE < F:\M.TXT:Secret.TXT
Альтернативный текстовый поток можно загрузить в блокнот:
NOTEPAD F:\M.TXT:Secret.TXT
Альтернативные потоки можно создавать также у папок и системных файлов30 .
Потоки также используются для хранения расширенных атрибутов31 .
30 Скрытое хранение данных в потоках файла $Repair в системном каталоге $RmMetadata (http://hex.pp.ua/RmMetadata.php )
31 Расширенные атрибуты NTFS и FAT16
(http://hex.pp.ua/extended-attributes.php) 53
Файловая система NTFS обладает множеством интересных возможностей, одной из которых является наличие альтернативных потоков данных (Alternate Data Stream, ADS). Суть их в том, что каждый файл в NTFS представляет из себя набор потоков, в которых хранятся данные. По умолчанию все данные находятся в основном потоке, но при необходимости к файлу можно добавлять дополнительные, альтернативные потоки данных.
Примечание. Альтернативные потоки данных в NTFS появились давным-давно, еще в Windows NT. Созданы они были для совместимости с файловой системой HFS, использующейся тогда на MacOS. HFS хранила данные о файле в специальном ресурсном потоке.
Файлы в NTFS поделены на атрибуты, одним из которых является $DATA, или атрибут данных. Потоки же являются дополнительными свойствами атрибута $DATA. По умолчанию существует один, основной поток$DATA:″″ . Как видите, он не имеет названия, поэтому зовется неименованным . Также при желании можно создавать дополнительные, именованные потоки, напр. $DATA:″Stream1″ . У каждого файла в NTFS может несколько потоков данных, содержащих различные, никак не связанные между собой данные.
Все данные, записываемые в файл, по умолчанию попадают в основной поток данных. Когда мы открываем файл, то видим именно основной поток, альтернативные же потоки скрыты от пользователя и не отображаются с помощью обычных средств. Их нельзя увидеть стандартными способами, хотя некоторые программы умеют читать скрытые в них данные. Также для работы с потоками можно использовать командную строку.
Для примера откроем консоль и с помощью команды echo создадим текстовый файл streams.txt и запишем в него текст:
echo This is main stream>streams.txt
А следующей командой запишем текст в альтернативный поток stream1:
echo This is alternate stream>streams.txt:stream1
Если теперь открыть файл streams.txt в любом текстовом редакторе, то мы увидим только первую запись, текст «This is alternate stream» останется скрытым. Прочитать скрытую в потоке stream1 информацию можно командой:
more Альтернативные потоки можно добавлять не только к отдельным файлам, но и к директориям. Для примера добавим альтернативный поток stream2, содержащий текст «Hide stream in Streams», к текущей директории Streams: echo Hide stream in Streams>:stream2 И выведем поток stream2 следующей командой: more <:stream2 Содержимое альтернативных потоков можно открывать не только в консоли. К примеру Блокнот (Notepad) тоже умеет обращаться к скрытым в потоках данным, если в имени файла через двоеточие указать имя альтернативного потока. Повторим предыдущий пример, немного изменив название потока на stream1.txt: echo This is alternate stream>streams.txt:stream1.txt И откроем альтернативный поток в блокноте командой: notepad streams.txt:stream1.txt Примечание.
Стандартный Блокнот требует расширение txt в названии потока, иначе он не сможет его открыть. Более продвинутые редакторы, например тот же Notepad++, могут показывать содержимое альтернативного потока вне зависимости от его названия. Наличие альтернативных потоков у файла никак не отображается в Проводнике и других файловых менеджерах. Для того, чтобы их найти, самый простой способ - это воспользоваться командой dir /R
(начиная с Windows Vista), которая показывает все потоки данных, в том числе и альтернативные. Вам может показаться, что применение альтернативных потоков ограничено текстовыми данными. Это совсем не так, и в альтернативных потоках можно хранить абсолютно любую информацию. Для примера создадим файл picture.txt и добавим к нему поток pic1.jpg, в который поместим одноименное изображение: echo Picture>picture.txt Таким образом, внешне мы имеем обычный текстовый файл, а для открытия изображения из альтернативного потока в графическом редакторе Paint воспользуемся командой: mspaint picture.txt:pic1.jpg Подобным образом можно добавлять к любым типам файлов любые данные - к текстовым файлам добавлять изображения, к медиафайлам добавлять текстовую информацию и т. п. Что интересно, альтернативное содержимое не увеличивает видимый размер файла, к примеру добавив к 1кБ текстовому файлу HD-видео на 30Гб, проводник все равно покажет размер файла 1кБ. Еще в альтернативные потоки можно прятать исполняемые файлы. К примеру возьмем файл test.txt и добавим приложение Блокнот (notepad.exe) в альтернативный поток note.exe: type notepad.exe>test.txt:note.exe А для запуска скрытого блокнота воспользуемся командой: start .\test.txt:note.exe Кстати этой возможностью пользуются некоторые вредоносные программы, добавляя исполняемый код в альтернативные потоки NTFS. Для работы с альтернативными потоками существует несколько сторонних утилит, например консольная утилита Streams от Sysinternals. Она может определять наличие альтернативных потоков и удалять их. Утилита не требует установки, достаточно распаковать ее и запустить. Для примера проверим наличие потоков в папке Streams командой: Streams.exe -s C:\Streams И удалим альтернативные потоки из файла streams.txt: Streams.exe -d C:\Streams\streams.txt PowerShell также умеет работать с альтернативными потоками - создавать, обнаруживать, выводить их содержимое и даже удалять. Для примера создадим текстовй файл: New-Item -Type file -Path C:\Streams\stream.txt Добавим запись в основной поток: Set-Content -Path C:\Streams\stream.txt -Value ″Main stream″ И в альтернативный поток с именем Second: Set-Content -Path C:\Streams\stream.txt -Value ″Second stream″ -Stream Second Затем выведем содержимое основного Get-Content -Path C:\Streams\stream.txt и альтернативного потоков: Get-Content -Path C:\Streams\stream.txt -Stream Second Для того, чтобы обнаружить наличие альтернативных потоков, можно воспользоваться командой: Get-Item -Path C:\Streams\stream.txt -Stream * А удалить лишние потоки можно командой: Remove-Item -Path C:\Streams\streams.txt -Stream * Альтернативные потоки используется как самой Windows, так и некоторыми программами. К примеру, Internet Explorer делит сеть на 4 зоны безопасности и при загрузке файлов добавляет к ним метки, которые содержат информацию о зоне, из которой они были загружены. Метки эти хранятся в альтернативном потоке и представляют из себя число от 0 до 4: Интернет (3) Чтобы убедится в этом, перейдем в папку загрузок, возьмем файл, загруженный из интернета и проверим его на наличие альтернативных потоков. Как видите, в нем присутствует поток с именем Zone.Identifier
, в котором есть строка ZoneID=3
. Это значит, что файл относится к недоверенной зоне Интернет, и при его открытии надо быть осторожным. Некоторые программы, например Word, считывают эти данные при открытии файла и выдают соответствующее предупреждение. Также инфраструктура классификации файлов (File Classification Infrastracture, FCI) основана на использовании альтернативных потоков. Из сторонних программ альтернативные потоки используют некоторые антивирусные программы, в частности антивирус Касперского хранит в них контрольную сумму, полученную в результате проверки. Впрочем, применение альтернативных потоков этим не ограничивается, вы сами можете придумать для них любое применение. К примеру, с их помощью можно спрятать от посторонних глаз личную информацию. Файлы, содержащие альтернативные потоки, можно свободно копировать или переносить с диска на диск, все потоки будут скопированы вместе с файлом. И еще, при использовании альтернативных потоков надо помнить, что они жестко привязаны к файловой системе NTFS. Для того, чтобы использовать их, файлы должны располагаться на дисках с NTFS, соответственно работать с ними можно только из под Windows. Если же переместить файл на любую другую файловую систему, то все потоки кроме основного будут потеряны. Также альтернативные потоки обрезаются при передаче файлов по FTP или при пересылке в качестве почтового вложения. Еще: ADS позволяет добавлять любые файлы к другим файлам и даже каталогам (!). Сама ОС этим периодически пользуется, добавляя к скаченным из интернетов файлам поток «Zone.Identifier» Zone.Identifier можно, кстати, править, дабы избавиться от предупреждений «этот файл скачан из интернета. Открыть в безопасном режиме?». Добавить поток к любому файлу можно так: попытаться обнаружить запустить exe так: если на сработало, то так: Вот это, к примеру, привяжет калькулятор к корневому диску С (!) и запустит его через ссылку
type pic1.jpg>picture.jpg:pic1.jpgУтилита Streams
PowerShell
Использование
Местная сеть (1)
Надежные сайты (2)
Опасные сайты (4)
Локальный компьютер (0)
Взято с http://windowsnotes.ru/other/alternativnye-potoki-dannyx-v-ntfs/
ADS — встроенная фишка файловой системы NTFS, которую никак нельзя выключить.
type file1 > file2:file3
dir /r
start file2:file3
mklink file4 file2:file3
start file4