Názor k článku Atributy souboru mohou obsahovat URL, ze které byl soubor stažen od Kamil Zmeškal - On název "Atribut" je v případě Windows zavádějící....

  • Článek je starý, nové názory již nelze přidávat.
  • 27. 12. 2018 6:58

    Kamil Zmeškal

    On název "Atribut" je v případě Windows zavádějící. Tam se to jmenuje Stream (velmi pěkný popis) a lze tam narvat cokoli, o jakékoli velikosti a může jich být více.
    Zákeřné je to v tom, že standardní nástroje a většina správců souborů je vůbec neukazuje a ani se nemění udávaná velikost původního souboru (což je zle z principu, jak se ukládají OK).

    Příklad: Vytvořím si textový soubor test.txt s obsahem 123456
    C:\Temp>echo 123456 >test.txt

    Velikost má 9 byte:
    C:\Temp>dir
    27.12.2018 06:21 9 test.txt

    Obsah je očekávaný (na konci je mezera + CRLF):
    0000000000: 31 32 33 34 35 36 20 0D │ 0A 123456

    Teď do streamu k tomuto souboru, který si pojmenuji "stream1", přidám např. výpis z nslookup:
    C:\Temp>nslookup portal.gov.cz >test.txt:stream1

    Ještě třeba do streamu s názvem "stream2" přidám obsah www.root.cz:
    C:\Temp>D:\Pro­gramy\#Internet\CUr­l\curl.exe www.root.cz >test.txt:stream2

    Velikost souboru se ale stále nezměnila, datum zápisu ano:
    C:\Temp>dir
    27.12.2018 06:24 9 test.txt

    Když se na to podívám nějakým nástrojem (např. Streams ze Sysinternals nebo AlternateStre­amView or NirSoft), který se streamy umí pracovat, tak je ukáže:
    C:\Temp>D:\Pro­gramy\#System\Sy­sInternals\stre­ams64.exe C:\Temp\test.txt
    streams v1.60 - Reveal NTFS alternate streams.
    Copyright (C) 2005-2016 Mark Russinovich
    Sysinternals - www.sysinternals.com

    C:\Temp\test.txt:
    :stream1:$DATA 214
    :stream2:$DATA 305

    Takže je vidět, že v souboru test.txt jsou dva streamy, stream1 s velikostí 214 byte a stream2 s velikostí 305 byte.

    Obsah souboru se ale pro standardní nástroje nezměnil:
    C:\Temp>more test.txt
    123456

    Vypíšu si obsah streamů.

    stream1:
    C:\Temp>more <test.txt:stream1
    Server: dynamic-2a00-1008-81d8-1ac2-0000-0000-0000-0001.ipv6.bro­adband.iol.cz
    Address: 2a00:1018:81d­c:1aba::1

    Name: gov.cz
    Addresses: 2a03:2320:b94­4:1c60::96
    185.68.28.96
    Aliases: portal.gov.cz

    stream2 (před konce tagů jsem dal #, aby to root.cz nechápal jako řídící tagy):
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"#>
    <html#><head#>
    <title#>301 Moved Permanently</ti­tle#>
    </head#><body#>
    <h1#>Moved Permanently</h1#>
    <p#>The document has moved.... (zkráceno)

    Klidně mohu vytvořit soubor s velikostí 0 byte, ve kterém nic nebude a vše bude "schované" jen ve streamech. Ale streamy přežijí pouze v rámci NTFS. Když se soubor se streamy překopíruje např. na Google Drive (nebo na flash s FAT32), tak o ně přijde.