Что такое альтернативные данные и как ими пользоваться. Особенности файловой системы NTFS

В последнее время, в связи с удешевлением аппаратных средств (в долларовом эквиваленте) все большее число пользователей компьютера получает в распоряжении ресурсы вполне достаточные для работы операционной системы Microsoft Windows NT (i200MMX + 32-64 Mb). Ненадежность и непредсказуемость Windows 95/98, а также неспособность ее к управлению на должном уровне ресурсами современных компьютеров приводит многих пользователей к мысли о переходе на NT.

При этом многие неискушенные пользователи не находят для себя ничего кардинально нового. И действительно, установив Internet Explorer 4 и не пользуясь многочисленными возможностями NT по применению политики безопасности и защиты, самыми большими отличиями от Windows 98 может показаться наличие двух папок “Автозагрузка” в пусковом меню (текущего пользователя и общей для всех пользователей) и отсутствие апплета Add/Remove Hardware в Панели управления. А если еще и не форматировать диск файловой системой NTFS, то разницы можно больше и не найти.

Но эта статья как раз и описывает некоторые отличия NTFS от FAT, VFAT, FAT16 и FAT32. Общеизвестные отличия: способность к самовосстановлению, отложенная запись, максимальный размер тома и файла на нем до 16 Экзабайт (1 Экзабайт = 1000000 Гбайт), возможность сжатия отдельных файлов и папок, установки разрешений и аудита достаточно широко освещены в литературе и документации к Windows NT. Но существуют еще малоизвестные и малоиспользуемые возможности NTFS: жесткие ссылки (hardlinks) и множественные потоки данных (multiply data flows или forks). Далее пойдет речь именно о них.

Множественные потоки данных . Этот термин знаком пользователям Macintosh. В этой системе файл может иметь два потока (forks): поток данных и поток ресурсов. В потоке данных хранятся данные файла - этот поток и копируется как единственный при переносе файла с Macintosh на PC. Второй поток файла - поток ресурсов, содержащий данные операционной системы – меню, значки, шрифты, в общем, все то, что принято называть ресурсами. Когда Windows NT Server обслуживает клиентов Macintosh и предоставляет им дисковое пространство для хранения файлов, необходимо чтобы файловая система сервера поддерживала формат файлов клиента. Это является одной из причин появления множественных потоков данных в NTFS.

Каким образом это реализовано? Любая информация о файле, начиная с его имени, разрешений и заканчивая собственно данными, хранящимися в файле, с точки зрения NTFS представляет собой атрибут, хранящийся в собственном потоке (stream). Разработчики NTFS посчитали, что можно не ограничиваться одним потоком для данных – безымянным, и добавили возможность создания нескольких, помимо основного, именованных потоков. Для создания множественных потоков можно применить функцию Win32 API, но можно поступить и проще.

Со времен Кернигана и Ричи – разработчиков языка C и операционной системы UNIX у многих операционных систем существует возможность обобщения операций ввода – вывода. С этой точки зрения, любая операция ввода – вывода может рассматриваться как операция ввода из потока или вывода в поток независимо оттого, что является источником данных (консоль, т.е. клавиатура, файл или порт) и приемником (опять же консоль, в данном случае уже экран монитора, принтер или файл). Существует и возможность перенаправить ввод – вывод программы с экрана на принтер и вводить команды не с клавиатуры, а из файла. В наше время повсеместного использования графического пользовательского интерфейса эти возможности применяются очень редко, поэтому поясним сказанное примером.

Команда операционных систем Microsoft echo используется для вывода информации на экран в текстовом режиме:

C:>echo Hello, World!

Команда echo в качестве устройства вывода информации использует экран монитора. Вывод этой команды можно перенаправить с консоли в файл (для этого используется символ “ > ”):

C:>echo Hello, World! > file

Как видите, команда echo в данном случае на экран ничего не вывела. Но в файле file можно обнаружить строку “Hello, World!”. Аналогично вывод команды echo можно перенаправить и на принтер:

C:>echo Hello, World! > lpt1

