RalfGesellensetter wrote:
> Hallo,
> 
> ich habe bereits leidlich Erfahrung mit Festplattenforensik (Backups 
> sind etwas für Feiglinge ;) - und möchte hier einen Fall schildern, der 
> mir neue Einblicke in das Ext3-System gibt.
> 
> Ausgangssituation: Eine große ext3-Partition (Sidux-Installation incl. 
> Home + Daten) wurde versehentlich "überinstalliert" - also neu 
> formatiert und nochmals mit Sidux installiert.
> 
> Frozen Image:
> In der (optimistischen aber weitestgehend zutreffenden) Annahme, dass 
> die Formatierung nicht jeden Sektor mit Nullen überschreibt, und Sidux 
> seine Dateien ungefähr an dieselbe Stelle schreibt, wie bei der letzten 
> Installation,

Genau das ist das problem, er hat auch das Dateisystem an die gleiche stelle
geschrieben, Bitfields, Inode Tabelle, alles ueberschrieben...

 wurde die Partition umgehende r/o gesetzt und per "dd" als
> Imagedatei eingefroren.
> 
> Es gibt nun verschiedene Tools wie ext3grep, die Sektoren einzeln 
> auslesen, nach inodes mit Verzeichnissen suchen usw. Diese sehen aber 
> v.a. das neue System.
> 

..darum findest du auch nix mehr vom alten Dateisystem.

> Mit einem reinen Grep konnte ich z.B. schon eine Textdatei aufspüren. 

^^,
Ich hab einen Freund, der steht mit rm und /home auf Kriegsfuss.
Es ist doch erstaunlich was man an Hausarbeiten/Diplomarbeiten (thank god its
LaTex) und SourceCode (ASCII ftw.) mit einem grep -C xxx "catch phrase"
/dev/hda5 retten kann...

> Die meisten Hexeditoren (selbst lfhexedit) versagten allerdings bei 
> einer 10GB-Datei, allein "bless" war in der Lage, das Image komfortabel 
> nach Spuren zu durchsuchen und diese per C&P zu exportieren.
> 

Die meisten ASCII Texte mit grep retten.
Danach foremost drauf jagen.

> Nun ist ganz offensichtlich ein Problem, dass die Dateien aus dem neuen 
> (überschreibenden, gültigen) Ext3-System den Blick auf die alten Daten 
> verstellen. 
> 
> Es wäre also vielleicht eine sinnvolle Herangehensweise, alle Dateien 
> dort mit Nullen zu füllen (nur wie?).

versuchs mal hiermit, in Compiler werfen, dann z.B. "find /usr/ -type f -exec
./nullify \{\} \;":

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

static char zero_mem[4096];

int main(int argc, char *argv[])
{
        int i;

        if(argc < 2) {
                fprintf(stderr, "%s: need filename[s]\n", argv[0]);
                return EXIT_FAILURE;
        }

        for(i = 1; i < argc; i++) {
                struct stat st;
                int f = open(argv[i], O_WRONLY);
                blkcnt_t j;

                if(-1 == f) {
                        fprintf(stderr, "couldn't open \"%s\": %s\n",
                                argv[i], strerror(errno));
                        continue;
                }
                if(fstat(f, &st)) {
                        fprintf(stderr, "couldn't stat \"%s\": %s\n",
                                argv[i], strerror(errno));
                        goto next;
                }
                if(!S_ISREG(st.st_mode)) {
                        fprintf(stderr, "\"%s\" isn't a regular file\n",
                                argv[i]);
                        goto next;
                }

                for(j = st.st_blocks; j;) {
                        size_t k = (sizeof(zero_mem)/512) < j ?
                                   sizeof(zero_mem) : j * 512;
                        write(f, zero_mem, k);
                        j -= k/512;
                }
next:
                close(f);
        }
        return EXIT_SUCCESS;
}


> Alternativ könnte man eine Imagekopie machen, die nur unbenutzte Inodes 
> des neuen Filesystems enthält.
> 
> Anregungen - Ideen willkommen.
> Gruß
> Ralf
Gruss
        Jan

-- 
Nur selten nimmt der Handelsmann statt baren Geldes Stuhlgang an
--
Linux mailing list [email protected]
subscribe/unsubscribe: http://lug-owl.de/mailman/listinfo/linux
Hinweise zur Nutzung: http://www.lug-owl.de/Mailingliste/hints.epo

Antwort per Email an