Daten von Festplatte auslesen über Zeiger



  • Hi,
    Ich hab hier ein riesen problem, mir sind daten verloren gegangen und ich möchte dieser wiederherstellen.
    Es handelt sich um eine Wav-Datei die ca 50mb groß war und dann von einer kleinen ca 25kb überschrieben wurden, daher komm ich mit keinem undelete programm dran.
    Die Daten müssten noch vor ort sein, nur der header und ein paar daten am anfang der alten datei müssten überschrieben worden sein.
    Ich hatte die Idee die Datei mit CFile::Read auszulesen und dann einfach weiterzulesen als sie groß ist um an die 50Mb zu kommen, aber das klappt nicht, er springt immer wieder an den Anfang der 25kb datei.

    Frage: Gibt es eine möglichkeit einen Zeiger zu bekommen an den Beginn meiner Datei, so dass ich ab dort in schritten die festplatte auslesen kann ?

    Wenn nein, gibt es eine möglichlkeit in der Zuordnungstabelle etwas zu ändern dass die Datei einfach größer wird als sie ist und dann die 50mb umfasst?
    CFile::SetLenght geht da leider nicht, die Funktion füllt dann mit Zero's auf.

    Bitte antwortet mir, würde mich riesig freun wenn ihr eine Lösung fändet.

    sky



  • Versuchs mal mit den C Funktionen fread.
    Aber eigentlich müsste das Betriebssystem dies alles abfangen.
    evtl. kannst du das EOF zeichen überschreiben, und so weiterlesen.

    Devil



  • Erstmal danke für die Antwort,
    Mit fread habe ich es schon ausprobiert und du hast recht, es geht anscheinend über das os und von daher bringt es nichts, könnte das höchstens ma mit C unter linux ausprobiern.

    Ich weiss wie ich auf EOF(End of File) überprüfe aber wo ist dort so ein zeichen ? Gibt es sowas oder kommt das auch nur alles aus der Zuordnungstabelle der Festplatte!?

    freue mich auf weitere Antworten,

    Sky



  • Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • du kannst versuchen im Binär-Modus einfach weiter zu lesen, die C-Funktionen sind aber sicher nicht sehr gut, da die interne Bufferung etc. benutzen.

    Ich glaub aber nicht, dass es funktioniert. Was eine reellere Chance hätte, wär die Partition RAW auszulesen und selber gucken, welche Inodes rausgekickt sind und welche nicht oder nach Mustern aus der verlorengegangenen Datei zu suchen.



  • Wenn du genug Platz hast und die Wav nicht komprimiert war, kannst du doch einfach das Festplattenimage sichern und mit einem geeignetem Wav-Player abspielen. Dann Copy&Paste in eine neue Wav-Datei.



  • Gunnar schrieb:

    Wenn du genug Platz hast und die Wav nicht komprimiert war, kannst du doch einfach das Festplattenimage sichern und mit einem geeignetem Wav-Player abspielen. Dann Copy&Paste in eine neue Wav-Datei.

    jo. image ziehen und dann erst gucken ist gut.
    falls du die ganze zeit die platte schon benutzt (zum beispiel, um das hier zu lesen) sind die daten längst furch was anderes überschrieben.
    kannste echt kein image ziehen (z.B. keine andere platte da, ums draufzumachen), fällt mir nur noch so ne glückssache-methode ein.

    Wenn nein, gibt es eine möglichlkeit in der Zuordnungstabelle etwas zu ändern dass die Datei einfach größer wird als sie ist und dann die 50mb umfasst?

    und zwar genau diese: öffne das file mit CreateFile, mach es dann größer mit SetFilePointer. das war's schon. wenn es diesmal beim wachsen lust hatte, die selben blöcke zu belegen wie beim letzten mal (das letze mal war die datei hoffentlich nicht fragmentiert) (und diesmal ist der platz hoffentlich noch nicht überschrieben), dann schwuppst in der tat der alte dateiinhalt wieder in deine datei rein.



  • Erstmal vielen dank für eure zahlreichen antworten!!!

    Ich habe den rat befolgt und ein image erzeugt, ich muss dazu sagen, dass es sich nicht um eine partition auf einer Festplatte handelt sondern eine USB-Speicherkarte, daher hatte ich nix überschrieben.

    Ich hab dann den Header der kleinen wav datei an den anfang des Abbildes des USB-Speichers gesetzt und es funktioniert.

    Vielen vielen Dank !!! 🙂

    Sky


Anmelden zum Antworten