Файловая система 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 так: если на сработало, то так: Вот это, к примеру, привяжет калькулятор к корневому диску С (!) и запустит его через ссылку Были представлены в 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 для взаимодействия с другими файловыми системами. Видимо-невидимо Читатель блога Виктор не смог запустить скачанный из Интернета скрипт PowerShell. Внимательное чтение моих инструкций позволяло избежать проблемы, но корень ее был вовсе не в строгих политиках безопасности PowerShell. Виктор скачал из галереи TechNet архив со скриптом PSWindowsUpdate.zip для управления Windows Update, о котором я рассказывал . Однако распакованный скрипт отказывался работать. Когда я подсказал читателю, что в первом пункте моих инструкций говорится о необходимости разблокировать архив, все пошло как по маслу. Виктор попросил объяснить, почему система заблокировала скрипт, и откуда она знает, что архив был скачан с другого компьютера. Честно говоря, сегодняшняя тема не нова, но я решил осветить ее в своем блоге по нескольким причинам: Windows черпает сведения об источнике файла из альтернативного потока данных (alternate data stream, далее ADS) файловой системы NTFS. В свойствах файла она скромно пишет, что он с другого компьютера, но на деле знает чуть больше, как вы увидите дальше. С точки зрения NTFS, файл – это набор атрибутов . Содержимое файла – это атрибут данных с именем $DATA. Например, текстовый файл со строчкой “Hello, World!” обладает атрибутом данных “Hello, World!” В NTFS атрибут $DATA является потоком данных и называется основным или безымянным, потому что… не имеет имени. Формально он выглядит так:
$DATA:""
В контексте примеров выше я хочу отметить несколько любопытных моментов. Создав первой командой текстовый файл, вы можете открыть его в текстовом редакторе и убедиться, что все дальнейшие манипуляции никак не влияют на содержимое файла. Интересно становится, когда файл открыт, скажем, в Notepad++. Этот редактор умеет предупреждать об изменениях файла. И он сделает это, когда вы запишете в файл альтернативный поток, однако содержимое при этом останется прежним! ADS можно создавать и отображать из командной строки. Следующие команды записывают скрытый текст во второй ADS с именем MyStream2, а затем отображают его. Echo Hidden Text > C:\temp\test.txt:MyStream2
more < C:\temp\test.txt:MyStream2
Тот же Notepad++ покажет вам содержимое ADS, если указать название потока в командной строке
"C:\Program Files (x86)\Notepad++\notepad++.exe" C:\temp\test.txt:MyStream1
Результат: С блокнотом такой фокус пройдет только в том случае, если в конце имени потока есть .txt
. Команды ниже добавляют третий ADS и открывают его в блокноте. Echo Hidden Text > C:\temp\test.txt:MyStream3.txt
notepad C:\temp\test.txt:MyStream3.txt
Результат: Давайте вернемся к вопросу, который задал мне читатель. Будет ли файл блокироваться зависит в первую очередь от программы, в которой он был скачан, а во вторую — от параметров ОС. Так, все современные браузеры поддерживают блокировку, и она включена в Windows. Помните, что когда заблокирован архив, все распакованные файлы будут заблокированы «по наследству». Также не забывайте, что ADS — это функция NTFS, т.е. при сохранении или распаковке архива на FAT32 никакой блокировки не происходит. В PowerShell перейдите в папку со скачанным файлом и посмотрите информацию обо всех потоках. Get-Item .\PSWindowsUpdate.zip -Stream *
FileName: C:\Users\Vadim\Downloads\PSWindowsUpdate.zip
Stream Length
------ ------
:$DATA 45730
Zone.Identifier 26
Как вы уже знаете, $Data – это содержимое файла, но в списке фигурирует еще и ADS Zone.Identifier
. Это прозрачный намек на то, что файл получен из какой-то зоны. Знаете, откуда эта картинка? Чтобы выяснить зону, надо прочесть содержимое ADS. Get-Content .\PSWindowsUpdate.zip -Stream Zone.Identifier
ZoneId=3
Очевидно, он нацелен на пакетную разблокировку (например, когда архив уже распакован). Команда ниже разблокирует в папке Downloads все файлы, содержащие в имени PS
: Dir C:\Downloads\*PS* | Unblock-File
Конечно, существуют всякие утилиты с графическим интерфейсом, даже умеющие интегрироваться в контекстное меню. Но, на мой взгляд, PowerShell или на худой конец streams вполне достаточно. За блокировку отвечает групповая политика Не хранить сведения о зоне происхождения вложенных файлов . Из названия следует, что блокировка является стандартным поведением Windows, а политика позволяет его изменить. Однако из названия неочевидно, что политика распространяется не только на почтовые вложения, но и скачанные из Интернета файлы. Подробнее о диспетчере вложений читайте в KB883260 . В домашних изданиях редактора групповых политик нет, но реестр никто не отменял: SaveZoneInformation.zip . Область применения ADS не ограничивается добавлением зоны скачанного файла, равно как вовсе необязательно хранение в ADS только текста. Любая программа может задействовать эту функцию NTFS для хранения каких угодно данных, поэтому я приведу лишь пару примеров из разных областей. Интересный материал, спасибо. Узнал что-то новое про PowerShell, который мне всё ещё мало знаком:) Для общения с семьёй чаще использую WhatsApp — пока с этим сервисом было меньше всего проблем, даже родители там освоились. Контактик тоже в основном для семьи, хотя там обмен сообщений в основном вокруг публикуемых альбомов с фото и видео. Некоторые родственники хранят верность Viber — у меня с ним не сложилось как-то, держу просто для них, не оставляя попыток перетащить и их в WhatsApp. Для работы в основном Slack, когда что-то срочное — WhatsApp, очень срочное — SMS. ВКонтакте для общения по работе с внешним миром. Skype использую только для видеозвонков, в основном с семьей опять же. С удовольствием заменил бы его на WhatsApp, будь там видеозвонки. urix
В Viber теперь появились видеозвонки, и даже видеозвонки для десктопной версии. Так что может быть, Viber станет следующим скайпом… в хорошем смысле Андрей Кузнецов
Материал интересный, спасибо. Я знал про существование потоков, но не знал, что с ними так просто работать через PowerShell. Андрей Кузнецов
: А переписка через Whatsapp. Наличие его только на телефоне скорее плюс, с точки зрения конфиденциальности. Андрей, поясните, в чем тут плюс Павловский Роман
1. Пользуюсь чаще всего: Skype и Hangouts — по работе на ПК, по остальной переписке «ВКонтакте» с любого устройства, так как клиенты по работе обычно сидят на Скайпе, а друзья и знакомые в Соц.Сетях. 2. Хотел бы пользоваться в идеале: Jabber — для переписки и звонков с любых устройств. Как по мне, клиент можно установить на любое устройство и переписываться, где бы не находился пользователь, даже на слабом Интернет-соединении + к этому можно развернуть свой jabber-сервер и хранить всю переписку на сервере, чтобы потом можно было быстро найти нужную переписку, если клиент не умеет хранить историю, а плагины для звонков через jabber можно будет найти (например, через тот же SIP Asterisk 1.8+) Андрей Баятаков
Чаще всего пользуюсь WhatsApp (в основном по работе), для звонков (аудио/видео/международные звонки) Skype. Хотя десктопный Skype ужасно бесит (у меня трансформер и дома я им пользуюсь в основном как планшетом)… Viber — не прижился. Чтобы звонить через WhatsApp нужно иметь просто железные нервы. Скажешь что-нибудь собеседнику и ждешь минуту-две когда он тебя услышит (подключение 50Mbit)… Maxim
1. Скрепя сердце пользуюсь ICQ (для заказчиков-ретроградов) и Slack (для более современных). Владимир Кирюшин
Здравствуйте Вадим! Lecron
Какие браузеры и программы-даунлоадеры создают этот поток? Какие еще есть варианты использования потоков самим пользователем? И в частности, пользователем скриптописателем? Так как, хоть и знал про них давно, ни разу не использовал. При реальной работе с компом про них просто не вспоминаешь, и из-за этого, возможно городишь костыли, вместо удобного инструмента, а без этой работы, по памяти, ничего придумать не получается. Speed Guru
Очередная мусорная технология наподобие USN журнала. Много ли вам будет пользы от ZoneIdentifier или от вируса, прикреплённого к фалу или папке? Конечно нет. Более того — это захламление системы лишними, ни коим образом не нужными нормальному пользователю «подфайлами». Каждое лишнее чтение в каталоге MFT и прочие операции, сопутствующие обслуживанию и содержанию альтернативных потоков, это лишние затраченные циклы процессора, оперативной памяти, а самое главное лишняя нагрузка на жёсткий диск. Alexiz Kadev
Именованные потоки — штука отличная, причем существовала, насколько я помню с первого релиза NTFS. В именованных потоках достутаочно удобно хранить, например, версии документа, что если я не ошибаюсь ряд приложений и делали. Но остается засада с копированием на другую файловую систему — именованные потоки просто отрезаются. Жаль в голосовалке нельзя было выделить несколько мессенджеров: я пользуюсь несколькими, поскольку некоторые мои контакты предпочитают какие-то определённые. Так, я использую WhatsUp, ICQ(правда, конечно, не родной клиент),Skype, SkypeforBusiness (тихий ужас, а не клиент, впрочем когда он назывался Lync был ещё хуже) и Viber (вот тут спама больше чем в других как минимум раз в 5). VSh
Vadim Sterkin
: Роман, я не включил Jabber в опрос. Решил, что им мало кто пользуется и перспектив нет. Зря Поэтому у меня основной это XMPP (Pidgin.exe, Spark.exe), но 99.8% из этих сообщений — внутридоменные. Артем
У меня все почему-то в вайбере. И качество связи вполне устраивает. А так телеграмм бы. Да пусто там. hazet
1. Skype (на ПК) и Viber (на Мобиле). Причины в основном как и у большинства — количество имеющихся контактов и естественно нежелание этих самых контактов, пересесть на другой мессенджер. Евгений Карелов
Cпасибо Вам за Вашу работу! Касательно опроса, на ПК для переписки использую QIP 2012, к которому подключены контакты ICQ, ВКонтакте и другие. Лично мне удобно, использовать для общения по нескольким протоколам одну программу. Да и возможность просматривать ленты соцсетей из одного места очень радует. В идеале, не хватает только поддержки Skype, который я использую для голосовой связи, но она явно не появится. strafer
Интересная мешанина из темы поста про потоки данных и опроса по IM. По опросу: Jabber/Jabber, который вы таки зря не включили в список, хотя там есть вотсап, основанный на XMPP, и даже идущая к успеху асечька. Jabber в общем-то решает все указанные проблемы ввиду открытости протокола, наличия клиентов под множество платформ и наличия серверов, которые можно поднимать самостоятельно. Но кактусы жевать традиционнее, да. В списке клиенты, а не протоколы. strafer
Vadim Sterkin
: В списке клиенты, а не протоколы. Из-за того, что протокол и исходные коды официального клиента закрыты, устанавливается закономерная тождественность между единственным клиентом и протоколом. Vadim Sterkin
: ICQ… ну, я не стал там смайлики ставить, ибо должно быть и так понятно. Гнилой мейлрушечке недостаточно того, что асечька умирает естественной смертью - они ещё и дополнительные усилия прилагают, чтобы она быстрее загнулась. Vadim Sterkin
: Jabber точно не решает одну проблему - там никого нет. Тем не менее для Telegram вы же сами написали выглядит здорово, но там пусто (что поправимо) Jabber имел все шансы стать тем же, чем сегодня является экосистема e-mail (полная открытость протокола, возможность поднимать свои сервера кому угодно и обеспечивать взаимодействие между серверами и т.д.), но корпорациям это не нужно, что отлично видно на примере отхода от него гугла или проприентизирования вотсапа. Для Telegram — поправимо, для Jabber — очень маловероятно. Поэтому первый есть в списке, а второго — нет. strafer
Конечно, Telegram - стильно, модно, молодёжно, а Jabber никто прикольный вроде Паши Дурова не двигает. Какие уж тут перспективы. Гм… да вылезите вы уже из своего танка теорий заговора «весь мир против свободного ПО». Все намного проще
Если непонятно, так выглядит для человека первый опыт взаимодействия с официально рекомендуемым клиентом Jabber на самой распространенной мобильной платформе. strafer
Немного не понял, где в моём комментарии про заговор. Да везде:) Вы пытаетесь списать неудачи jabber на немодность и немолодежность, в то время как его клиенты с первого экрана не приспособлены для современной реальности. А что я должен увидеть на скриншоте? Предложение ввести номер телефона ~~~O~ strafer
strafer
: Вы пытаетесь списать неудачи jabber на немодность и немолодежность Ну так если оно так. strafer
: в то время как его клиенты с первого экрана не приспособлены для современной реальности. Т.е. к нынешней моде, такой как разглашение своего номера телефона всем подряд. Ибо я не понимаю, зачем его вводить, если он не нужен для работы системы, как по мне так совершенно прекрасно, что его тут не просят. Собственно я отказался от асечьки, несмотря на несколько оставшихся там контактов, именно по этой причине - мейрушечка в ультимативной форме потребовала привязать номер телефона к учётке, вследствие чего была послана по известным координатам. Да, не понимаете, даже после объяснений с картинками… Это не мода, это единственный способ максимально упростить регистрацию с мобильных устройств, составляющих основу аудитории современных мессенджеров и единственный источник для ее роста. strafer
На скриншоте запрос на имя, пароль и опциональный ник. Куда сильнее упрощать-то? Или кроме учащихся коррекционных школ уже не осталось больше резервов для роста аудитории, и надо чтоб была одна кнопка «сделать за*сь»? Вы слышали что-нибудь о потоках NTFS
? Весьма интересная функциональность файловой системы, которой можно найти практическое применение. Сегодня поговорим о том, что это и как этим можно пользоваться. Для начала немного теории
. В Windows 7
альтернативные потоки NTFS
, наличествующие у файла, штатными средствами не увидеть. И напрасно: адски хитрые вирусы, например, могут писать себя в потоки какого-нибудь вполне безобидного файла. Удалив файл с потоками, содержащими объёмные данные можно обнаружить, что места освободилось значительно больше, чем занимал файл по мнению Проводника
. Некоторые консольные команды позволяют создать и отобразить содержимое потока
NTFS
, например команда echo
может позволить создать альтернативный поток для текстового файла. Чтобы было понятно, как это работает, рассмотрим пример. Введите следующее в командой строке: А теперь откройте файл hello.txt в Блокноте: Текст Hello World
остался "за кадром", находясь в потоке с именем test
. Если указать в имени открываемого файла и имя потока, открыть файл в потоке не получится: двоеточие - недопустимый символ для названия файла. Однако, можно воспользоваться командной строкой, которая несколько лояльней и позволит выполнить вот такую команду: Просмотр потоков NTFS
, как я писал выше, можно выполнить через утилиту streams.exe Продвинутые программы вроде справятся без особых усилий и отобразят вам содержимое потока: Стандартный Блокнот будет приписывать расширение txt к имени потока. Если вы хотите использовать его, потоки именовать надо следующим образом: У вас может сложится мнение, что область применения альтернативных потоков NTFS не простирается дальше текстовых файлов. Это не так. В следующем примере я добавил к файлу hello.txt поток, содержащий данные архива 7z: Отмечу, что потоки можно создавать не только для файлов, но и для папок и даже для разделов жесткого диска. Всё ограничено вашей личной фантазией и потребностями. Используя описанные приёмы, можно легко спрятать личную информацию от неподготовленного пользователя, например. Некая разновидность защиты от дурака, если хотите. В данной теме я рассмотрю четыре вида метаданных, которые могут быть прикреплены к файлу или каталогу средствами файловой системы NTFS
. Я опишу, в каких целях можно использовать тот или иной тип метаданных, приведу пример его применения в какой-либо технологии Microsoft или стороннем программном обеспечении. Речь пойдёт о точках повторной обработки (reparse points), идентификаторах объектов (object id) и о других типах данных, которые может содержать файл помимо своего основного содержимого. Идентификаторы объектов существуют в NTFS со времён Windows 2000. В самой системе они используются для отслеживания расположения файла, на который ссылается ярлык (.lnk). Допустим, файл, на который ссылается ярлык, был перемещён в пределах тома. При запуске ярлыка он всё равно откроется. Специальная служба Windows в случае, если файл не найден, произведёт попытку открыть файл не по его имени, а по заранее созданному и сохранённому идентификатору. Если файл не был удалён и не покидал пределы тома, он откроется, а ярлык снова будет указывать на файл. Идентификаторы объектов использовались в технологии iSwift Антивируса Касперского 7-ой версии. Вот как описана эта технология: Технология разработана для файловой системы NTFS. В этой системе каждому объекту присваевается NTFS-индентификатор. Этот индентификатор сравнивается с значениями специальной базы данных iSwift. Если значения базы данных с NTFS-индентификатором не совпадают, то объект проверяется или перепроверяется, если он был изменен.
Впрочем, переизбыток созданных идентификаторов вызывал проблемы со сканированием диска стандартной утилитой проверки chkdsk, она происходила слишком долго. В следующих версиях Антивируса Касперского отказались от использования NTFS Object Id. Какие типы точек повторной обработки существуют? Перечислю технологии, в которых используются reparse point"ы. Это Single Instance Storage (SIS) и Cluster Shared Volumes в Windows Storage Server 2008 R2, Hierarchical Storage Management, Distributed File System (DFS), Windows Home Server Drive Extender. Это технологии Microsoft, здесь не упомянуты технологии сторонних компаний, использующие точки повторной обработки, хотя такие тоже есть. Использовались в технологии iStream Антивируса Касперского. Используются в самой Windows, например при скачивании файла из интернета к нему прицепляется поток Zone.Identifier, содержащий информацию о том, из какого места получен данный файл. После запуска исполняемого файла пользователь может увидеть сообщение «Не удаётся проверить издателя. Вы действительно хотите запустить эту программу?»
. Так пользователю даётся дополнительная защита от необдуманного запуска программ, полученных из интернета. Это лишь одно применение потоков, а так в них можно хранить самые разные данные. Упомянутый Антивирус Касперского хранил там контрольные суммы каждого файла, но позже от этой технологии тоже по какой-то причине отказались. Просмотр содержимого object id, точек повторной обработки, а также работа с расширенными атрибутами и альтернативными файловыми потоками возможна с помощью программы
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Работа с потоками
Сегодня в программе
Потоки данных NTFS
Интересные особенности альтернативных потоков данных
Невидимые изменения
Запись и просмотр ADS из CMD
Просмотр ADS в текстовых редакторах
Блокировка скачанных файлов
Просмотр сведений об источнике заблокированного файла
Как предотвратить блокировку файлов
Другие примеры практического применения ADS
Инфраструктура классификации файлов
Об авторе
Что касается IM: К скайпу у меня есть нарекания только по времени запуска на Windows Phone. На ipad и Windows такой проблемы нет. Использую для голосовой связи, когда по каким-то причинам неудобно использовать GSM.
А переписка через Whatsapp. Наличие его только на телефоне скорее плюс, с точки зрения конфиденциальности.
Была бы возможность перешел бы совсем на Skype. На Windows 10 Mobile после недавнего обновления сообщения из Skype приходят прямо во встроенное приложение Сообщения (как СМС), что очень удобно.
2. Хотел бы пользоваться Jabber - по тем же причинам, что у Романа Павловского выше.
Прочитал перед этой статьёй вашу статью про то, как прочитать отчёт проверки всего системного диска командой chkdsk . Отличная статья! Благодаря ей сегодня после поверки командой chkdsk системного диска я получил текстовый файл отчёта. А эта статья тоже много чего проясняет в программе PowerShell. Кое-что мне пенсионеру бывает непонятно, но я стараюсь не паниковать и читаю усердно до конца. Спасибо вам за учёбу,которую вы с нами проводите! Всего Вам хорошего!
Сообразил только об одном варианте. Комментарий к файлу, если нет возможности или желания писать длинный текст в имя файла. Но для этого нужна поддержка со стороны файл менеджера, который раньше, да и сейчас, пишет их в descript.ion или files.bbs.
Вы можете сказать мне что эта технология очень нужна системе. Но это чушь — система отлично работала бы и без потоков. Но пользователя никто не спрашивает — впарили (как USN журнал) и возможности полностью отключить ведение этих потоков не дали. А ведь мне как пользователи они вовсе не нужны, думаю как и вам…
Всё что мы можем сделать это «streams -s -d %systemdrive%». Но и это не даёт возможности удалить потоки на системном разделе.
А в идеале использовать какой-то один, типа Миранды с плагинами, поскольку найти в случае необходимости, кто где когда что-то говорил/писал во всей этой куче просто нереально. Но увы, ряд производителей закрывают свои протоколы и оберегают их как Кащей свою иголку.
Я, например, использую OpenFire (freeware xmpp) как офисный коммуникатор на нескольких доменах.
Skype — для внешних IM
WhatsApp и Viber — для «случайных связей», последние n месяцев только СПАМ, думаю — не удалить ли?
2.uTox. Миниатюрный, ничего лишнего, клиент для Win, Linux, Mac и Android. Позиционируется как защищенный.
P.S. ЩаЗ займусь перетягиванием своих контактов на него поплотней:-)
Хотя эта программа и выглядит «заброшенной», ибо обновлений уже давно не было, возложенные функции выполняет прекрасно.
ICQ… ну, я не стал там смайлики ставить, ибо должно быть и так понятно.
Jabber точно не решает одну проблему — там никого нет.
Зачем тут вообще номер телефона и что мессенджер должен с номером телефона делать?
Поддержка альтернативных потоков данных была добавлена в NTFS
для совместимости с файловой системой HFS от Macintosh, которая использовала поток ресурсов для хранения иконок и другой информации о файле. Они присутствуют в NTFS
еще с самых ранних версий Windows NT
. Суть технологии в том, что у файла на NTFS
может быть несколько потоков, содержащих данные. Проводник
и большинство популярных файловых менеджеров ограничены работой лишь сглавным потоком
(не имеющим имени), представляющим собой основное содержимое файла. Потоки могут использоваться для хранения метаданных файла, таким образом они использовались в Windows 2000
, насколько мне известно.
Для просмотра имеющихся потоков мы будем пользоваться консольной утилитой , созданной небезызвестным Марком Руссиновичем.Как создать альтернативный поток NTFS
echo Hello Happy Bulldozer > hello.txt
echo Hello World > hello.txt:test
more < hello.txt:test
streams.exe hello.txt
Я полагаю, тут всё понятно.Альтернативные потоки NTFS и Блокнот
echo Hello World > hello.txt:test.txt
Тогда выполненная из cmd.exe команда даст положительный результат:
notepad hello.txt:test.txtАльтернативные потоки NTFS и файлы различных типов
Идентификатор объекта
это 64 байта, которые можно прикрепить к файлу или каталогу. Из них первые 16 байт позволяют однозначно идентифицировать файл в пределах тома и обращаться к нему не по имени, а по идентификатору. Остальные 48 байт могут содержать произвольные данные.Reparse Point
В файловой системе NTFS файл или каталог может содержать в себе reparse point, что переводится на русский язык как «точка повторной обработки»
. В файл или каталог добавляются специальные данные, файл перестаёт быть обычным файлом и обработать его может только специальный драйвер фильтра файловой системы.
В Windows присутствуют типы reparse point, которые могут быть обработаны самой системой. Например, через точки повторной обработки в Windows реализуются символьные ссылки (symlink) и соединения (junction point), а также точки монтирования томов в каталог (mount points).
Reparse-буфер, присоединяемый к файлу это буфер, имеющий максимальный размер 16 килобайт. Он характеризуется наличием тега, который говорит системе о том, к какому типу принадлежит точка повторной обработки. При использовании reparse-буфера собственного типа ещё необходимо задавать в нём GUID в специальном поле, а в reparse-буферах Microsoft он может отсутствовать.Extended Attributes
Расширенные атрибуты файла
. Про них был . Здесь стоит упомянуть только то, что под Windows эта технология практически не применяется. Из известного мне программного обеспечения только Cygwin использует расширенные атрибуты для хранения POSIX прав доступа. У одного файла на NTFS могут быть или расширенные атрибуты, или буфер точки повторной обработки. Одновременная установка и того и другого невозможна. Максимальный размер всех расширенных атрибутов у одного файла составляет 64 Кб.Alternate Data Streams
Дополнительные файловые потоки.
Про них знает уже, наверное, каждый. Перечислю основные признаки этого вида метаданных: именованность (то есть у файла может быть несколько потоков, и у каждого своё имя), прямой доступ из файловой системы (их можно открывать, используя формат «имя файла, двоеточие, имя потока»), неограниченный размер, возможность запуска процесса прямо из потока (и возможность реализовать через это ).Что-нибудь ещё?
Есть ещё идентификатор безопасности
, плюс стандартные атрибуты файла, к которым нет прямого доступа, несмотря на то, что они тоже реализованы как потоки файлов. И они, и расширенные атрибуты, и reparse и object id - всё это потоки файла с точки зрения системы. Напрямую изменять идентификатор безопасности, показанный на следующей картинке как::$SECURITY_DESCRIPTOR смысла нет, пусть его изменением занимается система. К другим типам потоков сама система не даёт прямого доступа. Так что на этом всё.