PDA

Ver la versión completa : Modifica la hora, la fecha y/o los atributos de múltiples archivos



LUK
04-05-2010, 15:03
Desde NirSoft (http://www.nirsoft.net/) nos presentan BulkFileChanger (http://www.nirsoft.net/utils/bulk_file_changer.html), una evolución de FileData Changer creado hace 8 años. Esta herramienta permite modificar las propiedades en múltiples archivos de los sistemas operativos Windows de forma independiente.


Con ella se puede modificar la fecha y la hora, sumar o restar segundos/minutos/horas/días a la fecha de creación, modificación, último acceso de un archivo, pudiéndose modificar cada uno de estos parámetros de forma independiente.

También permite modificar las propiedades del archivo (sólo lectura, oculto, archivado, sistema), y añadir ficheros según la ruta y usando wildcards, por ejemplo podríamos seccionar los "*.txt".


http://4.bp.blogspot.com/_2hGRdOsjT_o/S9wz10tOGeI/AAAAAAAAAew/OEKt7DfRE4U/s400/BFC-1.png (http://4.bp.blogspot.com/_2hGRdOsjT_o/S9wz10tOGeI/AAAAAAAAAew/OEKt7DfRE4U/s1600/BFC-1.png)

http://2.bp.blogspot.com/_2hGRdOsjT_o/S9wz7S2OFFI/AAAAAAAAAe4/UhmgAqCwS7M/s400/BFC-2.png (http://2.bp.blogspot.com/_2hGRdOsjT_o/S9wz7S2OFFI/AAAAAAAAAe4/UhmgAqCwS7M/s1600/BFC-2.png)

http://4.bp.blogspot.com/_2hGRdOsjT_o/S9w0BYOs6fI/AAAAAAAAAfA/4urTboJ9Dos/s400/BFC-3.png (http://4.bp.blogspot.com/_2hGRdOsjT_o/S9w0BYOs6fI/AAAAAAAAAfA/4urTboJ9Dos/s1600/BFC-3.png)
Con ella se puede ejecutar un programa por línea de comandos, y pasarle por parámetros los archivos que hemos modificado, por ejemplo: c:\temp\MyProgram.exe "%1" que ejecutará el programa para cada fichero de la lista, tomando en %1 el path completo del archivo.


http://1.bp.blogspot.com/_2hGRdOsjT_o/S9whr-ULETI/AAAAAAAAAeg/4Da9Tc71IVg/s400/BFC-4.png (http://1.bp.blogspot.com/_2hGRdOsjT_o/S9whr-ULETI/AAAAAAAAAeg/4Da9Tc71IVg/s1600/BFC-4.png)


http://3.bp.blogspot.com/_2hGRdOsjT_o/S9wh0hiKwiI/AAAAAAAAAeo/Fbn9uFWch4c/s400/BFC-5.png (http://3.bp.blogspot.com/_2hGRdOsjT_o/S9wh0hiKwiI/AAAAAAAAAeo/Fbn9uFWch4c/s1600/BFC-5.png)Esta herramienta también permite hacer copy and paste de los ficheros del Explorador de Windows y añadirlos a la lista de archivos de la herramienta para ser modificados. O arrastrar archivos de otras herramientas de NirSoft como son SearchMyFiles (http://www.nirsoft.net/utils/search_my_files.html) y HashMyFiles (http://www.nirsoft.net/utils/hash_my_files.html).



Esta herramienta podría ser usada por un intruso que se colase en nuestro sistema he introdujese un malware dentro de alguno de nuestros ficheros.

Este tipo de herramientas dificultan el trabajo de los investigadores forenses, modificando la línea de tiempo.

Enlaces:
http://www.nirsoft.net/
http://www.securitybydefault.com/2010/05/modifica-la-hora-la-fecha-yo-los.html

hystd
04-05-2010, 22:51
Buena aplicación, pero cambiar los metadatos de un fichero es algo que se lleva estudiando y haciendo desde hace mucho, precisamente para eso, para modificar "pruebas" de algo.

Esta info se puede consultar y modificar mediante el uso de la API WIN32 que provee el sistema operativo. En concreto funciones como GetFileAttributes y SetFileAttributes te permiten saber si la ruta pasada como parámetro corresponde a un fichero, a un directorio, si está comprimido, si está oculto, si es un fichero temporal, si es de solo lectura, etc...

Existen además estructuras de datos y funciones que permiten manipular las fechas y horas de creación, modificación y último acceso al fichero entre otras muchas cosas. En concreto, las funciones GetFileTime y SetFileTime, hacen esto posible de una forma muy fácil.

Además de las funciones nombradas, hay otras dos que nos da el Windows, como son GetFileInformationByHandle y SetFileInformationByHandle que permiten manipular metadatos más allá de la hora y fecha. Usan un puntero hacia una estructura denominada "BY_HANDLE_FILE_INFORMATION", la cual contiene el siguiente aspecto:


typedef struct _BY_HANDLE_FILE_INFORMATION {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD dwVolumeSerialNumber;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD nNumberOfLinks;
DWORD nFileIndexHigh;
DWORD nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION;


El tipo "FILETIME" es un puntero a otra estructura con el siguiente aspecto:


typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME;


Creo que viendo esto y parando unos minutos en la MSDN, tampoco hace falta explicar mucho más, salvo saber lo que es un Get y un Set :p.

Comento todo esto para el que le mole hacerse sus propias herramientas h4x0r.

Un saludo.

Fruit
04-05-2010, 23:50
HySTD el putísimo mago de la API de Windows. Nada más que hablar xD

RaidMan
05-05-2010, 00:44
Es Uno con la API...

calle
18-01-2011, 11:17
hystd, me gustaría hacerte una pregunta.
estoy intentando hacer un gestor documental y necesito identificar los ficheros por un id único para poder diferenciarlos, ya que se puede dar el caso de subir dos ficheros con el mismo nombre y necesito el id para diferenciarlos.

estoy intentando hacerme un ejemplo para probar GetFileInformationByHandle pero nunca he usado la api y me estoy liando un poco

no se si esto va así
[DllImport("kernel32.dll")]
private static extern bool GetFileInformationByHandle(SafeFileHandle hFile, out BY_HANDLE_FILE_INFORMATION lpFileInformation);

typedef struct _BY_HANDLE_FILE_INFORMATION {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD dwVolumeSerialNumber;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD nNumberOfLinks;
DWORD nFileIndexHigh;
DWORD nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION;

typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME;

y luego no se como llamarlo con una ruta a mi fichero...
me puedes indicar un poco o recomendarme un libro o una web

Muchas gracias