揭開NTFS下真正的隱藏檔案--'流'的奧秘 (轉)
揭開NTFS下真正的隱藏檔案--'流'的奧秘 (轉)[@more@]揭開NTFS下真正的隱藏--'流'的奧秘
[ 作者: 陸麟 新增時間: 2001-9-4 14:21:15 ]
作者:陸麟
來源:
NTFS下,支援一個特殊概念,那就是'流'.怎麼個流法呢?先看'流'的定義:
stream
A sequence of bits, bytes, or other small structurally unifounits.
BIT的序列,或者小的統一結構單元.當然,小的統一結構單元並不意味著一定要大小統一,格式統一.
流依附於檔案而存在,你可以在流中2進位制資料,文字或者其他一些東西.就象檔案一樣.檔案存什麼,流就能存什麼.每個檔案可以含有多個流.但是流又和檔案有些不同.每個流的開啟需要單獨的一個CreatFile(...)操作,並不是開啟檔案就開啟了流.
流的名字和檔名以':'分隔.例如:ABC:A.
ABC就是檔名,而流的名字為A.當我們操作流時,可以用如下簡單方法:
ECHO STREAM1>ABC:STREAM1
ECHO STREAM2>ABC:STREAM2
現在,ABC就有了:STREAM1和:STREAM2共2個流.
而讀出流可以用:
MOREMORE 這樣,內容就被讀出了.CreateFile("ABC:STREAM1",...);
如果用的方法.操作就和檔案操作一樣.
那麼為什麼要用流呢?流的好處就是隱蔽.WINNT沒有任何一個工具用來發現流的存在.我們看
C:>ECHO "Hi Reader" > XX.TXT:MyStream
C:>DIR XX.TXT
Volume in drive C is Wizard
Volume Serial Number is 40E5-92D4
Directory of C:
03/18/98 08:36a 0 XX.TXT
1 File(s) 0 bytes
0 Dir(s) 3,399,192,576 bytes free
這就是好處.所以,在綠色兵團裡有一篇文章專門介紹了流.說是一種隱藏很深的檔案存取格式.
的確深,但是NT只不過沒有提供工具而已.而我們仍然有探測到流的存在.那就是,Ins Programming為大家提供的Stream.Exe.該工具可以看到含有流的檔案以及所有的流的名字.
當然,NT提供一個,BackupRead(...)用於流名的讀出.既然是Inside Programming,介紹這個API顯然不能提供更多幫助,接下來介紹的是一個NATIVE API:NtQueryInformationFile(...)
下面給出該API涉及流的部分:
/*+++
Streaminfo.h
author: lulin
date: 2000.8.25
Abstract:
interface to NtQueryInformationFile
stream portion.
---*/
#ifndef __STREAMINFO_H__
#define __STREAMINFO_H__
#include
extern "C"{
typedef LONG NTSTATUS;
typedef struct {
union {
NTSTATUS Status;
PVOID Pointer;
};
ULONG *Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
typedef struct { //infoclass 22
ULONG NextEntryOffset;
ULONG StreamNameLength;
LARGE_INTEGER EndOfStream;
LARGE_INTEGER AlloCationSize;
WCHAR StreamName[1];
}FILE_STREAM_INFORMATION,*PFILE_STREAM_INFORMATION;
__declspec(dllimport) NTSTATUS __stdcall NtQueryInformationFile(
HANDLE handle,
PIO_STATUS_BLOCK io_status_block,
PVOID FileInFormation,
ULONG FileInformationLength,
int FileInfomationClass
);
}
#endif //__STREAMINFO_H__
NTFS真正儲存流名時,名字裡會加上:$DATA,例如:ABC:STREAM1在儲存時,流名被存為了:STREAM1:$DATA,所以在查詢結果中需要去除:$DATA.在這裡,我不詳細討論STREAM.EXE如何運作,需要源的朋有同樣可以購買.20元/份.付款資訊件UTILITY頁裡的資訊.
[ 作者: 陸麟 新增時間: 2001-9-4 14:21:15 ]
作者:陸麟
來源:
NTFS下,支援一個特殊概念,那就是'流'.怎麼個流法呢?先看'流'的定義:
stream
A sequence of bits, bytes, or other small structurally unifounits.
BIT的序列,或者小的統一結構單元.當然,小的統一結構單元並不意味著一定要大小統一,格式統一.
流依附於檔案而存在,你可以在流中2進位制資料,文字或者其他一些東西.就象檔案一樣.檔案存什麼,流就能存什麼.每個檔案可以含有多個流.但是流又和檔案有些不同.每個流的開啟需要單獨的一個CreatFile(...)操作,並不是開啟檔案就開啟了流.
流的名字和檔名以':'分隔.例如:ABC:A.
ABC就是檔名,而流的名字為A.當我們操作流時,可以用如下簡單方法:
ECHO STREAM1>ABC:STREAM1
ECHO STREAM2>ABC:STREAM2
現在,ABC就有了:STREAM1和:STREAM2共2個流.
而讀出流可以用:
MORE
如果用的方法.操作就和檔案操作一樣.
那麼為什麼要用流呢?流的好處就是隱蔽.WINNT沒有任何一個工具用來發現流的存在.我們看
C:>ECHO "Hi Reader" > XX.TXT:MyStream
C:>DIR XX.TXT
Volume in drive C is Wizard
Volume Serial Number is 40E5-92D4
Directory of C:
03/18/98 08:36a 0 XX.TXT
1 File(s) 0 bytes
0 Dir(s) 3,399,192,576 bytes free
這就是好處.所以,在綠色兵團裡有一篇文章專門介紹了流.說是一種隱藏很深的檔案存取格式.
的確深,但是NT只不過沒有提供工具而已.而我們仍然有探測到流的存在.那就是,Ins Programming為大家提供的Stream.Exe.該工具可以看到含有流的檔案以及所有的流的名字.
當然,NT提供一個,BackupRead(...)用於流名的讀出.既然是Inside Programming,介紹這個API顯然不能提供更多幫助,接下來介紹的是一個NATIVE API:NtQueryInformationFile(...)
下面給出該API涉及流的部分:
/*+++
Streaminfo.h
author: lulin
date: 2000.8.25
Abstract:
interface to NtQueryInformationFile
stream portion.
---*/
#ifndef __STREAMINFO_H__
#define __STREAMINFO_H__
#include
extern "C"{
typedef LONG NTSTATUS;
typedef struct {
union {
NTSTATUS Status;
PVOID Pointer;
};
ULONG *Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
typedef struct { //infoclass 22
ULONG NextEntryOffset;
ULONG StreamNameLength;
LARGE_INTEGER EndOfStream;
LARGE_INTEGER AlloCationSize;
WCHAR StreamName[1];
}FILE_STREAM_INFORMATION,*PFILE_STREAM_INFORMATION;
__declspec(dllimport) NTSTATUS __stdcall NtQueryInformationFile(
HANDLE handle,
PIO_STATUS_BLOCK io_status_block,
PVOID FileInFormation,
ULONG FileInformationLength,
int FileInfomationClass
);
}
#endif //__STREAMINFO_H__
NTFS真正儲存流名時,名字裡會加上:$DATA,例如:ABC:STREAM1在儲存時,流名被存為了:STREAM1:$DATA,所以在查詢結果中需要去除:$DATA.在這裡,我不詳細討論STREAM.EXE如何運作,需要源的朋有同樣可以購買.20元/份.付款資訊件UTILITY頁裡的資訊.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990124/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Mac下顯示和隱藏隱藏檔案的命令Mac
- MAC如何顯示隱藏檔案和隱藏隱藏檔案的命令Mac
- mac顯示隱藏檔案,取消顯示隱藏檔案Mac
- OSX中隱藏和顯示[隱藏檔案]的命令列命令列
- M1 macbook如何開啟隱藏的讀寫NTFS功能Mac
- 隱藏檔案失效
- 隱藏資料夾怎麼取消隱藏 關閉隱藏檔案的辦法
- 輕鬆隱藏桌面檔案,檔案隱藏工具FileUnhiderIDE
- Mac OSX 下如何顯示隱藏檔案Mac
- Win XP中搜尋隱藏檔案的兩種方法(轉)
- MacOS X隱藏和顯示隱藏檔案Mac
- Mac顯示和隱藏“隱藏檔案”命令Mac
- 隱藏檔案複製
- U盤檔案被隱藏怎麼恢復 U盤檔案恢復隱藏的方法
- 如何在“我的所有檔案”中隱藏某些檔案?
- 利用登錄檔隱藏檔案
- 隨身碟檔案被隱藏怎麼恢復 隨身碟檔案恢復隱藏的方法
- Funter for Mac檔案隱藏工具Mac
- mac隱藏檔案顯示Mac
- Mac 顯示隱藏檔案Mac
- 隱秘的攻擊形式:無檔案攻擊型別分析型別
- Funter for Mac(一鍵開關檔案隱藏工具)Mac
- windows下將隱藏檔案通過命令列改變為普通的顯示檔案Windows命令列
- 不能顯示隱藏檔案的終極方法
- 使中毒被隱藏打不開的U盤檔案恢復
- win10怎麼隱藏最近使用的檔案_win10系統隱藏最近常用檔案步驟Win10
- Win10檔案和資料夾如何隱藏 win10隱藏檔案及資料夾的方法Win10
- 如何使用Funter檔案隱藏工具
- 【macOS】顯示/隱藏 指定檔案Mac
- MACOS 如何顯示隱藏檔案Mac
- win10 如何設定資料夾隱藏檔案 win10 如何隱藏檔案Win10
- 利用Win XP系統回收站隱藏檔案(轉)
- 怎麼開啟Windows 8下的隱藏功能Windows
- Windows各個系列啟動速度差異的奧秘(轉)Windows
- linux檔案系統的隱藏許可權Linux
- win10系統u盤隱藏檔案怎麼取消隱藏Win10
- Mac作業系統下怎麼顯示隱藏檔案Mac作業系統
- 不能正常顯示WINDOWS隱藏檔案Windows