Frage

Was ist der einfachste Weg, ein ext3-Dateisystem auf Blockebene zugreifen? Ich für die Dateien sich nicht, oder rohe Bytes, muss ich nur noch die FS einen Block zu einem Zeitpunkt lesen. Gibt es eine einfache Möglichkeit, dies (in C) zu tun? Oder vielleicht eine einfache Anwendung, deren Quelle ich nach Inspiration sucht in könnte? Ich fand keine brauchbar Tutorials im Netz, und ich bin ein bisschen Angst in die Kernel-Quelle zu tauchen, um herauszufinden, wie es zu tun.

War es hilfreich?

Lösung

Ja, finden Sie unter e2fsprogs . Dies bietet Werkzeuge, die Sie verwenden können, nichts zu tun (!) Mit ext2, ext3 und ext4-Dateisystemen. Es enthält auch eine Bibliothek-Schnittstelle, so dass Sie etwas anderes tun können.

Sehen Sie enthalten debugfs, es genug sein könnte für Sie zu starten. Ansonsten die Header überprüfen und einige Code schreiben.

Andere Tipps

Wenn Sie eine einfache App wollen, dann empfehle ich Ihnen einen Blick auf „ dd “Dienstprogramm. I kommt im Rahmen der GNU Core-Dienstprogramm . Seine Quelle ist zum Download zur Verfügung. Werfen Sie einen Blick auf seine Homepage hier .
Wenn Sie von einem C-Code erreichen gleiche wollen, dann lesen Sie bitte folgenden Code. Hoffe, das hilft dir. :)

#include <stdio.h>
#include <linux/fs.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define SECTOR_NO 10 /*read 10th sector*/

int main()
{
        int sector_size;
        char *buf;
        int n = SECTOR_NO;

        int fd = open("/dev/sda1", O_RDONLY|O_NONBLOCK);
        ioctl(fd, BLKSSZGET, &sector_size);
        printf("%d\n", sector_size);
        lseek(fd, n*sector_size, SEEK_SET);

        buf = malloc(sector_size);
        read(fd, buf, sector_size);

        return 0;
}

Disk-Geräte und Partitionen in ihnen verhalten sich wie normale Dateien, die Sie aus lesen kann (und schreiben), z.

head -c 2048 /dev/sda1 > first_2048_bytes

Sie müssen root natürlich sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top