На экране опять ничего, но на листе бумаги в принтере можно обнаружить все ту же строку “Hello, world!”, если конечно принтер подсоединен к порту lpt1. Таким образом, вывод любой программы текстового режима можно перенаправить на любое устройство, поддерживающее потоковый ввод информации или в файл, за исключением тех программ, которые в текстовом режиме используют для вывода информации непосредственную модификацию видеопамяти и другие нестандартные, с точки зрения классического C, возможности.

Аналогично можно перенаправить и ввод программы. Команда more операционных систем Microsoft используется для буферизации вывода команд, выводящих информации больше, чем умещается на экран. Но эту команду можно использовать и для иллюстрации перенаправления ввода:

C:>more Hello, World!

В файле file находилась строка “Hello, World!”, которая была направлена на экран.

Точно также, с помощью перенаправления ввода - вывода можно создавать и читать множественные потоки данных:

C:>echo string1 > file:fork1

Записью file:fork1 определяется в файле file поток с именем fork1 (поскольку он еще не существует, то создается новый с этим именем) и перенаправляем в него вывод команды echo. При этом размер файла при просмотре его свойств не изменяется, и стандартными средствами Windows NT, не зная имени потока его существования нельзя определить. Но, зная его имя, можно с помощью команды more определить и его содержимое:

Таким образом, можно создавать и читать содержимое потоков данных файла. Количество потоков, создаваемых в одном файле ограничено только наличием свободного пространства на диске. Аналогично можно создавать потоки данных в каталогах, но для просмотра содержимого потока придется применить другое средство вывода потока на экран, так как команда more при этом выдает следующую ошибку:

Если ничего подходящего найти не удалось, то можно написать в любом компиляторе C++ такую программу:

while (cin.get(ch)) cout.put(ch);

Скомпоновать эту программу лучше как консольное Win32 приложение, и использовать как средство для изучения потоков каталогов.

Windows NT не предоставляет стандартных средств для получения информации о множественных потоках данных. Но что делать, если все же необходима такая информация? В этом случае можно воспользоваться программой streams Марка Руссиновича (Mark Russinovich), которую вместе с исходным кодом можно взять на www.sysinternals.com . В этой программе для получения информации о множественных потоках данных используются недокументированные функции Windows NT. Вот информация, полученная с помощью программы streams о файле file:

NTFS Streams Enumerator v1.0

Systems Internals - http://www.sysinternals.com

Здесь можно видеть как название потока данных, так и его размер в байтах (дополнительные 3 символа это пробел после символа “ > ”, возврат каретки и перевод строки, добавляемые командой echo). К сожалению, streams не позволяет определить множественные потоки данных в каталогах.

Для чего можно применять множественные потоки данных? Помимо применения, найденного для них фирмой Apple, можно сказать о самом простом средстве для скрытия информации, например, для запоминания даты установки программы shareware. На заре технологии OLE Microsoft предполагала использовать потоки данных для хранения информации о внедренных объектах, но видимо обеспечить потоки данных на FAT оказалось сложнее, чем создать длинные имена файлов и от этой идеи пришлось отказаться. Создание “файла ресурсов” для скрипта с хранением в нем всех надписей, выводимых на разных языках, также может быть интересной возможность применения потоков. Помимо приведенных, существует еще множество интересных применений для множественных потоков данных, чтобы не обходить их своим вниманием.

Жесткие ссылки . Пользователям различных клонов UNIX хорошо знакомо это понятие. В отличии от файловой системы FAT, в которой принято, что у каждого файла может быть только одно имя, в UNIX такого ограничения нет – каждый файл может иметь несколько имен и его данные не могут быть удалены, пока счетчик имен файла не равен 0. В UNIX существуют также символьные ссылки – аналог ярлыков (shortcut) в Windows, но следящих за перемещением объекта, на который они ссылаются.

Windows NT ограниченно соответствует стандарту POSIX (Portable Operating System Interface for Computing Environments). Один из примеров ограниченности – поддержка жестких ссылок и отсутствие поддержки символьных. Видимо, было решено, что ярлыки являются достойным аналогом символьных ссылок.

