🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.c
Article #55

Re: secteur d'un disque dur

#55
From: Pierre Maurette
Date: Tue, 15 Feb 2005 18:44
50 lines
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-mail
References: <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>