Потоки NTFS

Однажды столкнулся я с вопросом: “Как спрятать файл надежно и без всяких дополнительных средств?” И тут вспомнилось мне такое хорошее свойство файловой системы NTFS, как “Многопоточность”!! Это значит, что каждый файл кроме своего основного потока может иметь еще и дополнительные.

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

Сразу же возникает вопрос: “Как создавать потоки и работать с ними?”    

 Очень просто! Конечно, можно воспользоваться  комплектом программ для работы с NTFS потоками, такими как –  NTFS Stream Explorer и Streamfinder. Но для того чтобы лучше разобраться, давайте для начала воспользуемся командной строчкой и создадим базовый файл “file1.txt”, в котором напишем: “Hello, my dear friends”:

 C:\>echo Hello, my dear friends >file1.txt
C:\>type file1.txt
Hello, my dear friends
C:\>  

Теперь прикрепим к нему дополнительный поток:
 C:\>echo Alternative Data Stream >file1.txt:stream1.txt   

С помощью оператора “:” , мы указали на то, что строчку “Alternative Data Stream” будем записывать в поток “stream1.txt” файла “file1.txt”.
Итак у нас имеется файл “file1.txt” с двумя потоками. Далее с помощью команды “more” выведем на экран данные с основного потока и с потока “stream1.txt”:
 С:\>more < file1.txt
Hello, my dear friends
С:\>more < file1.txt:stream1.txt
Alternative Data Stream  
 

С:\>   В результате, мы видим, что если не указывать имя потока, то мы всегда получим на экране:  “Hello, my dear friends”.
Кроме файла, поток можно привязать и к папке (для этого после оператора “>” сразу ставим “:” и указываем название потока), для примера, запишем строчку “Alternative Data Stream” в поток “stream1.txt” корневого каталога С:\ , и выведем его на экран: 

С:\>echo Alternative Data Stream2 >:stream1.txt   С:\>more <:stream1.txt
Alternative Data Stream2
   

Чтобы в поток поместить файлы других типов, например, мультимедиа, воспользуемся командой “type”:
С:\>type “Linkin Park – Numb.mpg”>file1.txt:stream2.mpg
 
Воспроизвести видео из потока можно с помощью медиаплеера:
С:\>”С:\Program Files\Windows Media Player\wmplayer.exe” “С:\file1.txt:stream2.mpg”
 
В результате, мы получили текстовый файл “file1.txt” в потоках которого спрятаны текстовый файл “stream1.txt” и медиа файл “Linkin Park – Numb.mpg”. Самое интересное, что в “Свойствах” файла отображается размер только основного потока – несколько КБ, а реально весь файл занимает около 40 МБ!

P.S. Просканировать файл на наличие потоков можно с помощью команды “dir /R” (начиная с Windows Vista), или же с помощью утилиты Марка Русиновича “Streams”!    

Advertisements

One thought on “Потоки NTFS”

Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s