В NTFS жесткие ссылки организованы аналогично множественным потокам данных: если у файла есть несколько потоков с данными, почему не может быть нескольких потоков с именами? Несколько имен файла могут находиться в разных каталогах, но только в пределах одного раздела.

Для изготовления жесткой ссылки необходима программа для подсистемы POSIX Windows NT. Такая программа вместе с исходными текстами находится на компакт-диске “Ресурсы Windows NT”. По аналогии с UNIX эта программа называется ln. Синтаксис этой команды:

C:>Ln file hardlink1

С помощью этой команды мы создаем для файла file второе имя или жесткую ссылку hardlink1 и, изменяя содержимое файла file можно изменить содержимое hardlink1, точнее это один и тот же файл, но с двумя именами. Аналогично можно менять и другие атрибуты файла. Количество имен у файла не ограничено, но при копировании имени файла ссылка разрывается и создается еще один файл. Существует возможность создания ссылки в другом каталоге:

C:>Ln file ../temp/hardlink2

В этом случае необходимо указывать не абсолютное, а относительное имя каталога.

Применений для жестких ссылок можно найти не меньше, чем для множественных потоков данных. Например, создавать жесткие ссылки для библиотек dll, чтобы обезопасить свою программу от случайного удаления необходимого файла. Другие возможные применения жестких ссылок лучше всего искать в литературе, относящейся к UNIX. И, конечно же, применение жестких ссылок можно комбинировать с описанными выше множественными потоками данных.

Видимо-невидимо

Читатель блога Виктор не смог запустить скачанный из Интернета скрипт PowerShell. Внимательное чтение моих инструкций позволяло избежать проблемы, но корень ее был вовсе не в строгих политиках безопасности PowerShell.

Виктор скачал из галереи TechNet архив со скриптом PSWindowsUpdate.zip для управления Windows Update, о котором я рассказывал . Однако распакованный скрипт отказывался работать. Когда я подсказал читателю, что в первом пункте моих инструкций говорится о необходимости разблокировать архив, все пошло как по маслу.

Виктор попросил объяснить, почему система заблокировала скрипт, и откуда она знает, что архив был скачан с другого компьютера.

Честно говоря, сегодняшняя тема не нова, но я решил осветить ее в своем блоге по нескольким причинам:

  • Многие статьи написаны еще во времена Windows XP или Windows 7 и не учитывают встроенных возможностей более новых ОС Microsoft.
  • В одной из запланированных на ближайшее время статей эта тема затрагивается, и мне проще сослаться на материал, за актуальность и правильность которого отвечаю я сам.
  • У блога большая аудитория, и для многих читателей эта тема все равно окажется в новинку:)

Сегодня в программе

Потоки данных NTFS

Windows черпает сведения об источнике файла из альтернативного потока данных (alternate data stream, далее ADS) файловой системы NTFS. В свойствах файла она скромно пишет, что он с другого компьютера, но на деле знает чуть больше, как вы увидите дальше.

С точки зрения NTFS, файл – это набор атрибутов . Содержимое файла – это атрибут данных с именем $DATA. Например, текстовый файл со строчкой “Hello, World!” обладает атрибутом данных “Hello, World!”

В NTFS атрибут $DATA является потоком данных и называется основным или безымянным, потому что… не имеет имени. Формально он выглядит так:

$DATA:""

  • $DATA – имя атрибута
  • : – разделитель
  • "" – имя потока (в данном случае имя отсутствует – между кавычками ничего нет)

Интересные особенности альтернативных потоков данных

В контексте примеров выше я хочу отметить несколько любопытных моментов.

Невидимые изменения

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

Интересно становится, когда файл открыт, скажем, в Notepad++. Этот редактор умеет предупреждать об изменениях файла. И он сделает это, когда вы запишете в файл альтернативный поток, однако содержимое при этом останется прежним!

Запись и просмотр ADS из CMD

ADS можно создавать и отображать из командной строки. Следующие команды записывают скрытый текст во второй ADS с именем MyStream2, а затем отображают его.

