Wie erhalte ich den Offset eines Inodes in einer gelöschten Partition in einem Blockgerät?

Während einer Neuinstallation habe ich versehentlich eine Diskette mit Daten formatiert. Ich habe versucht, einige Tools zu verwenden: Testdisk, vor allem, aber ich habe keine guten Ergebnisse erzielt. (sehenmein erfolgloser Beitrag auf Superuser).

So habe ich beschlossen, einige Dokumente über @ zu les ext2 Dateisystemstruktur, und ich könnte einige Ergebnisse bekommen:

Die gelöschte Partition hat einen Verzeichnisbaum wie diesen:

dev
|-scripts
|-projects
|-services
|-...
Medias
|-downloads
|-Musique
|-...
backup
...

So, basierend auf dem ext2-Verzeichniseintragsformat:

Directory Entry
Starting_Byte Ending_Byte Size_in_Bytes Field_Description
0   3       4   Inode
4   5       2   Total size of this entry (Including all subfields)
6   6       1   Name Length least-significant 8 bits
7   7       1   Type indicator (only if the feature bit for "directory entries have file type byte" is set, else this is the most-significant 8 bits of the Name Length)
8   8+N-1   N   Name characters

Ich habe versucht, Daten zu finden, die dieser Struktur entsprechen.
Ich habe dieses Skript verwendet:

    var bindexOf = require('buffer-indexof');

    var currentOffset=0;
    var deviceReadStream = fs.createReadStream("/dev/sdb");

    deviceReadStream.on('error',function(err){
        console.log(err);
    });

    deviceReadStream.on('data',function(data){

        var dirs = ["dev","scripts","services","projects","Medias","downloads","Musique","backup"];
        dirs.forEach(function(dir){

            dirOctetFormat = new Buffer(2);
            dirOctetFormat.writeUInt8(dir.length,0);
            dirOctetFormat.writeUInt8(2,1);// type is directory
            dirOctetFormat= Buffer.concat( [dirOctetFormat, new Buffer(dir)]);

            var offset = bindexOf( data, dirOctetFormat );
            if( offset >= 0 ){    
                console.log( dir + " entry found at offset " + (currentOffset + offset) );
            } 

        });
        currentOffset += data.length;
    });
}

Ich habe Daten gefunden, die der Verzeichniseintrag des Dev-Verzeichnisses zu sein scheinen:

 ===== Current offset: 233590226944 - 217.5478515625Gio ====== 
scripts entry found at offset 233590227030
services entry found at offset 233590227014
projects entry found at offset 233590228106

Wenn dies der Fall ist, erhalte ich die Inode-Nummern der untergeordneten Verzeichnisse: Skripte, Projekte, Dienste, ...

Aber ich weiß nicht was ich damit anfangen soll! Ich habe versucht, die Position dieser Inodes zu ermitteln, basierend aufdieser Ratgeber, aber da ich keinen Superblock des gelöschten Dateisystems finden konnte, muss ich nur die Blockgröße, die Anzahl der Blöcke ... erraten, und das scheint mir ein bisschen unklar zu sein, um ein Ergebnis zu erzielen.

So könnten Sie einige Intervalle für alle Werte haben, die benötigt werden, um den Offset eines Inodes zu erhalten, und eine formalere Formel, um diesen Offset zu erhalten?