Nicht erwartetes Ergebnis beim USB Stick auslessen.



  • Hallo,

    Ich habe folgendes Problem beim auslessen meines 1gb USB Sticks.
    Ich habe versucht meinen Stick bei dem das Dateisystem nichtmehr funktioniert byteweise auszulessen und auf der Festplatte zu speichern, mein Programm lief auch wunderbar, nur am Ende als ich nochmal geguckt habe wie groß die Datei mitlerweile ist hatte ich ganze 10gb Daten.

    Naja dann war ich etwas verwundert und habe mir mal ein Programm geschrieben welches mir den Inhalt anzeigt, jedenfalls ist dabei dashier rausgekommen:
    http://flyfds.bplaced.de/screen.jpg

    also und der Rest der Datei ist mit 0 Bytes gefüllt.

    Hier noch mein C/C++ programm:

    #include<iostream>
    #include<fstream>
    #include<stdio.h>
    
    int main() {
    	FILE* p;
    	p = fopen("\\\\.\\E:", "rb");
    	std::ofstream oStream("e.fimg");
    	char i;
    
    	if(p != NULL) {
    		std::cout<<"Datenträger ist Geöffnet."
    			<<std::endl
    			<<"Daten werden nach C:\e.fimg geschrieben";
    		if(oStream.is_open()) {
    			while(!feof(p)) {
    				fread(&i, sizeof(char), 1, p);
    				oStream.write(&i, 1);
    			}
    			std::cout<<"Der vorgang wurde Beendet."
    				<<std::endl;
    		} else {
    			std::cout<<"Der Ausgabestrom konnte nicht initialisiert werden."
    				<<std::endl;
    		}
    
    	} else {
    		std::cout<<"Der Eingabestrom konnte nicht initialisiert werden."
    			<<std::endl;
    	}
    	fclose(p);
    	oStream.close();
    	system("pause");
    	return 0;
    }
    

    Ich habe das anfangs beim einlessen auch mit der ifStream Klasse versucht und naja das hat noch weniger funktioniert deswegen habe ich das Klassisch mit den C funktionen für die Datei ein- und ausgabe gemacht.

    Hat vielleicht wer eine Idee wie ich an den Inhalt des USB sticks komme ?



  • Wie willst du etws von E: lesen, wenn das Dateisystem kaputt ist?
    Du wirst wohl das Device selber ansprechen müssen. Keine Ahnung wie das unter Windows geht, aber hier ist ja auch ein C++ Forum.



  • Ich wollte nicht etwas von E: lessen sondern E: selber also die bytes.
    Es tut mir leid fals das nicht so gut bei den oberen Post durchgedrungen ist.



  • Wenn du bisher noch nichts auf den USB geschrieben hast würde ich ein genau für diese Fälle vorgesehenes Tool benutzen und nichts selber programmieren. Spontan fallen mit da NTFS Undelete und PC Inspector File Recovery ein.

    Edit:
    Ich sehe grade, dass du von E: nach E: schreiben willst. Bei einem kaputten Filesystem nicht die allerschlaueste Idee 😮 Damit hast du die Wahrscheinlichkeit für eine Datenrettung drastisch gesenkt.



  • Nein Ich schreibe nicht auf E: sondern auf C: da das Programm ja auf C: liegt. Naja Ich wollte das so machen da Ich das auch als Programmierübung verstanden habe, desweiteren hatte ich auch vor eine native Klasse für Java zu erstellen.
    Auf den USB Stick liegen Daten nur das Dateisystem ist nicht mehr in Ordnung.


Anmelden zum Antworten