Echo Hidden Text > C:\temp\test.txt:MyStream2 more < C:\temp\test.txt:MyStream2

Просмотр ADS в текстовых редакторах

Тот же 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 не ограничивается добавлением зоны скачанного файла, равно как вовсе необязательно хранение в ADS только текста. Любая программа может задействовать эту функцию NTFS для хранения каких угодно данных, поэтому я приведу лишь пару примеров из разных областей.

Инфраструктура классификации файлов

Об авторе

Интересный материал, спасибо. Узнал что-то новое про PowerShell, который мне всё ещё мало знаком:)

Для общения с семьёй чаще использую WhatsApp — пока с этим сервисом было меньше всего проблем, даже родители там освоились. Контактик тоже в основном для семьи, хотя там обмен сообщений в основном вокруг публикуемых альбомов с фото и видео. Некоторые родственники хранят верность Viber — у меня с ним не сложилось как-то, держу просто для них, не оставляя попыток перетащить и их в WhatsApp.

Для работы в основном Slack, когда что-то срочное — WhatsApp, очень срочное — SMS. ВКонтакте для общения по работе с внешним миром.

Skype использую только для видеозвонков, в основном с семьей опять же. С удовольствием заменил бы его на WhatsApp, будь там видеозвонки.

urix

В Viber теперь появились видеозвонки, и даже видеозвонки для десктопной версии. Так что может быть, Viber станет следующим скайпом… в хорошем смысле

Андрей Кузнецов

Материал интересный, спасибо. Я знал про существование потоков, но не знал, что с ними так просто работать через PowerShell.
Что касается IM: К скайпу у меня есть нарекания только по времени запуска на Windows Phone. На ipad и Windows такой проблемы нет. Использую для голосовой связи, когда по каким-то причинам неудобно использовать GSM.
А переписка через Whatsapp. Наличие его только на телефоне скорее плюс, с точки зрения конфиденциальности.

  • Андрей Кузнецов : А переписка через Whatsapp. Наличие его только на телефоне скорее плюс, с точки зрения конфиденциальности.

    Андрей, поясните, в чем тут плюс

Павловский Роман

1. Пользуюсь чаще всего: Skype и Hangouts — по работе на ПК, по остальной переписке «ВКонтакте» с любого устройства, так как клиенты по работе обычно сидят на Скайпе, а друзья и знакомые в Соц.Сетях.

2. Хотел бы пользоваться в идеале: Jabber — для переписки и звонков с любых устройств. Как по мне, клиент можно установить на любое устройство и переписываться, где бы не находился пользователь, даже на слабом Интернет-соединении + к этому можно развернуть свой jabber-сервер и хранить всю переписку на сервере, чтобы потом можно было быстро найти нужную переписку, если клиент не умеет хранить историю, а плагины для звонков через jabber можно будет найти (например, через тот же SIP Asterisk 1.8+)

Андрей Баятаков

Чаще всего пользуюсь WhatsApp (в основном по работе), для звонков (аудио/видео/международные звонки) Skype. Хотя десктопный Skype ужасно бесит (у меня трансформер и дома я им пользуюсь в основном как планшетом)… Viber — не прижился. Чтобы звонить через WhatsApp нужно иметь просто железные нервы. Скажешь что-нибудь собеседнику и ждешь минуту-две когда он тебя услышит (подключение 50Mbit)…
Была бы возможность перешел бы совсем на Skype. На Windows 10 Mobile после недавнего обновления сообщения из Skype приходят прямо во встроенное приложение Сообщения (как СМС), что очень удобно.

Maxim

1. Скрепя сердце пользуюсь ICQ (для заказчиков-ретроградов) и Slack (для более современных).
2. Хотел бы пользоваться Jabber - по тем же причинам, что у Романа Павловского выше.

Владимир Кирюшин

