Hostwinds Blog
Resultados de búsqueda para:
Desde 1995, el Microsoft Windows NTFS El sistema de archivos ha admitido transmisiones.De hecho, todos los "archivos" de NTFS son realmente transmisiones.Lo que normalmente pensamos como un archivo en NTFS se llama más precisamente un flujo de datos predeterminado.Una secuencia de datos predeterminada no tiene nombre.¿Qué es un flujo de datos sin nombre?Considere el formato de nombre de archivo NTFS totalmente calificado:
file-name:stream-name:stream-type
De izquierda a derecha tenemos:
Sigue un ejemplo:
myTextFile.txt
Este es un flujo de datos predeterminado.Como se mencionó, los flujos de datos predeterminados no tienen nombre.Esto se puede ver en su formulario de nombre de archivo totalmente calificado:
myTextFile.txt::$DATA
El hecho de que no haya nada entre los dos colons (: :) indica que este es un flujo de datos sin nombre.Para un flujo de datos predeterminado, no necesitamos usar el nombre de archivo completamente calificado, aunque podemos.Por ejemplo, desde el símbolo del sistema de Windows, los siguientes dos comandos se abren precisamente el mismo flujo de datos predeterminado:
notepad myTextFile.txt
notepad myTextFile.txt::$DATA
Para simplificar las cosas, utilizaremos el término "archivo" en lugar de la "secuencia de datos predeterminada" más precisa.
Puede crear una transmisión con nombre en un archivo usando NTFS normal convenciones de nombres.Por ejemplo, desde el símbolo del sistema, ejecute lo siguiente:
notepad foo.docx:bar.txt
Seleccione si Cuando se le preguntó si desea crear un archivo nuevo.A continuación, escriba el siguiente contenido:
This is the named stream "bar.txt" that is in (attached to) the file "foo.docx".
Guardar y salir del bloc de notas.
Cuando ejecute el comando Dir, verá un archivo llamado foo.docx cuyo tamaño, curiosamente, es 0 bytes.Sin embargo, cuando ejecute el comando Dir /R, verá el flujo de datos con nombre que acaba de crear, cuyo tamaño es 80 bytes:
Estos dos tamaños de transmisión tienen sentido en esa transmisión foo.docx no tiene contenido, mientras que Stream foo.docx: Bar.txt tiene un valor de 80 bytes de contenido.Para ayudar a dilucidar esto, agregue algo de contenido al flujo de datos predeterminado, de la siguiente manera:
notepad foo.docx
Ingrese el siguiente texto:
This is the default data stream (file) named "foo.docx", which has one named data stream attached to it, called "bar.txt".
Guardar y salir del bloc de notas.
Ejecute dir /r nuevamente y tenga en cuenta que el flujo de datos predeterminado foo.docx ahora contiene 120 bytes de datos:
Debido a esto, podemos decir que las dos transmisiones consumen 200 bytes en el volumen.Dicho esto, ejecutar el comando Dir sin adornos proporciona información algo engañosa: implica que Foo.docx solo contiene 120 bytes de datos, lo cual es inexacto en el sentido de que cuando elimina foo.docx, en realidad está liberando 200 bytes de regresoVolumen según el espacio libre disponible:
del foo.docx
dir /r
La moraleja de la historia, tal vez, es usar siempre el interruptor /R.Lo que plantea la pregunta, ¿cómo se encuentra todos los archivos que contienen transmisiones "ocultas"?Ese tema se discute a continuación.
Si dejamos que el término "archivo" significa "flujo de datos predeterminado" y "transmisión" media "flujo de datos con nombre", entonces podemos usar PowerShell para encontrar todos los archivos que contienen transmisiones de la siguiente manera.
Abra un símbolo del sistema PowerShell y opcionalmente ejecute el siguiente comando (esto suprime los mensajes de error de acceso posiblemente molesto denegado):
$ErrorActionPreference = "SilentlyContinue"
A continuación, ejecute los siguientes comandos:
Get-ChildItem -Path \ -Recurse | Get-Item -Stream * | Where-Object Stream -ne ':$DATA' | Convert-Path
Para el volumen actual, esto devuelve una lista de todos los archivos que contienen una o más transmisiones.Esta tubería PowerShell se explica de la siguiente manera:
Desde un símbolo del sistema PowerShell, puede eliminar el transmisión bar.txt del archivo foo.docx de la siguiente manera:
Remove-Item -Path .\foo.docx -Stream bar.txt
Si el nombre de la secuencia tiene espacios, debe usar citas, como en:
Remove-Item -Path ".\Bob's Grandfather.png" -Stream "Image Info.txt"
La intención original de las transmisiones NTFS era habilitar la interoperabilidad de archivos de Apple Macintosh, pero las transmisiones NTFS pueden ser bastante útiles.Por ejemplo, es posible que desee "incrustar" información detallada dentro de los archivos de fotografías familiares:
Si el archivo de imagen de arriba se llamaba "Bob's Grandfather.png", entonces podría agregar una transmisión (usando PowerShell) que contiene información de imagen detallada, de la siguiente manera:
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 los metadatos de la imagen que acabas de configurar, ejecute:
Get-Content -Path ".\Bob's Grandfather.png" -Stream "image-info.txt"
Tenga en cuenta que el argumento -stream requiere que sepa el nombre exacto de la transmisión (no están permitidos los comodines).Recuerde que siempre puede obtener nombres de flujo usando Get-Item (que acepta comodines):
Get-Item -Path '.\Bob''s Grandfather.png' -Stream *
Para el nombre de transmisión solicitado, mire la propiedad de la secuencia en la salida resultante:
Otros usos para transmisiones NTFS pueden incluir:
Por último, es posible que haya notado que su volumen contiene una serie de transmisiones nombradas Zone.identifier.Windows generalmente usa estas transmisiones para el almacenamiento de zonas de seguridad de URL, que determinan si se debe confiar en un archivo o no.Un ejemplo que muestra cómo ver el contenido de una zona. El flujo de identificación sigue:
Get-Content -Path .\sanders.net-May-2022.gz -Stream Zone.Identifier
Y a través del símbolo del sistema de Windows:
notepad sanders.net-May-2022.gz:Zone.Identifier
Con suerte, has encontrado este artículo interesante;Y tal vez encuentre algunos usos interesantes para que las transmisiones NTFS arrancen.
Escrito por Karlito Bonnevie / Mayo 24, 2022