Page 1 sur 2

Accès direct Secteur de disque

Publié : mer. 21/juin/2017 12:43
par caussatjerome
Bonjour Pure Codeurs !

Je cherche à lire/écrire directement sur un disque dur (sur n'importe quel secteur),
je ne parle pas sur une partition ou volume mais bien pouvoir écrire et lire n'importe que secteurs d'un disque (MBR compris),
j'ai beau chercher sur les forum, je ne trouve pas mon bonheur.

Je pense que l'API windows le permet, mais je suis mauvais en anglais, et n'arrive pas à trouver de code source/ doc là dessus.

Par avance merci de votre aide !

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 13:49
par Zorro
je me mefie toujours de ce genre de question

car bien souvent l'auteur de la question veux faire un truc tout simple
mais pose une question bien compliqué, car il suit le cheminement de sa pensée :)

en clair, que veux tu exactement faire sur ton disque Dur ?
là probablement tu aura des reponses mieux ciblées .... :)

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 14:09
par falsam
@Zorro : Mince pour une fois que quelqu'un pose une question compréhensible même si la réponse va être complexe :wink:

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 14:24
par SPH
Ca pourrait servir pour un logiciel d'image de diskdur :idea:

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 14:36
par djes

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 14:49
par GallyHC
Bonjour,

Je penses que la réponse passe forcement par de l'API pour Windows ce sera par DeviceIoControl_().

Cordialement,
GallyHC

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 15:16
par Marc56
Je cherche à lire/écrire directement sur un disque dur (sur n'importe quel secteur),
je ne parle pas sur une partition ou volume mais bien pouvoir écrire et lire n'importe que secteurs d'un disque (MBR compris)
Les secteurs d'un disque n'existent qu'après partitionnement et formatage :wink:
https://en.wikipedia.org/wiki/Disk_sector
L'accès direct à un secteur physique est géré par le contrôleur du disque lui-même et n'est donc pas accessible à l'utilisateur.
Il faut avoir et comprendre les données "géométrique" du disque.

(Encore un sujet qui risque de faire passer PB pour un créateur de virus :oops: )

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 15:21
par falsam
Marc56 a écrit :...n'est donc pas accessible à l'utilisateur
Un contre exemple ?

Code : Tout sélectionner

StartingLogicalSector.l = 0     ; Premier secteur à lire
NumberOfSectors.l       = 3     ; Nombre de secteur consécutif à lire
SectorSize              = 512   ; Taille d'un secteur
Disk.s                  = "G:"  ; Unité de stockage 

Dim buffer.b(SectorSize * NumberOfSectors)

hdh.l = CreateFile_("\\.\" + Disk, #GENERIC_READ, #FILE_SHARE_READ, 0, #OPEN_EXISTING, 0, 0)

;Positionnement sur le premier secteur à lire
SetFilePointer_(hdh, (StartingLogicalSector * SectorSize), #Null, 0)

;Lecture des secteurs consécutifs
ReadFile_(hdh, @buffer(), NumberOfSectors * SectorSize, @bytesread.l, #Null)
CloseHandle_(hdh)

;Vérification
CreateFile(0, GetCurrentDirectory() + "sector.txt")

For i=0 To bytesread-1
  WriteByte(0, buffer(i))
Next

CloseFile(0)
Ce code ne fait que lire les 3 premiers secteurs du MBR d'une clé USB (G: dans cet exemple) et enregistre le contenu dans un fichier. Enregistre ce code dans un dossier et exécute le. Ouvre ensuite le fichier avec un lecteur hexa ou tout simplement avec l'IDE de PureBasic.

A compiler avec l'option droit administrateur.

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 15:26
par Marc56
caussatjerome a écrit : je ne parle pas sur une partition ou volume mais bien pouvoir écrire et lire n'importe que secteurs d'un disque (MBR compris),

Code : Tout sélectionner

Disk.s                  = "G:"  ;Unité de stockage 
:?: Déjà formaté :wink:

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 15:28
par falsam
@Marc : Tu as bien fait de souligner :oops:

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 15:30
par Marc56
Y'a pas de mal :wink:

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 16:02
par Ar-S
Marc56 a écrit :
caussatjerome a écrit : je ne parle pas sur une partition ou volume mais bien pouvoir écrire et lire n'importe que secteurs d'un disque (MBR compris),

Code : Tout sélectionner

Disk.s                  = "G:"  ;Unité de stockage 
:?: Déjà formaté :wink:
@Falsam, pourtant la question était compréhensible ! :mrgreen: :mrgreen: (je sors)

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 16:11
par falsam
Rhooooooo le vilain il en profite. Mais ok c'est à juste titre. :wink:

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 16:33
par caussatjerome
Merci à tous de vos réponses,
Pour répondre à la question "Pourquoi faire", je souhaite en effet créer deux logiciels :
1er : un logiciel d'effacement sécurisé genre DBAN, KILLDISK
2em : un logiciels de clonage genre CLONEZILLA, GHOST

Pourquoi ne pas utiliser ces logiciels me direz vous...
Par ce que je veut ajouter des fonctionnalités non implémenter dans les logiciels existants, et que j'aime les défit !

Merci pour votre aide, enfin je précise : si il est possible d'écrire sur tout un disque et non pas les partitions/volumes, sinon comment fonctionnerait les logiciels que j'ai mentionner plus haut ?!

je vais regarder les liens que vous m'avez données, chère compagnons codeurs, n'hésiter pas à ajouter des liens si vous trouvez/avez d'autres codes sources !

PS : Désolé l’orthographe n'est pas mon fort !

Re: Accès direct Secteur de disque

Publié : mer. 21/juin/2017 20:42
par Marc56
caussatjerome a écrit : Merci pour votre aide, enfin je précise : si il est possible d'écrire sur tout un disque et non pas les partitions/volumes, sinon comment fonctionnerait les logiciels que j'ai mentionner plus haut ?!
Là plupart fonctionnent comme les sauvegardes système sur bande ou comme la mise à jour de firmware: déversement binaire linéaire. D'où la nécessité de ne pas interrompre le restore car tout est réécrit au meme endroit, meme taille de secteur y compris le mbr taille d'allocation etc.
On ne sait qu'à la fin au reboot si la restore est ok
Les premières version de ghost par exemple ne savaient pas cloner sur un hd de taille différente ou pour le moins elles n'utilisaient que la même taille que le disque d'origine.

:wink: