PVR-Ripper

Boom hat sich die Mühe gemacht

mir eine kleine Einweisung zuschreiben,

welche vielleicht noch ausführlicher wird!

 

Also dann mal Achtung... mit Hexadezimalzahlen kennst du cih ein wenig aus?
Wenn nicht, bei HexWorkshop ist ein "Umrechner" dabei.

Also immer wenn ich vor einer Zahl ein "0x" mache, dann meine ich damit eine
Hexadezimalschreibweise:

Folgender bekannter Aufbau

Ein Sector=512 Bytes = 0x200 Bytes
Ein Cluster = 0x32000 Sectors = 100MBytes

Sector 0x000
Platteninfos (??? nur das ???)

Sector 0x001-0x009 (9 stück)
FAT (wirklich so groß??? vielleicht liegt noch was anders darin)
Jedenfalls ist jeder FAT-Eintrag 4Bytes lang. Die ersten 2 Bytes verweisen
auf den nächsten Eintrag. Jeder Eintrag stellt einen Cluster dar. Die
zweiten 2Bytes sind unbekannt. Da zwei Bytes schon 6871947673600 Bytes, bzw.
6710886400 KBytes oder 6553600 MBytes bzw 6400 GBytes abdecken frage ich
mich wirklich wofür die andern beiden Bytes gut sind...

Sector 0x00A-0x06D (100 stück)
FILE Beschreibungen (TOC)
Ich/wir gehen von 100 Stück aus, da irgendwo geschrieben steht (habe es aber
selber noch nicht gelesen) dass maximal 100 Aufnahmen machbar sind. Ist aber
andererseits wieder klar... Eine 20GB Platte ist drin; jede Aufnahme min. 2
Cluster (1xAudio+1xVideo)... Teilen wir mal kurz 20000/200 und was gibt
das??? Genau... 100. WIe das also bei einer größeren Platte aussieht kann
ich im Augenblick noch nicht sagen. Kann sein, dass doch mehr drauf passen,
aber dazu später mehr.

Sector 0x06E-0x0FF (noch ein paar (145!!! stück)
leer... besser gesagt.. keine Ahnung. Vielleicht sind das die, die noch FILE
Beschreibungen beinhalten.

Sector 0x100-0x320ff
erster Videocluster

Sector 0x32100-0x640ff
erster Audiocluster

danach Cluster...Cluster...Cluster...Cluster... (so nehmen ich/wir an!)

Ich hoffe das ist eine brauchbare Einführung...

Nun erkläre ich dir noch kurz was wir püber den FILE Sector wissen:

struct sFileDescription
{
__int8 iRecordNo;
char cStationName[0xE];
char cClipName[0x29];
__int16 iRecordYear;
__int8 iRecordMonth;
__int8 iRecordDay;
__int8 iRecordHour;
__int8 iRecordMinute;
__int8 iRecordSecond;
char cUnknown1;
__int8 iLengthHours;
__int8 iLengthMinutes;
__int8 iLengthSeconds;
char cUnknown2[0x11];
__int16 iVideoFatEntry;
__int16 iAudioFatEntry;
};

- int8 und char bedeuten dasselbe=1 Byte
- wenn etwas in Eckiger Klammer steht, dann bedeutet das xmal soviel also
irgendwas[0x10] bedeutet 16 x irgendwas
- int16 ist doof zu lesen... das sind zwei byte. der wert errechnet sich wie
folgt: (byte1 + byte2*256)

Wie zu sehen ist, ist da noch sehr viel Platz in dem Sector. Ausserdem sind
da "Lücken" in der Beschreibung. Interessanterweise habe ich schon oft
gesehen, dass EPG informationen auf der Platte rumliegen. Sehr seltsam...

Ich hoffe das hilft dir mal weiter!

Gruß
Guido