H2cdimage -- by Harald Bgeholz / c't Magazin fr Computertechnik
Version 1.8, Copyright (C) 2005 Heise Zeitschriften Verlag GmbH & Co. KG
========================================================================


H2cdimage ist fr die Datenrettung von beschdigten CDs oder DVDs
gedacht. Es erzeugt ein sektorweises Image einer CD oder DVD in einer
Datei mit der Endung .iso. In einer weiteren Datei mit der Endung .h2i
merkt es sich, welche Sektoren des Datentrgers es bisher erfolgreich
lesen konnte.

Empfehlungen zum richtigen Einsatz von H2cdimage sowie Erklrungen zu
der Frage, wie man denn anschlieend die geretteten Dateien wieder aus
der Image-Datei extrahiert stehen im Artikel "Silberpuzzle, Daten von
beschdigten CDs und DVDs retten" in c't 16/05, S. 78.

ACHTUNG: In der derzeitigen Version untersttzt H2cdimage nur
Datentrger mit 2048-Byte-Sektoren. Mit Audio-CDs und (S)VCDs kann es
nicht umgehen.


Systemvoraussetzungen
---------------------

H2cdimage ist ein Kommandozeilenprogramm fr Win32 und sollte unter
allen 32-bittigen Windows-Versionen laufen. Getestet wurde es
hauptschlich unter Windows XP und stichprobenartig unter Windows 98.
Unter Windows XP und den anderen NT-Abkmmlingen erfordert das
Programm Administratorrechte.

H2cdimage greift ber ASPI auf das Laufwerk zu und bentigt dazu die
Datei Wnaspi32.dll. Wir liefern im Zip-Archiv von H2cdimage mit
freundlicher Genehmigung der Nero AG deren Wnaspi32.dll in Version
2.0.1.74 mit. Sie muss im gleichen Verzeichnis liegen wie
H2cdimage.exe und darf _nicht_ in einen Systemordner kopiert werden.
Bitte beachten Sie die Nutzungsbedingungen der Nero AG unter
http://www.nero.com/deu/WNASPI32.DLL.html.

Das FAT-Dateisystem begrenzt Dateien auf eine Gre von 4 GByte. Um
eine mit mehr als 4 GByte gefllte DVD einzulesen, ist daher NTFS
erforderlich.


Aufruf
------

Rufen Sie H2cdimage auf der Kommandozeile wie folgt auf:

h2cdimage <a>:<t>:<l> <filename> [-i]

<filename> ersetzen Sie durch den gewnschten Dateinamen ohne
Erweiterung. H2cdimage arbeitet dann mit den beiden Dateien
<filename>.iso (Image) und <filename>.h2i. Beim ersten Aufruf muss die
Option -i zum Anlegen dieser Dateien angegeben werden; ohne sie
ergnzt H2cdimage ein bestehendes Image.

Die Zahlen <a>, <t> und <l> adressieren das Laufwerk, und zwar (auch
bei IDE-Laufwerken) als SCSI-Gert: <a> steht fr die Nummer des
Adapters, <t> fr die SCSI-ID und <l> fr die LUN (Logical Unit
Number, eine Unternummerierung innerhalb des Gerts; gabs mal bei
CD-Wechslern). Welche Adresse richtig ist, findet man am einfachsten
durch Probieren heraus. Bei einem Aufruf von H2cdimage ohne Parameter
sollte zwischen Copyright-Meldung und Hilfetext eine Zeile wie

ASPI geladen. Anzahl der Adapter: 3

erscheinen. Im Beispiel wurden 3 (virtuelle) SCSI-Adapter gefunden,
die ber die Nummern 0 bis 2 angesprochen werden. In der Regel taucht
an der ASPI-Schnittstelle jeder IDE-Kanal sowie jeder SCSI-Hostadapter
als ein Adapter auf. Bei IDE-Gerten hat der Master die ID 0, der
Slave die ID 1, die LUN ist jeweils 0.

In einem System mit zwei IDE-Kanlen und ohne SCSI-Adapter gelten
damit die folgenden Adressen:

0:0:0 - Master am primren Kanal
0:1:0 - Slave am primren Kanal
1:0:0 - Master am sekundren Kanal
1:1:0 - Slave am sekundren Kanal

Bei korrektem Aufruf zeigt H2cdimage den Namen des gefundenen
Laufwerks im Klartext an, sodass man das richtige im Zweifelsfalle
durch Probieren findet (am besten mit einer intakten CD oder DVD
testen).


Dateiformate
------------

H2cdimage erzeugt zwei Dateien. Die .iso-Datei enthlt ein
sektorweises Abbild des kompletten Datentrgers ohne irgendwelche
Header oder sonstigen Verwaltungsinformationen. Sektoren, die (noch)
nicht vom Medium gelesen werden konnten, sind im Image mit dem
Hex-Wert 0xB0 gefllt. Eine vollstndige .iso-Datei lsst sich mit
gngigen Brennprogrammen 1:1 auf ein neues Medium brennen oder mit
Programmen wie den Daemon Tools als virtuelles Laufwerk ins System
einbinden.

Die .h2i-Datei enthlt fr jeden Sektor der Image-Datei ein Byte, das
aussagt, ob dieser Sektor erfolgreich gelesen wurde. Byte 0 gehrt zu
Sektor 0 des Image, Byte 1 zu Sektor 1 und so weiter. Das Zeichen '_'
bedeutet, dass der zugehrige Sektor noch nicht gelesen wurde, jedes
andere Zeichen bedeutet, dass der Sektor gltige Daten enthlt.

