Alternate data stream

Alternate data stream adalah sebuah fitur dalam sistem berkas NTFS yang dapat menyebabkan sebuah berkas memiliki beberapa buah data (atau dalam istilah NTFS disebut sebagai stream) secara sekaligus. Normalnya, sebuah berkas hanya memiliki sebuah data saja dalam atribut $DATA, yang tidak diberi nama. Dengan menambahkan nama kepadanya, maka sebuah berkas dapat memiliki beberapa stream baru, yang juga dimasukkan ke dalam atribut $DATA secara terpisah.

Cara kerja

Sebuah stream memiliki format sebagai berikut:

<nama_berkas>.<ekstensi>:<nama_berkas>.<ekstensi>

Sebuah stream dapat dibuat dengan menggunakan API NtCreateFile(), sebuah cara yang sama dengan cara membuat sebuah berkas biasa dalam Windows NT.

Sebuah stream juga dapat dibuat dengan mengimpor atribut $DATA dari berkas lainnya dengan menggunakan I/O Redirection (> atau <), dari command-line. Contohnya adalah:

C:\>echo Ini adalah isi dari atribut $DATA dari berkas test > test
C:\>type C:\Windows\Notepad.exe > test:notepad.exe

Jika dibuka oleh program aplikasi, yang akan dibuka olehnya adalah atribut $Data yang utama (yang tidak memiliki nama), sehingga stream $DATA dengan nama notepad.exe dalam berkas test tersebut tidak akan terbaca (tersembunyi). Hal ini juga berlaku untuk semua stream yang terdapat di dalam berkas tersebut dan berkas lainnya.

C:\>type test
Ini adalah isi dari atribut $DATA dari berkas test

Selain itu, beberapa program juga tidak dapat secara langsung mengenali adanya stream. Contohnya, perintah "type" di atas tidak akan berguna untuk menampilkan apa isi dari atribut $DATA sebuah stream; Perintah "dir" juga sama: ia tidak akan menampilkan kapasitas berapa banyak byte yang telah diambil oleh stream tambahan dalam sebuah berkas, mengingat ia hanya menampilkan kapasitas berapa banyak byte yang diambil oleh stream utama. Salah satu cara untuk melihat apa yang terdapat di dalam stream adalah adalah dengan menggunakan program notepad atau more, atau dengan menggunakan program yang telah mengenali adanya stream.

C:\>more < test:notepad.exe
[isi dari stream notepad.exe dalam berkas test akan ditampilkan]

Sehingga, alternate data stream juga dapat digunakan untuk menyimpan data secara tersembunyi: tidak terlihat sama sekali oleh program konvensional yang telah ada. Untuk menjalankan program (yang dapat dieksekusi) yang disimpan di dalam stream, dapat digunakan sintaksis berikut:

C:\>start .\<nama_berkas>.<ekstensi>:<nama_stream>.<ekstensi>
 
Beberapa jenis berkas yang memiliki sheet Summary atau tidak

Selain itu, stream juga digunakan oleh Windows Explorer untuk menampung beberapa informasi yang berkaitan dengan berkas yang bersangkutan (metadata berkas tersebut), yang dapat dimasukkan melalui properti berkas tersebut. Beberapa berkas, seperti .HTML/.HTM (kode HTML), .XML/.XSD (kode XML), .LNK/.PIF (shortcut), tidak dapat memiliki properti berkas seperti dalam beberapa jenis berkas; dokumen Microsoft Office juga demikian, mengingat informasi metadata tersebut disimpan di dalam berkas yang bersangkutan.

 
Sebuah berkas yang memiliki stream yang hendak dipindahkan ke sebuah sistem berkas selain NTFS

Jika berkas dengan stream dipindahkan ke sebuah sistem berkas lainnya (selain NTFS), seperti halnya FAT32 atau FAT16, maka stream yang dikandungnya akan hilang.

Penyalahgunaan

Fitur Alternate Data Stream memang berguna, tapi ada juga beberapa masalah yang ditimbulkan oleh orang yang iseng. Beberapa virus, telah menggunakan metode ini untuk menyembunyikan dirinya dari program antivirus, sehingga sukar dideteksi jika tidak beraksi.