Accès direct Secteur de disque

Codes specifiques à Windows
Avatar de l’utilisateur
caussatjerome
Messages : 50
Inscription : lun. 24/sept./2012 20:57
Localisation : Somme

Accès direct Secteur de disque

Message 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 !
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Accès direct Secteur de disque

Message 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 .... :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Accès direct Secteur de disque

Message 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:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Accès direct Secteur de disque

Message par SPH »

Ca pourrait servir pour un logiciel d'image de diskdur :idea:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Accès direct Secteur de disque

Message par djes »

Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Accès direct Secteur de disque

Message par GallyHC »

Bonjour,

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

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Accès direct Secteur de disque

Message 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: )
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Accès direct Secteur de disque

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Accès direct Secteur de disque

Message 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:
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Accès direct Secteur de disque

Message par falsam »

@Marc : Tu as bien fait de souligner :oops:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Accès direct Secteur de disque

Message par Marc56 »

Y'a pas de mal :wink:
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Accès direct Secteur de disque

Message 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)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Accès direct Secteur de disque

Message par falsam »

Rhooooooo le vilain il en profite. Mais ok c'est à juste titre. :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
caussatjerome
Messages : 50
Inscription : lun. 24/sept./2012 20:57
Localisation : Somme

Re: Accès direct Secteur de disque

Message 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 !
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Accès direct Secteur de disque

Message 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:
Répondre