Hostwinds Blog
Resultados da busca por:
Desde 1995, o Microsoft Windows NTFS O sistema de arquivos suportou fluxos.De fato, todos os "arquivos" do NTFS são realmente fluxos.O que normalmente pensamos como um arquivo no NTFS é mais precisamente chamado de fluxo de dados padrão.Um fluxo de dados padrão não tem nome.O que é um fluxo de dados sem nome?Considere o formato de nome de arquivo totalmente qualificado do NTFS:
file-name:stream-name:stream-type
Da esquerda para a direita, temos:
Um exemplo a seguir:
myTextFile.txt
Este é um fluxo de dados padrão.Como mencionado, os fluxos de dados padrão não têm nome.Isso pode ser visto em seu formulário de nome de arquivo totalmente qualificado:
myTextFile.txt::$DATA
O fato de não haver nada entre os dois pontos (: :) indica que este é um fluxo de dados sem nome.Para um fluxo de dados padrão, não precisamos usar o nome do arquivo totalmente qualificado, embora possamos.Por exemplo, no prompt de comando do Windows, os dois comandos a seguir abrem precisamente o mesmo fluxo de dados padrão:
notepad myTextFile.txt
notepad myTextFile.txt::$DATA
Para simplificar as coisas, usaremos o termo "arquivo" no lugar do "fluxo de dados padrão" mais preciso.
Você pode criar um fluxo nomeado em um arquivo usando NTFs normais Convenções de nomeação.Por exemplo, a partir do prompt de comando, execute o seguinte:
notepad foo.docx:bar.txt
Selecione sim Quando perguntado se você deseja criar um novo arquivo.Em seguida, digite o seguinte conteúdo:
This is the named stream "bar.txt" that is in (attached to) the file "foo.docx".
Salvar e sair do bloco de notas.
Quando você executa o comando dir Dir, você verá um arquivo chamado Foo.docx, cujo tamanho, curiosamente, é 0 bytes.No entanto, quando você executa o comando dir /r, verá o fluxo de dados nomeado que acabou de criar, cujo tamanho é de 80 bytes:
Esses dois tamanhos de fluxo fazem sentido nesse fluxo foo.docx não tem conteúdo enquanto o stream foo.docx: bar.txt possui 80 bytes no conteúdo.Para ajudar a elucidar isso, adicione algum conteúdo ao fluxo de dados padrão, como segue:
notepad foo.docx
Digite o seguinte texto:
This is the default data stream (file) named "foo.docx", which has one named data stream attached to it, called "bar.txt".
Salvar e sair do bloco de notas.
Execute dir /r novamente e observe que o fluxo de dados padrão foo.docx agora contém 120 bytes de dados:
Por esse motivo, podemos dizer que os dois fluxos consomem 200 bytes no volume.Dito isto, a execução do comando DIR sem adornos fornece informações um pouco enganosas - isso implica que foo.docx contém apenas 120 bytes de dados, o que é impreciso no sentido de que quando você exclui foo.docx, você está realmente liberando 200 bytes de volta paraVolume como espaço livre disponível:
del foo.docx
dir /r
A moral da história, talvez, é sempre usar o interruptor /r.O que levanta a pergunta: como você encontra todos os arquivos que contêm fluxos "ocultos"?Esse tópico é discutido a seguir.
Se deixarmos o termo "arquivo" significa "fluxo de dados padrão" e "fluxo" significa "stream de dados nomeados", podemos usar o PowerShell para encontrar todos os arquivos contendo fluxos da seguinte forma.
Abra um prompt de comando do PowerShell e, opcionalmente
$ErrorActionPreference = "SilentlyContinue"
Em seguida, execute os seguintes comandos:
Get-ChildItem -Path \ -Recurse | Get-Item -Stream * | Where-Object Stream -ne ':$DATA' | Convert-Path
Para o volume atual, isso retorna uma lista de todos os arquivos que contêm um ou mais fluxos.Este pipeline PowerShell é explicado da seguinte forma:
De um prompt de comando PowerShell, você pode remover a barra de fluxo.txt do arquivo foo.docx da seguinte forma:
Remove-Item -Path .\foo.docx -Stream bar.txt
Se o nome do fluxo tiver espaços, você deverá usar cotações, como em:
Remove-Item -Path ".\Bob's Grandfather.png" -Stream "Image Info.txt"
A intenção original dos fluxos NTFS era ativar a interoperabilidade do arquivo Apple Macintosh, mas os fluxos NTFs podem ser bastante úteis.Por exemplo, você pode querer "incorporar" informações detalhadas nos arquivos de fotografias de família:
Se o arquivo de imagem acima foi nomeado "Bob's avfather.png", você poderá adicionar um fluxo (usando o PowerShell) contendo informações detalhadas da imagem, como segue:
Set-Content -Path ".\Bob's Grandfather.png" -Stream "image-info.txt" -Value "This is Bob's grandfather (on his mother's side) in the Gold Rush Bar and Restaurant in Seattle, WA - circa 1856."
Para ver os metadados da imagem que você acabou de definir, execute:
Get-Content -Path ".\Bob's Grandfather.png" -Stream "image-info.txt"
Observe que o argumento -flure exige que você saiba o nome exato do fluxo (os curingas não são permitidos).Lembre-se de que você sempre pode obter nomes de fluxos usando get-item (que aceita curingas):
Get-Item -Path '.\Bob''s Grandfather.png' -Stream *
Para o nome de fluxo procurado, consulte a propriedade Stream na saída resultante:
Outros usos para fluxos de NTFS podem incluir:
Por fim, você deve ter observado que seu volume contém vários fluxos denominados zone.Identifier.Esses fluxos são geralmente usados pelo Windows para o armazenamento de zonas de segurança do URL, que determinam se um arquivo deve ser confiável ou não.Um exemplo mostrando como visualizar o conteúdo de uma zona.
Get-Content -Path .\sanders.net-May-2022.gz -Stream Zone.Identifier
E através do prompt de comando do Windows:
notepad sanders.net-May-2022.gz:Zone.Identifier
Felizmente, você achou este artigo interessante;E talvez você encontre alguns usos interessantes para os fluxos NTFs inicializarem.
Escrito por Karlito Bonnevie / Maio 24, 2022