El asunto es el siguiente, entre las cosas en que especializo es navegar a bajo nivel en Discos Duros y Diskettes y otras cosas mas.
El tema que estas cosas han estado cambiando en lo que se refiere a que sistema operativo se este utilizando, por ejemplo:
En DOS para acceder a bajo nivel habia que hacer uso de las famosas interrupciones del DOS o tambien conocidas como servicios, entonces cuando explicaba como utilizarlos tenia que saberse un poco de assembler como para hacer uso de las interrupciones, mi preferido es usarlo embebido con otros lenguajes como C o Pascal y evitar usar la construccion de ejecutable desarrollado en assembler puro.
Pero estas cosas ya estan formando parte del pasado.¿Por qué?. Por que San Windows ha abandonado la forma en que se accedia en DOS a los dispositivos para adoptar la forma en que accede al hardware UNIX (y todos sus familiares). ¿Y como hace UNIX?. UNIX utiliza la filosofia que todo dispositivo es un archivo y por lo tanto puede ser utilizado como tal. Asi que para cada cosa de hardware en el mundo UNIX es traducible a un camino o nombre de archivo, esto ha sido asi desde el comienzo, asi que para navegar a bajo nivel de un HD hay que hacer un simple type (en UNIX es cat) de /dev/hda.
Y entonces? Entonces winnt y familia (2000,XP) ya no utiliza la forma de acceder del DOS sino a la forma de acceder de UNIX o sea que para acceder a bajo de nivel de HD hay que abrir un archivo que identifica a dispositivo de hardware o sea:
DOS Winnt Linux(UNIX)
Floppy Disk A: \\.\A: /dev/fd0
B: \\.\B: /dev/fd1
Hard Disk C: \\.\C: /dev/hda1
o \\.\PhysicalDrive0
D: \\.\D: o /dev/hda2 (solo una adivinanza)
\\.\PysicalDrive1
CdRom (la letra \\.\CdRom0 /dev/hdb o
que quieras) /dev/cdrom
En sintesis para abrir el HD en winnt hay que tener privilegio de administrador.
La sentencia en Python para abrir un HD sería a=open('//./PhysicalDrive0') asi como esta lo abre solo en modo lectura. Y para leer el MBR sería MBR=a.read(512)