¿Es posible determinar cuándo se creó una partición NTFS?

16

Tenemos un cliente en el que sería muy útil determinar CUANDO se inicializó una unidad o se creó una partición NTFS. ¿Hay un valor de marca de tiempo en alguna parte? Si alguien pudiera arrojar algún consejo, sería muy apreciado.

¡Gracias!

-slashp

slashp
fuente
Solo una idea, pero ¿podría revertir el cálculo del volumen de UUID para obtener una fecha / hora? (No sé cómo se genera el UUID, por lo que tomaría un poco de investigación descubrirlo y es posible que no sea posible).
Chris Nava
1
@ChrisNava: La ID única utilizada en NTFS no es un UUID de 128 bits sino un número aleatorio de 64 bits. (Además, los sistemas modernos tampoco generan UUID basados ​​en el tiempo tipo 1; los UUID basados ​​en el azar de tipo 4 son preferibles para la privacidad. Sin embargo, si fuera un UUID tipo 1, entonces no habría ningún cálculo para revertir; la marca de tiempo es almacenado a plena vista.)
usuario1686

Respuestas:

17

Si. Incluso puedes hacerlo a través de una LAN.

La transacción CIFS es TRANS2_QFSINFOy el nivel de información es SMB_QUERY_FS_VOLUME_INFO. La función nativa de la API de Windows NT para consultar el tiempo de creación de un volumen es ZwQueryVolumeInformationFile(), lo que produce una FILE_FS_VOLUME_INFORMATIONestructura de datos (casi idéntica a la de CIFS, nota) cuando se le solicita la FileFsVolumeInformationclase de información. Probar que esta consulta funciona es parte del probador IFS que Microsoft proporciona a los desarrolladores de controladores.

Curiosamente, nadie parece haber escrito una útil utilidad que solo consulta un volumen e imprime su marca de tiempo de creación en forma legible para humanos. 1 Lo más cercano que vas a llegar hasta donde puedo decir es poner en marcha la procmonherramienta de SysInternals y buscar las consultas de información de volumen que se transmiten. Quizás alguien que lea esto se inspire para crear un volcomando mejorado .

Sí, la marca de tiempo de creación de volumen se inicializa correctamente y no solo se establece en cero o en alguna otra constante. No lo he verificado, pero mi suposición educada para la ubicación de almacenamiento de esta información es el $STANDARD_INFORMATIONatributo de la $Volumeentrada MFT. Puedo pensar en otros tres lugares posibles, pero ese es el más lógico.


1grawity 's utilidad sólo necesita un poco más pulido, incluyendo los usos simples de FileTimeToSystemTime()y GetTimeFormat(), para que sea utilizable para los usuarios finales que no puede decodificar Win32 marcas de tiempo en sus cabezas. ☺

JdeBP
fuente
Wow, te doy un +1 por esta respuesta porque era exactamente lo que estaba buscando. Desafortunadamente, no soy un programador de API Win32 con conocimiento de los componentes internos del sistema y estaba buscando una solución rápida. Buen pensamiento con el procmon. Gracias aunque !!!
slashp
77
Algo como esto ? (advertencia de código feo)
usuario1686
8

No hay una "fecha de creación de volumen" que conozca incorporada a NTFS. Sin embargo, debe poder aproximar la fecha de creación muy de cerca al observar la fecha de creación del System Volume Informationdirectorio en la raíz del volumen.

Andrew Lambert
fuente
2
Esto me da una muy buena aproximación. ¡Gracias por tu pronta respuesta! Ahora sé a quién culpar por la unidad no incluida en nuestras copias de seguridad :).
slashp
0

Esto está expuesto en alguna parte. Si inicia un CD de Windows XP y accede a la consola de recuperación, la versión de chkdsk allí imprimirá la fecha de creación del volumen una vez que termine de ejecutarse.

Aaron
fuente