viernes, 17 de agosto de 2007

Firmar discos duros

PUBLICADA, PERO PENDIENTE DE MEJORAR EL FORMATO (no habrá cambios de contenido, salvo correcciones)


¿Cómo distinguir entre sí dos discos duros?

Evidentemente, la pregunta no es cómo distinguirlos por fuera, para eso basta con una pegatina. Sino cómo distinguirlos desde el ordenador.

La respuesta típica sería usar el número de serie. Una aplicación sencilla como smartctl nos da tan interesante dato, que además es único para cada disco.

Vale. Pero es que tengo el disco en una de esas cajas USB tan monas, que me dejan usar como disco externo USB un disco IDE.

Pues la respuesta general sería que lo llevo chungo. No obstante, aquí viene la solución. La he desarrollado cuando me surgió la necesidad de distinguir entre sí discos externos que utilizamos en Grupo CPD (la empresa para la que trabajo) para hacer copias de seguridad con Espiral (un programa que no uso) o con Dirvish (que yo sí uso, es la base de Espiral, y está basado en el viejo y eficaz rsync).

Un disco particionable almacena su tabla de particiones en el sector de arranque, ese lugar tan conocido llamado a veces MBR, objetivo de virus y elementos indeseables semejantes.

El sector de arranque de un disco particionable cualquiera, independientemente de que se utilice en Windows o Linux (no me comprometo con otros sistemas), es el primer sector del disco duro, es decir, los primeros 512 bytes, y tiene una estructura muy definida.

Los primeros 440 bytes (del 0 al 439) contienen el cargador de arranque del sistema. Es un programa muy pequeño que se carga en memoria al arrancar el ordenador, y se encarga de arrancar el ordenador desde una de las particiones disponibles. Ejemplos de programas de este tipo son el MBR de MS-DOS, LILO y la primera etapa (stage 1) de GRUB.

Los 64 bytes del 446 a 509 contienen la tabla de particiones. Y los dos últimos (510 y 511) contienen una firma especial, los números 55h y AAh, que identifican el sector completo como un sector de arranque.

Y ¿qué pasa con los bytes 440 al 445 de los que no he hablado?

Algunos sistemas, como Windows NT y sus sucesores, los emplean como un modo de identificar cada disco. El fdisk de Linux, además, no los toca. No me comprometo con otros programas como LILO, GRUB o el fdisk de MS-DOS/Windows.

Así, los 4 bytes del 440 al 443 son llamados "Número de serie de disco de Windows NT", y los otros dos, 444 y 445, no se emplean.

Personalmente empleo esos 4 bytes para firmar los discos IDE en cajas USB en algunos de mis sistemas. El primer disco contiene los bytes EE EE EE 01 (hexadecimal, en orden de disco, no olvidemos que la arquitectura Intel x86 almacena las palabras de 2 bytes con el byte de menor peso delante). El segundo disco contiene los bytes EE EE EE 02, y así sucesivamente. Aún no he llegado a tener 255 discos externos...

¿Y cómo lo hago? Fácil de lo fácil. Me descargo el sector de arranque del disco que quiero tocar, por ejemplo con dd:
dd if=/dev/sdb of=sdb_mbr count=1 bs=512

lo edito con un editor hexadecimal:
khexedit sdb_mbr

y lo vuelvo a meter en el disco:
dd if=sdb_mbr of=/dev/sdb

Y ya tengo mi disco firmado.

Para beneficio de los usuarios del editor hexadecimal, y ya que las direcciones suelen venir en hexadecimal, las repito en ese formato:






Código0 a 4390000h a 01B7h
Número de serie de disco de Windows NT440 a 44301B8h a 01BBh
Sin uso444 a 44501BCh a 01BDh
Tabla de particiones446 a 50901BEh a 01FDh
Firma mágica AA55h510 a 51101FEh a 01FFh

3 comentarios:

Anónimo dijo...

Perdona el comentario inexperto, no he estudiado nada de informatica ni programación :(
No se mucho

Tengo Windows xp profesional instalado en mi disco duro básico, pero no le puedo crear particiones.

No tengo espacio libre sin asignar.
El Administrador de discos de Windows no me da la opción de particionar el disco duro.

Intenté con el Norton Partition pero me marcó error y me dejó el disco duro sin formato :(

Lei por ahí que para poder particionar un disco duro, se debe estar firmado

Es cierto esto?

Tu escribes como firmar el disco duro.

Dices que descargas el sector de arranque con dd, me podrías explicar eso de dd.

Quiero firmar mi disco duro para ver si asi ya lo puedo particionar con el Administrador de discos de Windows xp pro.
Gracias.

Envite dijo...

No, no hace falta tener el disco firmado para poder particionarlo. Tu problema parece más bien cosa de que no tienes sitio para crear más particiones. Partir un disco es como partir una tarta. Si ya toda la tarta la has puesto en el mismo plato (la partición de Windows) no queda tarta en la bandeja.

En cuanto a dd, pues es una herramienta UNIX, en Windows no usan esas herramientas.

Anónimo dijo...

Ok, muchas gracias por responder. Saludos.