Здравствуйте Вадим!
Прочитал перед этой статьёй вашу статью про то, как прочитать отчёт проверки всего системного диска командой chkdsk . Отличная статья! Благодаря ей сегодня после поверки командой chkdsk системного диска я получил текстовый файл отчёта. А эта статья тоже много чего проясняет в программе PowerShell. Кое-что мне пенсионеру бывает непонятно, но я стараюсь не паниковать и читаю усердно до конца. Спасибо вам за учёбу,которую вы с нами проводите! Всего Вам хорошего!

Lecron

Какие браузеры и программы-даунлоадеры создают этот поток?

Какие еще есть варианты использования потоков самим пользователем? И в частности, пользователем скриптописателем? Так как, хоть и знал про них давно, ни разу не использовал. При реальной работе с компом про них просто не вспоминаешь, и из-за этого, возможно городишь костыли, вместо удобного инструмента, а без этой работы, по памяти, ничего придумать не получается.
Сообразил только об одном варианте. Комментарий к файлу, если нет возможности или желания писать длинный текст в имя файла. Но для этого нужна поддержка со стороны файл менеджера, который раньше, да и сейчас, пишет их в descript.ion или files.bbs.

Speed Guru

Очередная мусорная технология наподобие USN журнала. Много ли вам будет пользы от ZoneIdentifier или от вируса, прикреплённого к фалу или папке? Конечно нет. Более того — это захламление системы лишними, ни коим образом не нужными нормальному пользователю «подфайлами». Каждое лишнее чтение в каталоге MFT и прочие операции, сопутствующие обслуживанию и содержанию альтернативных потоков, это лишние затраченные циклы процессора, оперативной памяти, а самое главное лишняя нагрузка на жёсткий диск.
Вы можете сказать мне что эта технология очень нужна системе. Но это чушь — система отлично работала бы и без потоков. Но пользователя никто не спрашивает — впарили (как USN журнал) и возможности полностью отключить ведение этих потоков не дали. А ведь мне как пользователи они вовсе не нужны, думаю как и вам…
Всё что мы можем сделать это «streams -s -d %systemdrive%». Но и это не даёт возможности удалить потоки на системном разделе.

Alexiz Kadev

Именованные потоки — штука отличная, причем существовала, насколько я помню с первого релиза NTFS. В именованных потоках достутаочно удобно хранить, например, версии документа, что если я не ошибаюсь ряд приложений и делали. Но остается засада с копированием на другую файловую систему — именованные потоки просто отрезаются.

