CD-ROM-Unterkanal ist unterschiedlich, wenn dieselbe CD ausgegeben wird?

14

Ich erstelle Sicherungskopien von alten Videospielen mit CloneCD 5.3.3.0 auf meinem Windows 10 x 64-Computer mit einem Samsung SH-S223L-Laufwerk.

Eines davon ist Hellfire für PC (Erweiterung Diablo 1):

  • Die CD hat ein COMPACT disc DATA STORAGELogo
  • Ordnungsnummer: S0011770
  • Fabrik SID-Code: IFPI 1218
  • CD-Master SID-Code: IFPI L032
  • Erstellungsdatum der ISO 9660 PVD: 1997-11-18 16:30:00.00

Ich verwende die CloneCD- Profilempfehlung von redump.org :

[CloneCD ReadPrefs]
ReadSubData=1
RegenerateData=0
ReadSubAudio=1
AbortOnReadError=0
FastErrorSkip=0
ReadSpeedData=8
ReadSpeedAudio=8
IntelligentBadSectorScan=1
SectorSkip=1
NoErrorReport=0
FirstSessionOnly=0
AudioQuality=3

Soweit ich weiß, hat das Spiel keinen Schutz, aber wenn ich die CD zweimal abspeichere, erhalte ich unterschiedliche Unterkanaldateien ( .sub). Die .ccdund .img-Dateien sind identisch, nur die .subUnterschiede. Ich habe SHA1-Prüfsummen und einen Hex-Editor verwendet, um dies zu überprüfen.
Ich hochgeladen zwei .subDatei - Dumps hier .
Ich muss erwähnen, dass ich zwei Kopien dieser CD besitze und das Verhalten mit beiden CDs identisch ist.

Ich habe auch mehrere andere CD-ROM-Medien ausgegeben, manchmal tritt dieses Verhalten auf, manchmal ist der Unterkanal über die Dumps hinweg konsistent.

Was ist die Erklärung für dieses Verhalten?


Bearbeiten:

Ich habe dieselbe CD-ROM erneut mit einem Lite-On iH124-14-Laufwerk ausgegeben und sehe dasselbe Verhalten (verschiedene .subDateien).
Ich habe das Medium auch mit KProbe 2 auf Fehler überprüft und erhalte das folgende Ergebnis:

KProbe 2 BLER Scan


Bearbeiten:

Es scheint, dass der Zustand der Disc und / oder die mangelnde Genauigkeit des Laufwerks zu der Tatsache beigetragen haben, dass der Unterkanal keinen Fehlerkontrollmechanismus aufweist (mit Ausnahme von Q-Channel) .sub.

Ich muss erwähnen, dass ich auch ein Plextor PX-712A-Laufwerk besitze und es .submithilfe von Disc Image Creator geschafft habe, konsistente Dateien über Dumps hinweg zu erhalten . Diese Software verwendet 0xD8Anweisungen anstelle von 0xBEAnweisungen zum Lesen der Disc, was zu genaueren Bildern führt. Nur wenige Laufwerke (meist Plextor) unterstützen diese Anweisung.

Außerdem besitze ich tatsächlich zwei physische Kopien dieser CD-ROM, die ich kopiere (dieselbe Seriennummer, dieselben IFPI-Codes und dieselben lasergravierten Informationen). Wenn ich dieselbe CD mehrmals mit Disc Image Creator auslagere, erhalte ich konsistente .subDateien, aber nicht, wenn ich die erste CD und dann die zweite CD auslagere.
Ich denke, es hängt mit den Medienbedingungen zusammen, da einer von ihnen ein paar Kratzer und mehr C1 / C2-Fehler aufweist.

Chris
quelle
1
Lesefehler (Schmutz, Kratzer, nicht unbedingt tatsächliche Fehler vom Laufwerk) können dazu führen, dass sich CD-ROM-Images unterscheiden. Unterschiede können nur wenige Bits betragen. Ein Bit Unterschied reicht aus, damit sich die SHA * / MD5-Prüfsummen unterscheiden.
Quixotic

