關於NTFS檔案系統中的資料流問題

2021-04-12 20:20:40 字數 2694 閱讀 3240

關於ntfs檔案系統中的資料流問題

[**安全焦點]

[email protected] 《安全焦點》

在ntfs檔案系統裡存在的資料流形式已經是幾年前的事情了,而防病毒**商

沒有充分的檢查這一方面的檔案,這樣導致病毒掃瞄程式發現不了而已**或者

病毒掃瞄程式本身就會有可能破壞檔案系統的檔案。

ntfs分割槽的資料流是乙個子檔案系統允許額外的資料連線到乙個特別的檔案中,

現在的fat檔案系統格式是不支援資料流格式的。我們可以看看下面的例子來

了解下ntfs的資料流是怎樣工作的:

windows作業系統中使用ntfs檔案系統,我們建立下面的乙個檔案:

echo "this is the main file" > file1.txt

上面這個命令會建立乙個叫file1.txt的文字檔案並在檔案中存在文字字串

"this is the main file",你可以使用下面的命令驗證檔案是否成功建立:

type file1.txt

edit file1.txt

notepad file1.txt

使用dir命令就會顯示大約26位元組大小的檔案,上面檔案成功建立是因為你儲存

到檔案系統的有名流分割槽(the named stream portion of the file system)。

下面我們來建立乙個剛才預備的資料檔案,在提示符下執行下面的命令:

echo "this is the stream" > file1.txt:stream1.txt

這上面的乙個命令可以成功的完成而且沒有任何錯誤顯示,其中":"號就是你

指定關聯乙個流檔案。在你嘗試執行下面的命令:

type file1.txt:stream1.txt

edit file1.txt:stream1.txt

notepad file1.txt:stream1.txt

除了notepad,你可以發現所有上面的命令退出的時候會出現某中種形式的錯誤,

這是由於其中的一些windows工具對處理有關資料流檔案的能力不是很強,因為

在當時寫有關ntfs檔案系統的資料流儲存的時候很多windows工具沒有相應的

更新。ok,現在我們關聯乙個大的資料流到file1.txt檔案中,並倆看看現在

的dir出現的情況,檢視檔案的位元組大小之間的區別:

dir c:/winnt/* > file1.txt:stream2.txt

命令可以成功的執行,但我們建立的資料流檔案中增加了將近6,500位元組的資料,

可是dir顯示的file1.txt顯示的仍然只有26個位元組,如果我們使用windows的

資源管理器檢查我們照樣看到的26個位元組的誤報數。

為了證實你確實增加了6,500位元組的資訊,你可以執行下面的命令:

notepad file1.txt:stream2.txt

你可以看到乙個包含winnt 目錄的目錄列表的文字檔案,現在你試試選擇

檔案-->另存為,你會接受到錯誤的對話方塊資訊。這是因為notepad有能力

開啟和建立流檔案,但它不能瀏覽ntfs這方面的範圍。

上面是關聯乙個檔案為流檔案,但有趣的是你也可以直接建立乙個流檔案,

請用下面的命令測試:

echo "this is a stream file" > :file3.txt

ok,這樣建立了的流對於dir或者資源瀏覽器是完全不可見的,就是說是隱藏的,

其中流檔案也不能被del檔案刪除:

del file1.txt:stream2.txt

del :stream3.txt

上面兩個刪除命令都失敗了,這是因為del命令是另乙個沒有公升級到能處理流的

工具,唯一的方法刪除掛付的流只能是刪除前面的乙個主檔案,這樣的操作就會

自動刪除了所追加的流。:stream3.txt的情況你就必須上刪除整個目錄來刪除

這個檔案,呵呵。

其中關於流的最大的問題是難於鑑別它們是否存在,程式設計人員可以使用api函式

createfile()來檢視乙個資料流檔案是否存在,但這是假定程式設計人員在知道

資料流名字的前提下才能操作,例如:在上面的實踐中我們能開啟資料流檔案是

因為我們提供給notepad相應的檔名,但你從上面應該知道,當我們使用"另存

為"的操作時我們失敗了,因為"另存為"的操作需要瀏覽檔案系統資料流部分的能力。

createfile()只是當你給它提供特定的資訊的時候才能工作。

這就出現了乙個有趣的問題,"是否存在一種方法,當你不知道檔名的時候也

能鑑別資料流的存在?"經過研究,發現只有api函式中的backupread()有能力

發現資料流的存在,不幸的是,很少有工具使用了這個功能。

關於討論ntfs檔案系統的資料流存在問題不是乙個新的問題了,在bugtraq上也

討論過這個問題,見url:http://www.securityfocus.com/templates/archive.pike?

list=1&date=1998-03-15&msg=pine.sun.3.94.980320114349.19659s-100000@dfw.dfw.net

當然微軟公司也有關於流這方面的資訊和它們怎樣的工作,參考url如下:

NTFS的交換資料流ADS應用

ntfs的交換資料流ads應用 ntfs是windows常用的檔案系統格式。該格式支援交換資料流 alternate data streams,縮寫ads 特性。該特性可以讓多個檔案流使用同乙個檔名,便於系統管理和使用檔案。這樣,乙個檔名可以包含乙個主檔案流和多個非主檔案流。其中,主檔案流可以以檔名...

關於NTFS檔案系統的訪問許可權問題

windows xp sp2 可以把乙個盤格式化為ntfs格式的,然後可以應用ntfs的檔案安全設定。選中某個資料夾,右鍵 屬性 應該看到 安全 選項卡。如果沒看到,那麼應該在資料夾選項中,取消 使用簡單檔案共享 概括的說,訪問許可權分為兩種,資料夾許可權和檔案許可權。檔案許可權的優先順序要高於資料...

資料流中的中位數python 資料流中的中位數

python用的自己實現的最大和最小堆的class,getmedian需要加個引數,否則python版會報錯。coding utf 8 最小堆 class minheap def init self self.minheap def len self return len self.minheap ...