elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Cómo detectar mediante la Api cambios en la información del disco duro.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Cómo detectar mediante la Api cambios en la información del disco duro.  (Leído 7,847 veces)
goodbye

Desconectado Desconectado

Mensajes: 93



Ver Perfil
Cómo detectar mediante la Api cambios en la información del disco duro.
« en: 30 Julio 2005, 11:06 am »

Hola a todos!
Quien sabe sobre alguna Api que monitoree la integridad de la información en los discos fijos.
O sea detectar en el sistema y en todo momento si cree, modifique, copie, movi o borre una información X (no importa cual) en el disco duro.
Cómo saber si hubo cambios en la estructura de la información en general mediante la Api o evento del sistema?

Gracias!
Saludos.


« Última modificación: 30 Julio 2005, 23:18 pm por CrackelDestripador » En línea

Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.
{_The_Alwar_}


Desconectado Desconectado

Mensajes: 711

Who dares win


Ver Perfil WWW
Re: Cómo detectar mediante la Api cambios en la información del disco duro.
« Respuesta #1 en: 30 Julio 2005, 13:33 pm »

Yo queria saber si exista algun programa que registre todo movimiento en el disco duro, lectura, escritura, etc, y tb del registro de windows, pero no veo ninguno, y me preguntaba si habria alguna forma de crearlo, pero no e encontrado nada


En línea

goodbye

Desconectado Desconectado

Mensajes: 93



Ver Perfil
Re: Cómo detectar mediante la Api cambios en la información del disco duro.
« Respuesta #2 en: 30 Julio 2005, 21:05 pm »

Deberia haber alguna Api..
Preguntemosle a nuestro moderador que es toda una autoridad en la materia.

Saludos.
« Última modificación: 30 Julio 2005, 21:13 pm por CrackelDestripador » En línea

Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.
Slasher-K


Desconectado Desconectado

Mensajes: 1.477


Ver Perfil
Re: Cómo detectar mediante la Api cambios en la información del disco duro.
« Respuesta #3 en: 31 Julio 2005, 00:40 am »

Como existen las funciones de monitoreo del registro también están las de archivos, pero lo ideal sería hacerlo con un driver como lo hace el RegMon o el FileMon (dos programas excelentes).

Las funciones son FindFirstChangeNotification y FindNextChangeNotification. Primero se llama a la primera función y luego en un bucle a la segunda.

Cuando no se necesite más el handle se debe liberar llamando a FindCloseChangeNotification.

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
{_The_Alwar_}


Desconectado Desconectado

Mensajes: 711

Who dares win


Ver Perfil WWW
Re: C�mo detectar mediante la Api cambios en la informaci�n del disco duro.
« Respuesta #4 en: 31 Julio 2005, 00:44 am »

osita! y yo pensaba que no habia na pa esto! esk hay que preguntar en el sitio adecuado a la persona adecuada, por cierto, esos programas que tu as nombrado que hacen? monitorean archivos y el regisro?
En línea

goodbye

Desconectado Desconectado

Mensajes: 93



Ver Perfil
Re: Cómo detectar mediante la Api cambios en la información del disco duro.
« Respuesta #5 en: 31 Julio 2005, 05:25 am »

Gracias Anhur!
Siempre nos salvas!  ;D

Saludos.
En línea

Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.
sch3m4
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.608

Nihil est in intelectu quod prius not fuerit insen


Ver Perfil WWW
Re: Cómo detectar mediante la Api cambios en la información del disco duro.
« Respuesta #6 en: 31 Julio 2005, 16:24 pm »

este no es el foro adecuado para mi post, pero sí el hilo...  ??? He codeado un código para probarlo pero no funciona, cambio el nombre de algún archivo y no me dice nada. Aquí os dejo el código a ver qué le veis:

Código:
#include <stdio.h>
#include <windows.h>

/*FUNCIÓN PRINCIPAL*/
void main()
{
//devuelde la descripción del error, a partir de su código
char *MensajeError(DWORD error_num);
HANDLE mon1=FindFirstChangeNotification("D:\\mon",TRUE,FILE_NOTIFY_CHANGE_FILE_NAME);

//creamos el handle
if(mon1==INVALID_HANDLE_VALUE)
{
printf("[!] Error al crear el handle -> %s",MensajeError(GetLastError()));
return;
}

for(;;)
{
        if (FindNextChangeNotification(mon1)==0)
{
printf("\nCambio en el nombre de un archivo");
}
Sleep(100);
}

//cerramos y salimos
FindCloseChangeNotification(mon1);
return;
}

//devuelde la descripción del error, a partir de su código
char *MensajeError(DWORD error_num)
{
char *lpMsgBuf;

//cojemos el mensaje del error
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
error_num,
0,
(LPTSTR) &lpMsgBuf,
0,
NULL
);

return lpMsgBuf;
}

Creo que no hace falta decir que dicho archivo se encuentra en "D:\mon"  :)
En línea

SafetyBits