Antworten:

15

Die verschiedenen CD-Formate sind etwas umständlich, und die offiziellen Spezifikationen ("rotes Buch" für Audio-CD, "gelbes Buch" für Daten-CD) sind nicht frei verfügbar. Einige Details finden Sie in verfügbaren Standards wie Ecma-130.

Die ursprüngliche Audio-CD (auch als CD-DA bezeichnet) wurde der Schallplatte nachempfunden, dh es wird auch eine spiralförmige Spur mit kontinuierlichen Audiodaten verwendet (auf der DVD wurden später kreisförmige Spuren verwendet). In diesen Audiodaten sind auf sehr komplexe Weise 8 Unterkanäle (P bis W) verschachtelt, von denen der Q-Unterkanal Zeitinformationen (buchstäblich in Minuten / Sekunden / Sekundenbruchteilen) und die aktuelle Spurnummer enthält. Für den ursprünglichen Zweck war dies ausreichend: Für kontinuierliches Spielen wurde das Objektiv nur leicht angepasst, um der Spur zu folgen. Zum Suchen bewegte sich das Objektiv, während der Q-Unterkanal decodiert wurde, bis die richtige Spur gefunden wurde. Diese Positionierung ist etwas grob, aber völlig ausreichend, um Musik zu hören.

Noch heute können viele Computer-CD-Laufwerke die Linse nicht vollständig genau positionieren und die Decodierschaltung synchronisieren, so dass das Lesen von Audio-Samples an einer genauen Position beginnt. Aus diesem Grund haben viele CD-Ripping-Programme einen "Paranoia" -Modus, in dem sie überlappende Lesevorgänge durchführen und die Ergebnisse vergleichen, um diesen "Jitter" auszugleichen. Als Teil des Audiostreams unterliegt der Unterkanal auch Jitter, und aus diesem Grund erhalten Sie unterschiedliche Unterkanaldateien, wenn Sie auf ein CD-Laufwerk rippen, das nicht genau positioniert werden kann.

Als die Daten-CD-Spezifikation (CD-ROM) entwickelt wurde, um die CD-DA-Spezifikation zu erweitern, wurde die Wichtigkeit erkannt, Daten genau zu adressieren und zu lesen, so dass der Audiorahmen von 2352 Byte in 12 Sync-Bytes und 4 Header-Bytes (z die Sektoradresse), wobei die verbleibenden 2336 Bytes für Daten und eine zusätzliche Fehlerkorrekturstufe verbleiben. Mit diesem Schema können Sektoren exakt adressiert werden, ohne sich nur auf die Q-Kanal-Informationen verlassen zu müssen. Daher tritt der Jitter-Effekt nicht auf, Sie erhalten immer die gleichen Daten, wenn Sie eine CD-ROM sichern, und es ist keine zusätzliche Cleverness beim Sichern erforderlich.

Bearbeiten Sie mit mehr Details:

Laut Ecma-130 werden die Daten stufenweise verschlüsselt: 24 Bytes bilden einen F1-Frame , die Bytes von 106 dieser Frames werden auf 106 F2-Frames verteilt , die 8 zusätzliche Bytes an Fehlerkorrektur erhalten. Diese Rahmen wiederum erhalten jeweils ein zusätzliches Byte ("Steuerbyte"), um sie zu F3-Rahmen zu machen . Das zusätzliche Byte enthält die Unterkanalinformationen (ein Unterkanal für jede Bitposition). Eine Gruppe von 98 F3-Frames wird als Abschnitt bezeichnet , und die 98 zugeordneten Steuerbytes enthalten zwei Synchronisationsbytes und 96 Bytes echte Unterkanaldaten. Der Q-Unterkanal hat zusätzlich 16 Bits CRC-Fehlerkorrektur in diesen 96 Bits.

Die Idee dahinter ist, Daten auf der Oberfläche der Festplatte so zu verteilen, dass Kratzer, Schmutz usw. nicht viele fortlaufende Bits beeinträchtigen. Die Fehlerkorrektur kann also die verlorenen Daten wiederherstellen, solange die Kratzer dies nicht tun zu groß.