In den erfolgreich gelesenen Bereichen nutzt H2cdimage die Flag-Bytes,
um fortlaufend die Sektornummern im Klartext anzugeben. Eine
.h2i-Datei beginnt also so:

0*********10********20********30********40********50********60** ...

und ein Bereich, in dem vereinzelte Lesefehler aufgetreten sind,
knnte beispielsweise so aussehen:

_____7090*****27100*_***27110**_**27120***_*27130*****27140***** ...

Indem man eine .h2i-Datei in einen Editor seiner Wahl ldt (von den
Windows-Bordmitteln ist Wordpad zu empfehlen; Notepad stellt sich
dusselig an), kann man so mit bloem Auge die Nummern der fehlerhaften
Sektoren abzhlen. Im Beispiel ist (unter anderem) der Sektor 27106
fehlerhaft.


Fragen und Anregungen
---------------------

Fragen zu H2cdimage richten Sie bitte per E-Mail (in deutscher oder
englischer Sprache) an bo@ct.heise.de (Harald Bgeholz). Ich werde mir
erlauben, Fragen, die in den untenstehenden FAQ beantwortet sind, zu
ignorieren.


FAQ
---

?  Ich erhalte beim Start von H2cdimage die Meldung "ASPI nicht gefunden."

!  Diese oder die Meldung "Fehler beim Initialisieren von ASPI."
   deutet darauf hin, dass die Datei Wnaspi32.dll nicht gefunden wurde
   oder eine inkompatible Version vorliegt. Stellen Sie sicher, dass
   sich die mit H2cdimage gelieferte Wnaspi32.dll im selben
   Verzeichnis befindet wie H2cdimage.


?  Bei einer Video-DVD liefert H2cdimage fast nur Lesefehler, obwohl
   die Kratzer eigentlich gar nicht so schlimm aussehen.

!  Dieses Symptom tritt bei Video-DVDs aus, die mit dem Content
   Scrambling System (CSS) kopiergeschtzt sind. Wenn Sie die DVD
   zunchst mit einer Playersoftware kurz anspielen, sollte sie sich
   anschlieend mit H2cdimage auslesen lassen. H2cdimage hat aber
   keine Funktion zur Umgehung des Kopierschutzes. Die erzeugte
   Image-Datei enthlt daher bei einer CSS-geschtzten Video-DVD die
   verschlsselten Daten; der auf der DVD gespeicherte Schlssel
   fehlt. Der Film lsst sich somit ohne den Einsatz von nach
   deutschem Urheberrecht illegaler Software auch dann nicht
   abspielen, wenn man ihn wieder auf einen Rohling brennt.


?  Warum dauert es so lange, bevor H2cdimage endlich anfngt, von
   meiner DVD zu lesen?

!  Da H2cdimage fr fehlerhafte Datentrger gedacht ist und auerdem
   so gebaut ist, dass man es jederzeit durch Drcken von Strg+C
   abbrechen kann, schreibt es zunchst die gesamte Image-Datei auf
   die Platte, geflt mit dem Hex-Wert 0xb0. Das kann speziell beim
   Abbild einer DVD eine ganze Weile dauern. Erst wenn die Image-Datei
   vollstndig auf der Platte angelegt ist, beginnt H2cdimage mit dem
   Einlesen des Datentrgers.


?  Was bedeuten die Zahlen und Prozentangaben, die H2cdimage whrend
   der Arbeit ausgibt?

!  Wenn man H2cdimage zur Ergnzung eines bestehenden Images erneut
   aufruft, sieht eine typische Ausgabe beispielsweise so aus:

   H2cdimage -- by Harald Bgeholz / c't Magazin fr Computertechnik
   Version 1.8, Copyright (C) 2005 Heise Zeitschriften Verlag GmbH & Co. KG
   ASPI geladen. Anzahl der Adapter: 3
   Gert: AOPEN   DVD1648/AAP     1.04  (05 80 00 31 3A 00 00 00)
   Gesamt: 347992 Sektoren, Sektorgre: 2048
   Noch 31059 von 347992 Sektoren einzulesen.
   92.0 % gelesen, 27811 fehlen, 10.6 % probiert. Lese #28935

   Beim Start von H2cdimage fehlten im Image also noch 31059 Sektoren.
   Von diesen hat das Programm im Moment 10.6 % durchprobiert und
   versucht aktuell gerade, Sektor Nummer 28935 zu lesen. Insgesamt
   fehlen zurzeit im Image noch 27811 Sektoren (von den anfangs 31059
   fehlenden konnten in diesem Durchlauf also schon einige
   wiederhergestellt werden), das Image ist damit insgesamt zu 92.0 %
   vollstndig.

   Die %-Angabe "probiert" luft also whrend eines Durchlaufs von
   H2cdimage von 0 bis 100 % durch.


?  H2cdimage legt eine Image-Datei an und luft komplett bis 100 %
   durch, liest aber keinen einzigen Sektor erfolgreich ein. Am Ende
   steht da

   0.0 % gelesen, 324497 fehlen, 100.0 % probiert. Lese #314781
   0 Sektoren erfolgreich gelesen.

   Anscheinend liest es auch berhaupt nicht vom Datentrger, denn
   whrend der ganzen Zeit blinkt die Laufwerks-LED nicht.

!  Dieses Symptom haben wir bei Audio-CDs beobachtet. In der
   derzeitigen Version untersttzt H2cdimage nur Datentrger mit
   2048-Byte-Sektoren. Mit Audio-CDs und (S)VCDs kann es nicht
   umgehen.
