Introdução

O Alterna Data Stream permite que um arquivo ou diretório tenha algo além de seu conteúdo principal, como informações sobre sua origem, ícones, fontes, etc.

Alternate Data Stream ou ADS é uma característica do sistema de arquivos , que permite que um arquivo tenha múltiplos streams de dados.

Exemplo de uso comum

Observe o exemplo abaixo:

  • Um wallpaper chamado wallpaper.jpg baixado pelo usuário;

  • Ao clicar duas vezes, o sistema exibe as principais informa informações sobre o arquivo (a imagem propriamente dita);

  • Porém ele também guardou informações sobre a sua origem “em outro lugar”;

Diante disso, concluímos que o sistema de arquivos do Windows tem um lugar principal para guardar as principais informações de um arquivo, e dá a possibilidade de armazenar mais dados em um lugar alternativo, usando o mesmo arquivo. E na hora de abrir o arquivo, podemos ver um conteúdo, ou o outro.

Sendo que, formalmente, esses “lugares” são chamados de data stream, e no exemplo acima temos um data stream padrão, e outro data stream adicional decicado a armazenar informacoes da origem da imagem.

Este conteúdo adicional é quase um novo arquivo, que possui seus próprios atributos. Ao mesmo tempo, ele compartilha vários atributos, como descritor de segurança, com seu arquivo “pai”.

Data Stream Padrão - na prática

A convenção criada para fazer referência a um stream específico em um arquivo, consiste no seguinte nome do arquivo:nome do stream:tipo de stream

  • exemplo.txt::$DATA

  • exemplo.txt:stream1

  • exemplo.txt:stream2

Imagine um arquivo de texto, chamado exemplo1.txt cuja escrevi “Ola Mundo!” e um outro arquivo exemplo2.txt, por enquanto, vazio. O texto que digitei no notepad, será direcionado para o data stream padrão, pois o explorer está dizendo para abrir desta forma!

Figura 3

Podemos usar o Powershell com o comando Get-Item -path exemplo?.txt -stream * (Figura 4) ou o cmd com o comando dir /R que irá mostrar os arquivos com streams alternativos, e seus nomes.

Figura 4
Explicação do comando

Get-Item → cmdlet capaz de pegar o item (características) especificado;

-path → caminho do arquivo que quero pegar o item;

exemplo?.txt → o ? é usado como coringa para abranger o exemplo1.txt, e o exemplo2.txt, fiz isso para pegar os dois arquivos de uma vez;

-stream * → parâmetro usado para especificar a stream que quero ver nos resultados, com o coringa *, mostra todas as streams;

Na imagem, temos exemplo1.txt::$DATA, que se comparado ao formato que descrevi, falta o nome do stream, no meio, entre :: e por essa razão, este data stream primário, também é chamado stream não nomeado.

Data Stream Alternativo

No NTFS temos o Alternate Data Stream, que nos permite armazenar dados em outros streams adicionais.

Com o comando echo vamos usar o formato dito anteriormente para criar o data stream adicional chamado galodoido no arquivo exemplo2.txt que receberá o texto pamonha.

Figura 5

Como o data stream padrão ainda esta vazio, o explorer continuara achando que o arquivos esta vazio. Achamos então, uma forma esconder dados usando as características do ADS!

Para ler o conteúdo do stream galodoido temos algumas possibilidades:

Get-Content -path .\exemplo2.txt -stream galodoido
notepad.exe exemplo2.txt:galodoido
more exemplo2.txt:galodoido
Figura 6

Para finalizar, no final, o que temos é o seguinte, dados armazenados e separados por streams:

Figura 8

Atualizado

Isto foi útil?