Infolgedessen muss die Hardware des CD-Laufwerks nach dem Neupositionieren des Objektivs einen vollständigen Abschnitt lesen, um festzustellen, wo sich das Objektiv im Datenstrom befindet. Die Entwürfelung der verschiedenen Stufen erfolgt durch Hardware, die sich selbst mit den 2 Synchronisationsbytes im Steuerbyte-Datenstrom synchronisieren muss. Alle CD-Laufwerksmodelle benötigen eine andere Synchronisierungszeit als andere Modelle (Sie können dies testen, indem Sie von zwei verschiedenen Laufwerken lesen, sofern vorhanden), je nachdem, wie die Hardware implementiert ist. Außerdem benötigen viele Modelle nicht immer genau dieselbe Zeit für die Synchronisierung, sodass sie etwas früher oder später starten und die entschlüsselten Daten nicht immer auf demselben Byte ausgeben können.

Wenn das Ripping-Programm einen READ CD(0xBE) -Befehl ausgibt, liefert es eine Übertragungslänge und eine Startadresse (oder besser gesagt eine Q-Kanal-Zeit). Das Laufwerk positioniert das Objektiv, entwürfelt die Bilder, extrahiert den Q-Kanal, vergleicht die Zeit und beginnt mit der Übertragung, wenn es die richtige Zeit findet. Diese Übertragung beginnt nicht immer mit demselben Byte wie oben beschrieben, sodass das Ergebnis mehrerer READ CDBefehle gegeneinander verschoben werden kann. Aus diesem Grund sehen Sie unterschiedliche Unterkanaldateien von Ihrem Ripper.

Abhängig von der Hardware und den Umständen, unter denen das Objektiv eingestellt wird, ist es mehr oder weniger zufällig, wenn die Übertragung einige Proben zu früh oder einige Proben zu spät beginnt. Das einzige Muster, das Sie in den Ergebnissen sehen werden, ist, dass die Verschiebungen ein Vielfaches der Übertragungslänge sind.

Einige Laufwerksmodelle verfügen tatsächlich über genaue Hardware, die die Übertragung immer zur gleichen Zeit startet. Der Standard definiert ein Bit in der Modus-Seite 0x2a ("CD / DVD-Funktionen und mechanische Status-Seite"), das angibt, ob dies der Fall ist, aber die Praxis zeigt, dass einige Laufwerke, die behaupten, genau zu sein, dies tatsächlich nicht sind. (Unter Linux können Sie sg_modesaus dem sg3-utilesPaket die Modusseiten lesen, ich weiß nicht, welches Tool unter Windows verwendet werden soll).

