Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

interface d'un disque usb

6 réponses
Avatar
julien
bonjour,

je voudrais recuperer les donnees d'un disque ide dont le format ne
correspond a aucun systeme d'exploitation connu.
j'ai trouvé sur ebay une interface usb-ide.
pour recuperer les donnees, je devrai lire le disque secteur par secteur
et recuperer ces secteurs sur mon pc de bureau
mais avant de me lancer, je voudrais avoir quelques precisions:
- le dialogue entre le pc et le disque usb s'effectue t-il avec des
commandes au niveau secteur du disque (ce que je suppose) ou au niveau
systeme d'eploitation?
- je voudrais exploiter le source d'un programme effectuant ces
operations pour m'en inspirer (c'est tout l'interet du libre!), quel
programme me conseillez-vous d'explorer dans ce but?
Merci d'avance pour votre aide.

6 réponses

Avatar
Bruno Tréguier
Le 05/11/2011 à 20:47, julien a écrit :
bonjour,



Bonjour,


je voudrais recuperer les donnees d'un disque ide dont le format ne
correspond a aucun systeme d'exploitation connu.



Ah ? Il vient d'où ce disque ? De la planète Mars ? :-)


j'ai trouvé sur ebay une interface usb-ide.
pour recuperer les donnees, je devrai lire le disque secteur par secteur
et recuperer ces secteurs sur mon pc de bureau
mais avant de me lancer, je voudrais avoir quelques precisions:
- le dialogue entre le pc et le disque usb s'effectue t-il avec des
commandes au niveau secteur du disque (ce que je suppose) ou au niveau
systeme d'eploitation?



Un dialogue avec un disque peut être envisagé à plusieurs niveaux, mais
de toute façon, quel que soit le langage que vous utiliserez et le
niveau d'interfaçage auquel vous vous placerez, au final cela se termine
toujours par le déplacement d'une tête sur une surface magnétique... Au
niveau de l'interface IDE, il y a plusieurs modes de fonctionnement,
mais dans tous les cas on aboutit effectivement à des ordres de lecture
ou d'écriture de secteurs. Cela étant dit, en tant qu'utilisateur, vous
n'avez qu'extrêmement rarement à vous soucier de ce niveau de détail,
sauf à avoir un besoin très particulier, ce qui ne semble pas être votre
cas, puisque vous cherchez simplement à lire ce que ce disque contient.
C'est le rôle du système d'exploitation de vous masquer les détails un
peu "gore" et de vous faciliter la tâche.

Après, en fonction du niveau où vous vous placez, vous pourrez voir
différentes choses, de la suite d'octets au système organisé de
fichiers, mais dans votre cas, c'est la suite d'octets qui est
intéressante, puisque d'après vos dires, elle ne correspond à aucun
format connu de système de fichiers, et vous ne disposez donc d'aucune
"couche" permettant de l'interpréter.


- je voudrais exploiter le source d'un programme effectuant ces
operations pour m'en inspirer (c'est tout l'interet du libre!), quel
programme me conseillez-vous d'explorer dans ce but?
Merci d'avance pour votre aide.



Pour le niveau qui vous intéresse, je pense qu'un programme comme "dd"
sous Linux est parfaitement adapté. Une commande du genre (par exemple):

dd if=/dev/sdb of=mondisque bs=1M

vous permettra de récupérer la totalité du contenu de votre disque dans
le fichier "mondisque". Pour plus d'infos: "man dd".

Si vous voulez voir ce qu'il y a dans les sources de "dd", vous risquez
d'être un peu déçu, car ce programme, comme tous les autres, utilise les
services du noyau, via des appels systèmes, et ne voit pas non plus la
tripaille sous-jacente... Cela dit, dans votre cas, si votre but est
seulement de récupérer des données, ça ne vous apportera pas
grand-chose, il vaudrait mieux que vous vous intéressiez à leur format
de stockage, et donc à l'interprétation de la suite d'octets que vous
aurez récupérée...

Cordialement,

--
Bruno Tréguier
Avatar
Fabien LE LEZ
On Sat, 05 Nov 2011 23:30:35 +0100, Bruno Tréguier
:

Une commande du genre (par exemple):

