Потоки 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”!    

Потоки NTFS: Один коментар

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

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

Лого WordPress.com

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

Twitter picture

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

Facebook photo

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

Google+ photo

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

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