dirkt
quelle
Vielen Dank für Ihre Antwort, es gibt mir einen interessanten Kontext. Ich verstehe, dass ich den Unterkanal nicht brauche, um die richtigen Daten von der Disc zu haben. Ich frage mich nur, warum der Unterkanal selbst nicht über Dumps hinweg konsistent ist.
Chris
1
Ja, ich habe versucht zu erklären, warum der Unterkanal nicht konsistent ist: Sie senden Befehle an die Festplatte, um "Roh" -Daten einschließlich Unterkanälen zu lesen, und die Positionierung ist nicht präzise. Daher kann es vorkommen, dass das Lesen an verschiedenen Punkten beginnt. Wenn Sie die gelesenen Daten vergleichen, werden Teile nur verschoben. OTOH, die CD-ROM-Daten selbst haben dieses Problem nicht. Und Sie benötigen den Kontext, um zu verstehen, warum die Positionierung nicht genau ist (obwohl Sie aus dem genauen Grund, auf den ich nicht eingegangen bin, noch mehr Kontext benötigen würden ).
Dirkt
Ich interessiere mich für den genauen Grund, wenn es möglich ist. Ich habe .subin meiner Frage einen Download-Link zu Dateien hinzugefügt . Ich habe es mit einem Hex-Editor verglichen und Sie haben Recht, die Daten sind verschoben. Ich kann jedoch kein offensichtliches Muster finden.
Chris
Sehr interessant, danke. Ich habe cygwin, sg3-utils installiert und bin gelaufen sg_modes. Ich habe 0x2aim Abschnitt "MM-Funktionen und mechanischer Status (veraltet)". Ich werde morgen ein neues Liteon-Laufwerk erhalten und erneut testen, ob ich über mehrere Dumps hinweg einen konsistenten Unterkanal erhalte.
Chris
1
Das Vorhandensein der Codepage hat nichts zu bedeuten, Sie müssen sich das richtige Bit ansehen (Bit 1 des 6. Bytes, "CD-DA-Stream ist genau"). Wenn Sie zwei Laufwerke haben, nehmen Sie eine Audio-CD, kopieren Sie sie auf beide Laufwerke und vergleichen Sie die Daten. Sie sollten verschiedene Offsets sehen, bei denen die tatsächlichen Daten ungleich Null beginnen. Wahrscheinlich sehen Sie auch unterschiedliche Offsets für die Unterkanaldateien zwischen den beiden Laufwerken.
Dirkt
8

Laut diesem Wikipedia-Artikel

Ein Frame umfasst 33 Bytes, von denen 24 Bytes Audio- oder Benutzerdaten sind, acht Bytes Fehlerkorrektur (CIRC-generiert) und ein Byte Subcode.

Dies deutet darauf hin, dass es keine Fehlerkorrektur für den Unterkanal gibt.

Ich habe auch woanders eine andere Frage gefunden . Es geht um Audio-CDs, aber ich denke, es geht um das richtige Problem:

Ich kann nur sagen, dass ich es nie geschafft habe, zwei identische Unterkanal-Messwerte (* .SUB-Datei) beim Lesen von derselben CD-DA / CD-TEXT zu erhalten. Ist das beim Lesen im RAW-Modus normal, weil die Daten nicht korrigiert werden, weil das CD-DA / CD-TEXT-Format nicht in allen Unterkanälen EDC / ECC überträgt?

Die Antwort dort:

Nur Audiodaten werden einer Reed-Solomon-Codierung (C1 & C2) unterzogen. Subcode-Kanaldaten (Kanäle P ... W) unterliegen keinem Interleaving- oder Fehlerschutz.

Während dirkt möglicherweise in einer anderen Antwort auf Ihre Frage richtig ist , dass Sie möglicherweise keine .subDateien benötigen , geht die Antwort nicht explizit auf Ihre Frage ein:

Was ist die Erklärung für dieses Verhalten?

Meine Antwort: Sie erhalten verschiedene .subDateien, weil Unterkanäle keine Fehlerkorrektur haben. Lesefehler werden beim Lesen von Audio- oder Benutzerdaten korrigiert (oder zumindest erkannt), ein Lesefehler kann jedoch unverändert bleiben, wenn er beim Unterkanalbit auftritt. Bestimmte Fehler aufgrund von Kratzern oder Staub können während einer Lesesitzung auftreten, nicht während einer anderen usw. - daher .subDateien, die unterschiedlich sind.


Antwort erweitert, um den Kommentar anzusprechen:

Ich habe zwei Kopien dieser Diskette, von denen eine in ausgezeichnetem Zustand ist (kein sichtbarer Kratzer) und das Verhalten ist immer noch dasselbe. Ich habe auch andere ältere Spiele-CD-ROMs im schlimmsten Zustand, die .subüber mehrere Dumps hinweg konsistente Dateien haben .

Ich vermute (leider ohne Beweise), dass verschiedene CDs mit unterschiedlicher Qualität hergestellt wurden. In einem Fall, in dem Unterkanäle keine Rolle spielen, besteht die Festplatte mit geringerer Qualität möglicherweise weiterhin Qualitätstests, die nur darauf ausgelegt sind, Dateninkonsistenzen zu erkennen. Oder es kann einfach eine Wahrscheinlichkeitsfrage sein: Eine Platte hat ihre Schwachstelle (n) (ein Bit, das inkonsistente Messwerte liefert), an der die Fehlerkorrektur Abhilfe schaffen kann. ein anderer hat es zufällig im Unterkanalbereich.