dd if=/dev/sdb of=mondisque bs=1M



Ou bien

cat < /dev/sdb > mondisque

L'avantage, c'est que l'OS choisit au mieux la taille de bloc, au lieu
de la valeur plus ou moins aléatoire qu'on donne à dd.
Avatar
Bruno Tréguier
Le 06/11/2011 à 3:14, Fabien LE LEZ a écrit :
On Sat, 05 Nov 2011 23:30:35 +0100, Bruno Tréguier
:

Une commande du genre (par exemple):

dd if=/dev/sdb of=mondisque bs=1M



Ou bien

cat< /dev/sdb> mondisque

L'avantage, c'est que l'OS choisit au mieux la taille de bloc, au lieu
de la valeur plus ou moins aléatoire qu'on donne à dd.



Je vous l'accorde, sous Linux c'est à peu près la même chose, le
comportement de ce système gomme beaucoup de différences entre les
périphériques de type bloc et ceux de type caractère. Sur des systèmes
plus anciens, l'utilisation de gros blocs (type 1Mo ou plus) permettait
d'avoir un gain non négligeable de vitesse.

Je viens de faire quelques tests: j'ai l'impression qu'ici, quelle que
soit la taille de bloc passée à dd, on obtient peu ou prou la même
performance.

Là où dd pourrait avoir un avantage, ce serait par exemple s'il fallait
commencer à un endroit donné sur le disque, et lire un certain nombre de
secteurs seulement (via les options "skip" et "count"), mais ça n'est
pas le cas ici.

Cordialement,

--
Bruno Tréguier
Avatar
Benoit Izac
Bonjour,

le 06/11/2011 à 10:47, Bruno Tréguier a écrit dans le message
<4eb657c6$0$8841$ :

dd if=/dev/sdb of=mondisque bs=1M



Ou bien

cat< /dev/sdb> mondisque

L'avantage, c'est que l'OS choisit au mieux la taille de bloc, au lieu
de la valeur plus ou moins aléatoire qu'on donne à dd.



[...]
Là où dd pourrait avoir un avantage, ce serait par exemple s'il
fallait commencer à un endroit donné sur le disque, et lire un certain
nombre de secteurs seulement (via les options "skip" et "count"), mais
ça n'est pas le cas ici.



Ou encore en cas d'erreur lors de la lecture d'un bloc avec l'option
« conv=noerror » ou l'utilisation de ddrescue qui permet d'essayer de
lire plusieurs fois le bloc en cause ; je ne suis pas sûr que ça serve
sur un disque dur, en revanche sur un CD ou un DVD, il arrive à
récupérer des choses (mais c'est long).

--
Benoit Izac
Avatar
Fabien LE LEZ
On Sun, 06 Nov 2011 10:47:49 +0100, Bruno Tréguier
:

Sur des systèmes
plus anciens, l'utilisation de gros blocs (type 1Mo ou plus) permettait
d'avoir un gain non négligeable de vitesse.



Avais-tu fait, à l'époque, une comparaison entre cat et dd ?
Avatar
Bruno Tréguier
Le 06/11/2011 à 12:50, Fabien LE LEZ a écrit :
On Sun, 06 Nov 2011 10:47:49 +0100, Bruno Tréguier
:

Sur des systèmes
plus anciens, l'utilisation de gros blocs (type 1Mo ou plus) permettait
d'avoir un gain non négligeable de vitesse.



Avais-tu fait, à l'époque, une comparaison entre cat et dd ?



Oui, sur HP-UX notamment, ainsi qu'un ancien système basé sur SysVR2,
sur des machines CETIA (filiale de Thomson à l'époque).

dd était systématiquement meilleur, mais cela était peut-être dû au fait
que cat utilisait probablement, sur ces machines, des buffers de taille
fixe (et largement inférieure à 1 Mo).

Sur Solaris, tout dépend de ce qu'on fait: si on passe par les devices
"raw" sous /dev/rdsk, dd est meilleur. En passant par les devices block
sous /dev/dsk, ça se tient.

Mais encore une fois, je vous l'accorde, ça tient plus des habitudes de
vieux dino, ce genre de trucs. "cat" fait un très bon boulot... ;-)

Cordialement,

--
Bruno Tréguier