Жаль в голосовалке нельзя было выделить несколько мессенджеров: я пользуюсь несколькими, поскольку некоторые мои контакты предпочитают какие-то определённые. Так, я использую WhatsUp, ICQ(правда, конечно, не родной клиент),Skype, SkypeforBusiness (тихий ужас, а не клиент, впрочем когда он назывался Lync был ещё хуже) и Viber (вот тут спама больше чем в других как минимум раз в 5).
А в идеале использовать какой-то один, типа Миранды с плагинами, поскольку найти в случае необходимости, кто где когда что-то говорил/писал во всей этой куче просто нереально. Но увы, ряд производителей закрывают свои протоколы и оберегают их как Кащей свою иголку.

  • VSh

    Vadim Sterkin : Роман, я не включил Jabber в опрос. Решил, что им мало кто пользуется и перспектив нет.

    Зря
    Я, например, использую OpenFire (freeware xmpp) как офисный коммуникатор на нескольких доменах.

    Поэтому у меня основной это XMPP (Pidgin.exe, Spark.exe), но 99.8% из этих сообщений — внутридоменные.
    Skype — для внешних IM
    WhatsApp и Viber — для «случайных связей», последние n месяцев только СПАМ, думаю — не удалить ли?

  • Артем

    У меня все почему-то в вайбере. И качество связи вполне устраивает. А так телеграмм бы. Да пусто там.

    hazet

    1. Skype (на ПК) и Viber (на Мобиле). Причины в основном как и у большинства — количество имеющихся контактов и естественно нежелание этих самых контактов, пересесть на другой мессенджер.
    2.uTox. Миниатюрный, ничего лишнего, клиент для Win, Linux, Mac и Android. Позиционируется как защищенный.
    P.S. ЩаЗ займусь перетягиванием своих контактов на него поплотней:-)

    Евгений Карелов

    Cпасибо Вам за Вашу работу!

    Касательно опроса, на ПК для переписки использую QIP 2012, к которому подключены контакты ICQ, ВКонтакте и другие. Лично мне удобно, использовать для общения по нескольким протоколам одну программу. Да и возможность просматривать ленты соцсетей из одного места очень радует. В идеале, не хватает только поддержки Skype, который я использую для голосовой связи, но она явно не появится.
    Хотя эта программа и выглядит «заброшенной», ибо обновлений уже давно не было, возложенные функции выполняет прекрасно.

    strafer

    Интересная мешанина из темы поста про потоки данных и опроса по IM.

    По опросу: Jabber/Jabber, который вы таки зря не включили в список, хотя там есть вотсап, основанный на XMPP, и даже идущая к успеху асечька.

    Jabber в общем-то решает все указанные проблемы ввиду открытости протокола, наличия клиентов под множество платформ и наличия серверов, которые можно поднимать самостоятельно. Но кактусы жевать традиционнее, да.

    • В списке клиенты, а не протоколы.
      ICQ… ну, я не стал там смайлики ставить, ибо должно быть и так понятно.
      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 ? Весьма интересная функциональность файловой системы, которой можно найти практическое применение. Сегодня поговорим о том, что это и как этим можно пользоваться.

    Для начала немного теории .
    Поддержка альтернативных потоков данных была добавлена в NTFS для совместимости с файловой системой HFS от Macintosh, которая использовала поток ресурсов для хранения иконок и другой информации о файле. Они присутствуют в NTFS еще с самых ранних версий Windows NT . Суть технологии в том, что у файла на NTFS может быть несколько потоков, содержащих данные. Проводник и большинство популярных файловых менеджеров ограничены работой лишь сглавным потоком (не имеющим имени), представляющим собой основное содержимое файла. Потоки могут использоваться для хранения метаданных файла, таким образом они использовались в Windows 2000 , насколько мне известно.

    В Windows 7 альтернативные потоки NTFS , наличествующие у файла, штатными средствами не увидеть. И напрасно: адски хитрые вирусы, например, могут писать себя в потоки какого-нибудь вполне безобидного файла. Удалив файл с потоками, содержащими объёмные данные можно обнаружить, что места освободилось значительно больше, чем занимал файл по мнению Проводника .
    Для просмотра имеющихся потоков мы будем пользоваться консольной утилитой , созданной небезызвестным Марком Руссиновичем.

    Как создать альтернативный поток 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


    Я полагаю, тут всё понятно.

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

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

    Стандартный Блокнот будет приписывать расширение txt к имени потока. Если вы хотите использовать его, потоки именовать надо следующим образом:
    echo Hello World > hello.txt:test.txt
    Тогда выполненная из cmd.exe команда даст положительный результат:
    notepad hello.txt:test.txt

    Альтернативные потоки NTFS и файлы различных типов

    У вас может сложится мнение, что область применения альтернативных потоков NTFS не простирается дальше текстовых файлов. Это не так. В следующем примере я добавил к файлу hello.txt поток, содержащий данные архива 7z:

    Отмечу, что потоки можно создавать не только для файлов, но и для папок и даже для разделов жесткого диска.

    Всё ограничено вашей личной фантазией и потребностями. Используя описанные приёмы, можно легко спрятать личную информацию от неподготовленного пользователя, например. Некая разновидность защиты от дурака, если хотите.

    DIR /B C:\WINDOWS\System32\*.SCR

    DIR /B C:\WINDOWS\System32\*.* |FIND /i ".SCR"

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

    4.1.8. Файловые потоки NTFS*

    Файловая система 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 может иметь несколько потоков, в которых могут храниться данные. Проводник и большинство других приложений работают только со стандартным потоком и не могут получить данные их альтернативных. Таким образом с помощью технологии ADS можно скрывать данные, которые не удастся обнаружить стандартными способами.

    Поддержка альтернативных потоков данных была добавлена в NTFS для совместимости с файловой системой HFS , использующейся на MacOS.

    Немного теории

    В файловой системе NTFS файлы имеют атрибуты. Один из атрибутов $DATA является атрибутом данных. В свою очередь атрибут $DATA может иметь несколько потоков. По умолчанию существует один основной поток $DATA:"" , который называют неименованным. С этим потоком как раз и работает проводник windows. При желании к файлу можно добавить несколько именованных потоков (например $DATA:"potok1"), которые будут содержать различные не связанные между собой данные.

    По умолчанию все данные, записываемые в файл, попадают в основной неименованный поток данных. И при открытии файла мы видим только основной поток. Альтернативные потоки NTFS, которые есть у файла, скрыты от пользователя и штатными средствами их не увидеть. Поэтому удалив файл с потоками, содержащими объемные данные, можно заметить, что места на устройстве хранения данных освободилось значительно больше, чем занимал файл по мнению того же Проводника. Альтернативными потоками часто пользуются вирусы, которые могут прописать себя в именованый поток какого-нибудь безобидного файла.

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

    Как создать альтернативный поток NTFS

    Создать альтернативный поток можно с помощью консольной команды echo .

    Для начала откроем командную строку cmd.exe и с помощью команды echo создадим текстовый файл example.txt и запишем в него текст:

    echo Главный поток>example.txt

    Следующей командой запишем данные в альтернативный поток. Для этого после названия файла ставите двоеточие (:) и даете название потоку:

    echo Альтернативный поток>example.txt:test

    Теперь если открыть файл example.txt в любом тестовом редакторе, то будет виден только первый текст «Главный поток»:

    Получить информацию содержащуюся в потоке можно с помощью команды more:

    more

    Увидеть содержимое потока можно не только в командной строке. Например, открыть альтернативный поток в можно с помощью следующей команды:

    «C:\Program Files (x86)\Notepad++\notepad++.exe» example.txt:test

    Обычный Блокнот может открывать только те потоки, название которых заканчивается на «.txt». Для примера, добавим к нашему файлу поток test.txt:

    echo Альтернативный поток для блокнота>example.txt:test.txt

    И откроем его в блокноте:

    notepad.exe example.txt:test.txt

    В альтернативные потоки, можно помещать не только текстовые данные, а абсолютно любые типы данных. Кроме того к любым типам файлов можно добавлять любые данные — к текстовым файлам добавлять видео, а к изображениям текстовую информацию.

    Для примера добавим к нашему файлу поток с изображением img.jpg. Для этого воспользуемся командой type:

    type img.jpg>example.txt:img.jpg

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

    Чтобы открыть содержащееся в альтернативном потоке изображение, например в Paint-е, достаточно воспользоваться командой:

    mspaint example.txt:img.jpg

    Что самое интересное альтернативные потоки не увеличивают видимый объем файла. Так если к текстовому файлу размером 1 Кб добавить видео размером 30 Гб, то проводник все равно покажет размер файла 1 Кб.

    Также потоки можно добавлять для папок и даже для разделов жесткого диска. Делается все также как и для файлов:

    echo Текст в папке>c:\test:hide.txt

    И открываем в блокноте:

    notepad c:\test:hide.txt

    Так как наличие альтернативных потоков никак не отображается в проводнике и других файловых менеджерах, самый простой способ их обнаружить это воспользоваться командой dir /R:

    Скрытие приложений в альтернативных потоках и их запуск

    Поместить исполняемые файлы в альтернативные потоки также легко как и обычные файлы. Для примера возьмем наш файл example.txt и поместим приложение Блокнот (notepead.exe) в поток hideapp.exe:

    type C:\Windows\system32\notepad.exe>example.txt:hideapp.exe

    Чтобы запустить скрытый Блокнот используется следующая команда:

    start .\example.txt:hideapp.exe

    С помощью описанных приемов можно легко спрятать информацию от неподготовленных пользователей. Вообще применение альтернативных потоков данных ADS ограничено только вашей фантазией.

    На этом все, до новых встреч!