Question

C’est la suite de ma question sur la lecture du superbloc .

Supposons que je souhaite cibler le système de fichiers HFS + sous Mac OS X. Comment puis-je lire le secteur 2 du disque de démarrage? Autant que je sache, Unix ne fournit que des appels système pour lire des fichiers, qui ne sont jamais stockés à cet emplacement.

Cela nécessite-t-il 1) le programme pour exécuter le mode noyau ou 2) le programme à écrire dans Assembly? Je préférerais éviter l'une ou l'autre de ces restrictions, en particulier la dernière.

Était-ce utile?

La solution

Sous Linux, vous pouvez lire le fichier de périphérique spécial / dev / sda , en supposant que le disque dur que vous souhaitez lire soit le premier. Vous devez être root pour lire ce fichier. Pour lire le secteur 2, il vous suffit de chercher à compenser 2 * SECTOR_SIZE et à lire dans SECTOR_SIZE octets.

Je ne sais pas si ce fichier de périphérique est disponible sur OS X. Recherchez des fichiers de noms intéressants sous / dev , tels que / dev / sda ou . / dev / hda .

Autres conseils

Je l'ai fait moi-même sur Mac, voir mon éditeur de disque: http: //apps.tempel .org / iBored

Vous devez ouvrir le lecteur à l’aide du répertoire / dev / diskN ou du répertoire / dev / rdiskN (N est un numéro d’index de disque commençant à 0). Ensuite, vous pouvez utiliser lseek (assurez-vous d’utiliser la version 64 bits!) Et de lire / écrire les appels sur le fichier ouvert.

Utilisez également la commande shell "ls / dev / disk *". pour voir quels lecteurs existent actuellement. Et notez que les lecteurs existent également avec un "MS". extension où M est le numéro de la partition. De cette façon, vous pouvez également lire les partitions directement.

Vous pouvez également utiliser l'outil shell "xxd". ou " dd " pour lire des données et ensuite utiliser leur sortie. Pourrait être plus facile.

Toutefois, vous ne pourrez pas lire votre disque racine ni d’autres disques internes, à moins d’exécuter en tant que root. Vous pourrez peut-être accéder à d'autres lecteurs à condition qu'ils soient montés par l'utilisateur ou que leurs autorisations soient désactivées. Mais vous devrez peut-être aussi démonter d’abord les volumes du lecteur. Recherchez la commande unmount dans la commande shell "diskutil".

J'espère que cela vous aidera.

Mise à jour 2017: les SIP sous OS X peuvent également vous empêcher d'accéder directement aux secteurs de disque.

J'allais également suggérer d'utiliser le fichier / dev / device pour le volume, mais vous pouvez contacter Amit Singh qui a écrit un Utilitaire hfsdebug et a probablement fait exactement ce que vous voulez faire.

Comment cela fonctionne-t-il en termes de permissions? Lire dans / dev / ... ne serait-il pas dangereux, car si vous lisiez suffisamment, vous pourrez lire les fichiers pour lesquels vous n’avez pas accès en lecture?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top