Ver Mensaje Individual
  #7 (permalink)  
Antiguo 07/12/2008, 10:02
Avatar de Fayca
Fayca
 
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: acceder al superbloque de un disquete en C bajo Linux

estan la GNU C Library y la segunda pregunta que haces, primero fijate en como funciona el codigo, no estoy seguro que lo allas analisado,

el programa primero abre el fichero /etc/mnttab que es donde se encuentra la lista de todos los dispositibos despues lo carga en una estructura tipo mnttab.
en esta parte del programa abre los ficheros sacandolos de la estructura

Código:
/* Apertura del fichero de dispositivo asociado al sistema de ficheros. */
            sprintf(sbdev, "dev/%s", mntbuf.mt_dev);
            if((sbfd = open(sbdev, O_RDONLY)) == -1)
            {
                     printf("\007!!! ACCESO AL SISTEMA [%s] DENEGADO !!!\0007\n", sbdev);
                     printf("Pulse ENTER para continuar.");
                     while(putchar(getchar()) != 10);
            }
            /* El puntero de lectura/escritura se sitúa en el segundo bloque
               El primer bloque lo ocupa el programa 'boot'. */

            else if(lseek(sbfd, BSIZE, SEEK_SET) == -1)
                perror(sbdev);
            /* Lectura del superbloque */
            else if(read(sbfd, &sbbuf, sizeof(sbbuf)) != sizeof(sbbuf))
                     perror(sbdev);
            else
            {
despues de eso te muestra la informacion del bloques, tansolo tienes que modificar el programa para que no abra el fichero mnttab y quitar la parte que lo carga en la estructra y abrir directamente /dev/fd0,
o mejor aun puedes buscar si /dev/fd0 se encuentra en la lista o de lo contrario mostrar un error seria algo mas 'pro' XD