…czyli kontynuacja cyklu „człowiek uczy się całe życie” bo temat do świeżych nie należy. jaki jest dokładnie cel ADS nie potrafię zrozumieć – konkretnie, nie widzę praktycznego zastosowania dla tego wynalzq [czy coś normalnie z tego korzysta? skąd ten pomysł?]. ale coś takiego jest. ogólne przeznaczenie oznacza, iż każdy plik w NTFS może zawierać kilka strumieni danych. jeden z nich przetrzymuje informacje o ACL, inny realne dane. jak dotąd rozsądnie i nie widać nic dziwnego. dziwnie zaczyna się robić w momencie, kiedy dodamy informację, że realne dane mogą być de facto linkiem do innego strumienia danych. „robi się dziwniej i dziwniej, powiedziała alicja”… ponieważ oznacza to ni mniej ni więcej tylko tyle, że do pliq, może być dowiązany kolejny plik, który standardowo nie jest widoczny nigdzie w systemie. każdy listing pokaże nam plik np. 1kb podczas, gdy do niego jest dowiązany, niewidoczny DivX.

krótki test
c:copy con a.txt
wpisuje tu coś
^Z
c:echo i tu tez cos wpisze - ale to jest ukryte>a.txt:ukryty.plik

po wykonaniu komendy dir widać a.txt – ale nigdzie nie zobaczy sie 'ukryty.plik’. wykonanie np. notepad a.txt:ukryty.plik – pokaże go i pozwoli wyedytować. sprawdzałem możliwość podczepienia pliq exe:
type calc.exe>notepad.exe:hiddencalc.exe
i działa. nie da się na szczęście takiego exe bezpośrednio uruchomić – trzeba go spowrotem przepisać do nowego pliq. przynajmniej tyle – bo nie jest to zbyt bezpieczny myk. kolejną ciekawostką jest fakt, że stary [nie]dobry type, strumieni nie obsługuje:

C:temp>type a.txt:new.exe
The filename, directory name, or volume label syntax is incorrect.

co nie znaczy, że nie da się tego zrobić innymi narzędziami. takich strumieni do pliq można dowiązać dowolnie wiele. w systemie vista i w2k8 polecenie dir zostało rozszerzone o dodatkowy parametr: /r, który wyświetla strumienie plików. przykładowy listing po doczepieniu 3 dodatkowych strumieni do pliq a.txt [w tym jednego pliq avi]:
C:temp>dir /r a.txt
Volume in drive C has no label.
Volume Serial Number is 0EAE-9628

Directory of C:temp

2008-12-16 19:15 5 a.txt
6 106 624 a.txt:avi.avi:$DATA
7 a.txt:new.txt:$DATA
9 a.txt:new2.txt:$DATA
1 File(s) 5 bytes
0 Dir(s) 19 567 476 736 bytes free

niestety [a może stety] żaden program nie był stanie otworzyć pliq a.txt:avi.avi – ciekawe, że notepad bez problemu otwiera a.txt:new.txt.

usunięcie pliq-linq, powoduje usunięcie wszystkich związanych z nim strumieni.

c:temp>dir
[...]
2008-12-16 19:15 5 a.txt
[...]
82 File(s) 129 929 767 bytes
14 Dir(s) 19 567 472 640 bytes free
c:temp>del a.txt
c:temp>dir
[...]
14 Dir(s) 19 573 579 776 bytes free

i tak widać, że usunięcie 5b pliq spowodowało zwolnienie ponad 6MB danych.

ponieważ w systemach XP- nie ma jak tego standardowo sprawdzić, dostępne są różne narzędzia, które wyświetlają te streamy – np. sysinternalsowy 'streams.exe’.

kiedy poszpera się dalej można trafić na ciekawy art jeszcze z czasów w2k, do którego dodany jest 'NTFSext.exe’, w którym znaleźć można bibliotekę 'strmExt.dll’. po jej rejestracji [skopiować do system32 i wykonać regsvr32 strmext.dll] dodawana jest informacja w explorerze o ADS. aby dodadkowa zakładka była dodana również do folderu, należy wyedytować następujące klucze:

HKEY_CLASSES_ROOTDirectoryshellexPropertySheetHandlers{C3ED1679-814B-4DA9-AB00-1CAC71F5E337}
HKEY_CLASSES_ROOTDriveshellexPropertySheetHandlers{C3ED1679-814B-4DA9-AB00-1CAC71F5E337}

i na koniec jeszcze jeden link – spojrzenie od strony [nie]bezpieczeństwa.

****UPDATE
ponieważ 'type’ nie rozumie streamów pozostaje pytanie – w jaki sposób go odczytać? spokojnie potrafi go zinterpretować windowsowa kompilacja linuxowego 'cat’ – do zassania z projektu unxutils.
i jeszcze jedna ciekawostka: streamy można doczepiać również do katalogu:
c:temp>mkdir teststream
c:temp>echo ukryty opis katalogu>teststream:hidden
c:temp>dir /r teststream
Volume in drive C has no label.
Volume Serial Number is 0EAE-9628

Directory of C:tempteststream

2008-12-19 14:06

.
4 .:hidden:$DATA
2008-12-19 14:06
..
0 File(s) 0 bytes

-o((:: sprEad the l0ve ::))o-

Comments (5)

  1. kaarol

    Odpowiedz

    A to nie było tak, że MS dodał to do NTFS by wspierać opcje dostępną w HFSie? Hmm można przecież w takiej formie przetrzymywać jakieś dodatkowe ustawienia aplikacji lub podpiąć ikony:)

  2. Odpowiedz

    Co do praktycznego użycia – chociażby informacje z summary plików sa przechowywane w ADS, o ile pamiętam to też thumbnails od XP w góre.

    BTW – z ciekawszych zastosowan – IIS 6 obsluguje ADS :)

  3. GT

    Odpowiedz

    Strumienie wykorzysywane są jeszcze w sytuacji, kiedy kopiujesz pliki wykonywalne z niezaufanego źródła i chcesz je potem uruchamiać.

    Miałem w głowie plan artykułu o strumieniach właśnie, ale skoro trochę napisałeś, to na razie zajmę się czymś mniej ciekawym… ;)

  4. Odpowiedz

    @tomek: zrobilem dir /s/r |find /i „$data” i to co widac na dysq to mase pliqw :ZoneIdentifier co niby jest opisem strefy jezykowej pliq. na stronach sa informacje, ze to uzywane przez IE/Outlook, ale te ADS sa podoklejane do doc, xls i innych pliczkow, przezemnie stworzonych – dziwne. thumnailsow ani icon raczej nie ma – jakies bardzo wyjatkowo sytuacje.

    @GT: mozesz opisac ten mechanizm? nie za bardzo rozumiem jak to niby ma dzialac….

  5. Odpowiedz

    @ nExoR
    Odnośnie tego co napisał GT (chyba :) : po ściągnięciu każdego pliku za pomocą IE dołączane są do niego w strumieniu Zone.Identifier informacje typu:

    [ZoneTransfer]
    ZoneId=3

    gdzie ZoneId zależy od tego w jakiej strefie jest witryna, z której plik jest ściągany. Następnie przy wysoko ustawionym poziomie zabezpieczeń w systemie zdarza się, że niektórych plików nie można uruchomić dopóki nie wciśnie się przycisku „unblock” we właściwościach pliku. Powoduje to usunięcie strumienia Zone.Identifier i umożliwia uruchomienie pliku.

    http://www.hanselman.com/blog/RemovingSecurityFromDownloadedPowerShellScriptsWithAlternativeDataStreams.aspx

    Podobnie jest w Outlooku.

    Swoją szosą ciekawe czy ktoś kiedyś napisze jakiegoś robaka, który w piękny i sterylny sposób unieruchomi system i oprogramowanie nie zmieniając nic w samych plikach i konfiguracji a jedynie dopisze cóś w ADS? :)

Skomentuj Tomek Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload CAPTCHA.