Scriptový správce souborů ukrytých v proudech NTFS

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: BetonMAN
Datum: 8.4.2007
Hodnocení/Hlasovalo: 0/0

Každý z nás už určitě někdy potřeboval skrýt data na disku před správcem, nebo některým antivirovým programem. Zde se podíváme na to, jak si vyrobit správce takových souborů...

Tuto techniku nezná moc lidí. Jedná se o skrytí souborů do tzv. datových proudů systému souborů NTFS. Pokud nevíte o co jde, můžete si přečíst podrobný článek napsaný adminem .cCuMiNn.

Takže

1. vytvoříme si cvičný soubor, nebo složku, na které budeme všechno zkoušet. Např.: data

2. vytvoříme si 2 soubory, přidat.js a extrahovat.js

Přidat.js


do souboru přidat.js vložíme následující kód:



Na první pohled tento kód může vypadat poněkud složitě. Podívejme se proto na jednotlivé řádky kódu:

Tyto řádky zajišťují zavedení knihoven pro práci se soubory:



Následuje nastavení proměnných.
RootFolderudává adresu adresáře, jehož obsah bude skryt do datového proudu souboru nebo složky
ArchiveFileAdresa souboru nebo adresáře do jehož datových proudů chceme soubory schovat
FileListProměnná FileList bude později obsahovat seznam zapsaných souborů
ReplaceFileListTotéž co proměnná FileList, akorát každý znak \ bude nahrazen znakem * a každá mezera znakem ?. Je to z důvodu, že názvy datových proudů neumožňují použít lomítko ani mezeru


Nyní následuje funkce GetFileList, která bude rekurzivně prohledávat složku a všechny podsložky a přidávat adresy všech souborů a složek v nich obsažených do proměnné FileList.



Tak vše je přichystáno a můžeme jít do akce:

GetFileList(RootFolder);Za pomocí funkce GetFileList si naplníme proměnou FileList sezmamem souborů, ketré chceme přidat
ReplaceFileList = ...Nahrazení v datových proudech nepoužitelných znaků a to \ a (mezera). Znak \ nahradíme za * a mezeru nahradíme ? .
var ts = fso.CreateTextFile(...vytvoříme si datový proud *FILELIST* v naší složce do kterého uložíme náš seznam souboru
ts.Write(ReplaceFileList);Zapíšeme obsah seznamu do datového proudu
ts.close();Uzavření souboru.


Následuje cyklus, který zkopíruje všechny zdrojové soubory do datových proudů námi zvoleného sobouru/složky.



Teď se možná ptáte, proč to tak složitě kopíruji pomocí objektu ADODB.Stream a nepoužiju funkci fso.CopyFile(). Je to z toho důvodu, že funkce fso.CopyFile() z nějakého důvodu není schopna zkopírovat všechny soubory, ale jenom některé. Za pomocí ADODB.Stream jste schopni bezpečně zkopírovat všechny soubory.

A nakonec následuje vypsání hlášky "Hotovo !!!"...



extrahovat.js


Tak nyní si ukážeme obsah souboru extrahovat.js:



Jelikož je začátek kódu stejný nebudu ho již popisovat.

Tento kód se bude snažit načíst obsah datového proudu *FILELIST* v souboru/složce zadané v proměnné ArchiveFile. Pokud proud neexistuje, nebude načteno nic.




Nyní následuje nahrazení znaků * zpět na \ a znaků ? zpět na mezery.




Tak, a teď následuje cyklus, který provede kopírování z datových proudů v souboru/složce uvedené v proměnné ArchiveFile zpět do normálních souborů. Cyklus také kontroluje existenci složek které je potřeba vytvořit a v případě, že neexistují tak je vytvoří




A konec celé akce nám oznámí hláška "Hotovo !!!".



spravce.hta


Pokud máte raději správe souborů ve stylu Total Commander, můžete použít následující HTML aplikaci pro větší komfort při práci se soubory a složkami schovaných v datových tocích. Nejedná se o žádný nástroj odhalující schované soubory v datových tocích, jen se jedná o vylepšení předchozích scriptů. Není to žádný zázrak, ale na základní operace se soubory by to mohlo stačit.
Následující kód uložte pod libovolným názvem s příponou .hta . Např.: spravce.hta .

Upravte řádek <!--script--> na <script> (Z důvodů zabezpečení serveru SOOM.CZ mi to nebylo dovoleno odeslat)