Ein solches Unterkanalbit reicht aus, um Ihnen verschiedene Prüfsummen zu liefern, während sogar Tausende "unentschlossene" Bits im Benutzerdatenbereich stillschweigend korrigiert werden können, wenn sie benötigt werden, wenn sie nur ausreichend verteilt sind, sodass der Fehlerkorrekturalgorithmus nicht zu viele Fehler behandelt. viele von ihnen gleichzeitig.


Antwort erweitert als Reaktion auf KProbe 2-Ergebnisse.

Soweit ich weiß, sind C1-Fehler zulässig (bis zu einem gewissen Grad), da sie stillschweigend korrigiert werden ( mehr hier ). Diese Korrektur funktioniert aufgrund von Fehlerkorrekturbits. Wie ich schon sagte, Subkanäle hat keine solche Redundanz im Allgemeinen ( dirkt erwähnt Korrektur Q-Subkanal CRC - Fehler aber , dass in meinem Abschluss nicht viel ändern). Wenn der Fehler dort auftritt, kann er nicht erkannt werden, es sei denn, Sie wissen im Voraus, wie die korrekten Unterkanaldaten lauten.

Sie hatten also insgesamt 1855 bekannte Fehler. Wiederholen Sie den Test (ernsthaft, machen Sie es!) Und Sie könnten zB 1790 Fehler haben; oder 1892. Die korrigierte Ausgabe ist jedoch bei jedem Lesen dieselbe.

Wenn es ein Unterkanalbit für jeweils 32 Datenbits gibt, dann haben Sie wahrscheinlich etwa 1855/32 Unterkanalbits, die mit einem nicht erkannten Fehler gelesen wurden. Das sind ungefähr 58 Bits. Fast, denn dank Q-Subchannel-CRC können zumindest einige dieser Fehler entdeckt werden. Da Q einer von acht Unterkanälen ist, verbleiben meiner Schätzung nach in anderen Unterkanälen ca. 50 fehlerhafte Bits. Wenn Sie das nächste Mal lesen, erhalten Sie möglicherweise nur wenige dieser Bits ohne Fehler und an anderer Stelle nur wenige neue Unterkanalfehler. Sie erhalten also eine andere .subDatei. Und trotzdem wissen Sie nicht genau, welche dieser Bits beim ersten oder zweiten Mal richtig gelesen wurden.

Kamil Maciorowski
quelle
Zunächst einmal vielen Dank für Ihre Antwort, ich verstehe, dass der mittlere Zustand zu berücksichtigen ist, aber ich habe zwei Kopien dieser Festplatte in einem ausgezeichneten Zustand (kein sichtbarer Kratzer) und das Verhalten ist immer noch das gleiche. Ich habe auch andere ältere Spiele-CD-ROMs im schlimmsten Zustand, die .subüber mehrere Dumps hinweg konsistente Dateien haben . Mir ist bewusst, dass ich den Unterkanal nicht brauche, da das Spiel nicht geschützt ist. Ich stelle diese Frage aus technischer Neugier :).
Chris
1
@Christophe Ich habe meine Antwort erweitert.
Kamil Maciorowski
Ich verstehe. Ich denke, es könnte interessant sein, Fehlerinformationen für das Medium zu haben. Ich habe ein Liteon iHAS124-Laufwerk bestellt und werde kprobe2 verwenden, um dies zu überprüfen. Ich hätte morgen darüber berichten sollen.
Chris
Ich habe das C1-Fehler-Scan-Ergebnis zu meiner Frage hinzugefügt, es scheint gut zu sein, max ist 25.
Chris
1
@Christophe Ich habe meine Antwort nochmal erweitert.
Kamil Maciorowski