"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.(..
goodbye

Desconectado Desconectado

Mensajes: 93



Ver Perfil
Re: Cómo detectar mediante la Api cambios en la información del disco duro.
« Respuesta #7 en: 31 Julio 2005, 17:39 pm »

No sé si será lo más apropiado pero ahí voy con mi ejemplo.
Use un Timer y un ListBox para esto.

Código:
Private Const FILE_NOTIFY_CHANGE_ATTRIBUTES = &H4
Private Const FILE_NOTIFY_CHANGE_DIR_NAME = &H2
Private Const FILE_NOTIFY_CHANGE_FILE_NAME = &H1
Private Const FILE_NOTIFY_CHANGE_SIZE = &H8
Private Const FILE_NOTIFY_CHANGE_LAST_WRITE = &H10
Private Const FILE_NOTIFY_CHANGE_SECURITY = &H100
Private Const FILE_NOTIFY_CHANGE_ALL = &H4 Or &H2 Or &H1 Or &H8 Or &H10 Or &H100
Private Const INFINITE = &HFFFFFFFF

Private Declare Function FindFirstChangeNotification Lib "kernel32" Alias "FindFirstChangeNotificationA" _
(ByVal lpPathName As String, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long) As Long
Private Declare Function FindNextChangeNotification Lib "kernel32" (ByVal hChangeHandle As Long) As Long
Private Declare Function FindCloseChangeNotification Lib "kernel32" (ByVal hChangeHandle As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Dim Handle As Long

Private Sub Form_Load()
    Timer1.Interval = 1000
    Handle = FindFirstChangeNotification("C:\", INFINITE, FILE_NOTIFY_CHANGE_ALL)
    WaitForSingleObject Handle, 1
End Sub

Private Sub Timer1_Timer()
    FindNextChangeNotification Handle
    If WaitForSingleObject(Handle, 1) = 0 Then
        List1.AddItem "La informacion del disco C:\ ha cambiado!!! ~ [ " & Now & " ]"
        List1.Selected(List1.ListCount - 1) = True
    End If
    DoEvents
End Sub

Private Sub Form_Unload(Cancel As Integer)
    FindCloseChangeNotification Handle
End Sub
En línea

Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.
goodbye

Desconectado Desconectado

Mensajes: 93



Ver Perfil
Re: Cómo detectar mediante la Api cambios en la información del disco duro.
« Respuesta #8 en: 31 Julio 2005, 17:56 pm »

En este otro intento controlar al mismo tiempo todas las unidades logicas añadiendo dos Apis más a lo anterior.
Pero por más que le di vueltas no me funcionó muy bien. Por poco me convierto en mi propio avatar  :(
Aquí les dejo un trozo del

Código:
Private Declare Function GetLogicalDrives Lib "kernel32" () As Long
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Dim Cont As Byte
Dim Drives As String
Dim Handle() As Long

Private Sub Form_Load()

    Dim U As String * 1
    Dim LDs As Long, Cnt As Long
   
    LDs = GetLogicalDrives
   
    For Cnt = 0 To 25
        If (LDs And 2 ^ Cnt) <> 0 Then
            If GetDriveType(Chr$(65 + Cnt) & ":\") = 3 Then _
            Drives = Drives + Chr$(65 + Cnt)
        End If
    Next Cnt
   
    ReDim Handle(1 To Len(Drives))
   
    For Cont = 1 To Len(Drives)
        U = Mid(Drives, Cont, 1)
        Handle(Cont) = FindFirstChangeNotification(U & ":\", INFINITE, FILE_NOTIFY_CHANGE_ALL)
        WaitForSingleObject Handle(Cont), 1
        List1.AddItem "La informacion del disco " & U & _
        ":\ ha cambiado!!! ~ [ " & Now & " ]": List1.Selected(List1.ListCount - 1) = True
    Next

End Sub

Ahora pregunto:
Existe otra via menos alevosa  :P - con perdón de Anhur
Alguna variable global del sistema o manera de pasarle todas las unidades juntas ???

Saludos.
« Última modificación: 31 Julio 2005, 20:41 pm por CrackelDestripador » En línea

Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.
goodbye

Desconectado Desconectado

Mensajes: 93



Ver Perfil
Re: Cómo detectar mediante la Api cambios en la información del disco duro.
« Respuesta #9 en: 31 Julio 2005, 18:11 pm »

Citar
He codeado un código para probarlo pero no funciona, cambio el nombre de algún archivo y no me dice nada. Aquí os dejo el código a ver qué le veis:

Ah Lympex! Eres admirable hombre, lástima que no tenga suficiente conocimiento en lenguaje C para codearme contigo.
De todas formas espero que lo que postee te sirva.

Saludos.
« Última modificación: 31 Julio 2005, 20:29 pm por CrackelDestripador » En línea

Al lado de la dificultad está la facilidad.
Cambiad de placeres, pero no cambies de amigos.
Aceptar un favor de un amigo, es hacerle otro.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines