Article View: fr.comp.lang.c
Article #55Re: secteur d'un disque dur
From: Pierre Maurette
Date: Tue, 15 Feb 2005 18:44
Date: Tue, 15 Feb 2005 18:44
50 lines
4201 bytes
4201 bytes
Thierry59 a �crit : > Via le PC, comment, lire directement un secteur de disque dur ? > Si je programme en C: Faut t'il ouvrir un fichier... avec un nom bien > specifique ? La demande est floue et appelle un certain nombre de r�ponses selon vos besoins et votre OS (j'oriente Windows). Tout d'abord, il y a trois fa�ons d'interpr�ter "lire directement un secteur de disque dur". Dans un fichier, sur l'ensemble d'un disque logique (en gros, une partition), sur l'ensemble d'un disque physique. Je consid�re des secteurs de 512 octets. Pour lire, et �crire, les secteurs d'un fichier est tr�s simple. En C, vous ouvrez votre fichier en mode "binary" et le lisez par bloc de 512 octets. Dans un tableau de 512 unsigned char (en g�n�ral, �a va marcher) ou uint8_t (si ce type de stdint.h existe, �a va marcher). Hors le C, tout �diteur de texte poss�dant un affichage Hexa (UltraEdit 32 par exemple) convient. Il faudra peut-�tre faire un peu de calcul mental en hexa (ou en d�cimal, mais c'est pas plus simple) pour s'y retrouver dans les secteurs. Ce qui pr�c�de (C et �diteur) doit s'appliquer � Windows et � Linux. La diff�rence entre l'acc�s au disque physique et aux disques logiques est l'acc�s au MBR (secteur de boot du disque, c'est � dire secteur 0 du disque physique) et aux secteurs (63 souvent) qui le s�parent du d�but de la premi�re partition. En C sous Windows, ce n'est bizarrement pas archi-prot�g�. Il suffit d'utiliser � bon escient les fonctions CreateFileA et surtout DeviceIoControl. C'est pas la mer � boire, mais il faut lire un peu avant et il y a moyen de faire de grosses conneries. Hors le C, toujours sous Windows, j'utilise maintenant le plus simple (test� sous XP et XP x64), dskprobe.exe de Microsoft, gratuit, 97ko malgr�s une interface graphique aboutie. Je m'en sers pour faire une copie des 64 premiers secteur de mon disque physique avant d'installer ou de r�installer un OS, j'ai pu les recopier sans probl�mes � partir de Windows. Pour t�l�charger: http://minilien.com/?6aiQY5w0qP http://www.google.fr/search?hl=fr&c2coff=1&q=%22dskprobe.exe%22+download&btnG=Rechercher&meta= Qui fait la m�me chose et m�me beaucoup plus, payant, un bijou sur le plan p�dagogique, id�al pour lire, WinHex. Attention, si vous envisagez d'�crire sur le disque, il est fortement conseill� de l'enregistrer officiellement. Je ne connais pas (pas encore !) les outils �quivalents sous Linux. En revanche, je me souviens avoir r�cup�r� un disque avec deux partitions sous Windows en bootant sur un CD d'une distri Linux et en me servant du dossier "dosutils" (nom sous r�serve). + 3 jours de boulot. Dans ce dossier, il y a des programmes, mais surtout de la doc et les sources (C ou C++). Voir en particulioer rawrite. Soyez prudent si vous �crivez sur le disque (et parfois peu de choses font la diff�rence entre lire et �crire). Testez sur disquette ou sur une partition (et non un disque) que vous pouvez reformater. -- Pierre
Technical Details
Message-ID:
<37eu7iF5db68uU1@individual.net>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mailReferences:
<cuokcp$5ap$1@news.tiscali.fr>Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,cee8ec78e27adc6a X-Google-Thread: fdcad,cee8ec78e27adc6a X-Google-Thread: 10f688,cee8ec78e27adc6a X-Google-Thread: 111deb,cee8ec78e27adc6a X-Google-Thread: 102e15,cee8ec78e27adc6a X-Google-Attributes: gidf9822,gidfdcad,gid10f688,gid111deb,gid102e15,public X-Google-Language: FRENCH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Pierre Maurette <maurettepierre@wanadoo.fr> Newsgroups: fr.comp.lang.c,fr.comp.lang.c++,fr.comp.os.msdos,fr.sci.electronique,fr.comp.developpement Subject: Re: secteur d'un disque dur Date: Tue, 15 Feb 2005 19:44:31 +0100 Lines: 50 Message-ID: <37eu7iF5db68uU1@individual.net> References: <cuokcp$5ap$1@news.tiscali.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net rA59iRjCULHhalqsYLJpYw0lXGTjKT9rDRqPRX/XWLeRWc5wgg User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: fr, en In-Reply-To: <cuokcp$5ap$1@news.tiscali.fr>