Partitionen einer Festplatte
-
Hi!
Wenn du das s.seekg(512); weglassen würdest, könntest du mit obigen Code den Bootsektor der Partition C: auslesen. Leider bekommst du damit nicht raus wieviel Partitionen tatsächlich vorhanden sind.
Oft stehen die gewünschten Informationen im Bootsektor, allerdings ist das abhängig vom jeweiligen Dateisystem, mit welchen der Datenträger Formatiert wurde.grüße
-
Wenn man so wirklich an das laufwerk kommt, könnte man das bitte in die FAQ aufnehmen ?
-
Steh ich nun total neben mir oder übersehe ich tatsächlich nur das seek?!
-
[edit]
das seek rausgenommen denn das Beispiel sollte auf den Bootsektor abzielen, hatte es beim experimentieren reingesetzt weil ich mal mitten drinn 5MB lesen wollte und beim aufbereiten vergessen. Zudem ein return eingefügt falls der Stream nicht zu öffnen ist
[/edit]
-
Ja schon, das sah ich schon bei deinem ersten Beitrag.
Nur bin ich der Meinung, dass hier kein seek vorhanden ist...
#include <fstream>
#include <iostream>
#include <vector>
int main(int argc, char* argv[])
{
std::ifstream s;std::vector<char> t;
t.resize(512);
t.reserve(512);
s.open( "\\\.\\C:", std::ios_base::in | std::ios_base::binary );if ( !s )
{
std::cout << "konnte nicht geoeffnet werden\n";
return 20;
}s.read(&t[0],512);
s.close();
reutrn 0;
}Oder bin ich nun komplett bekloppt

Vielleicht bekomm ich ja auch gleich die Pappnase auf
-
Na das Seek steht da nicht mehr, weil ich es, wie es im Edit steht, entfernt habe

Ich hatte den Beitrag damals gelesen und da wurde der Bootsektor genommen. Ich hatte mir das dann einfach zusammen gebastelt und wollte auch in diesem Beitrag auf den Bootsektor hinaus.
Da für mich nur Datenmüll kam hatte ich mich mit seek auf verschiedene "Positionen" gesetzt und einfach mal nen großen Block gelesen.
Kurz: Du siehst kein seek weil da kein seek (mehr) steht

Bevor David gepostet hat stand da (sinngemäß, hatte noch bereinigungen vom VS egeinen kram gemacht):
#include <fstream> #include <iostream> #include <vector> int main(int argc, char* argv[]) { std::ifstream s; std::vector<char> t; t.resize(512); t.reserve(512); s.open( "\\\\.\\C:", std::ios_base::in | std::ios_base::binary ); if ( !s ) { std::cout << "konnte nicht geoeffnet werden\n"; return 20; } s.seekg(512); // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< s.read(&t[0],512); s.close(); reutrn 0; }
-
Nu hab ichs gerafft

Vielen Dank erstmal! Ich probier da mal einwenig rum!
Sonst meld ich mich nochmal!Frohes schaffen noch!
P.S.: Sehr effektives Forum!
--> Da werden Sie geholfen
-
Doch Knuddlbaer das funktioniert wirklich.
Hier mal schnell ein Dump meines Bootsektors!
eb 52 90 4e 54 46 53 20 20 20 20 00 02 08 00 00 00 00 00 00 00 f8 00 00 3f 00 ff 00 3f 00 00 00 00 00 00 00 80 00 80 00 b0 b5 51 08 00 00 00 00 00 00 0c 00 00 00 00 00 5b 1b 85 00 00 00 00 00 f6 00 00 00 01 00 00 00 78 78 bf bc a1 bf bc 98 00 00 00 00 fa 33 c0 8e d0 bc 00 7c fb b8 c0 07 8e d8 e8 16 00 b8 00 0d 8e c0 33 db c6 06 0e 00 10 e8 53 00 68 00 0d 68 6a 02 cb 8a 16 24 00 b4 08 cd 13 73 05 b9 ff ff 8a f1 66 0f b6 c6 40 66 0f b6 d1 80 e2 3f f7 e2 86 cd c0 ed 06 41 66 0f b7 c9 66 f7 e1 66 a3 20 00 c3 b4 41 bb aa 55 8a 16 24 00 cd 13 72 0f 81 fb 55 aa 75 09 f6 c1 01 74 04 fe 06 14 00 c3 66 60 1e 06 66 a1 10 00 66 03 06 1c 00 66 3b 06 20 00 0f 82 3a 00 1e 66 6a 00 66 50 06 53 66 68 10 00 01 00 80 3e 14 00 00 0f 85 0c 00 e8 b3 ff 80 3e 14 00 00 0f 84 61 00 b4 42 8a 16 24 00 16 1f 8b f4 cd 13 66 58 5b 07 66 58 66 58 1f eb 2d 66 33 d2 66 0f b7 0e 18 00 66 f7 f1 fe c2 8a ca 66 8b d0 66 c1 ea 10 f7 36 1a 00 86 d6 8a 16 24 00 8a e8 c0 e4 06 0a cc b8 01 02 cd 13 0f 82 19 00 8c c0 05 20 00 8e c0 66 ff 06 10 00 ff 0e 0e 00 0f 85 6f ff 07 1f 66 61 c3 a0 f8 01 e8 09 00 a0 fb 01 e8 03 00 fb eb fe b4 01 8b f0 ac 3c 00 74 09 b4 0e bb 07 00 cd 10 eb f2 c3 0d 0a 46 65 68 6c 65 72 20 62 65 69 6d 20 4c 65 73 65 6e 20 64 65 73 20 44 61 74 65 6e 74 72 84 67 65 72 73 00 0d 0a 4e 54 4c 44 52 20 66 65 68 6c 74 00 0d 0a 4e 54 4c 44 52 20 69 73 74 20 6b 6f 6d 70 72 69 6d 69 65 72 74 00 0d 0a 4e 65 75 73 74 61 72 74 20 6d 69 74 20 53 74 72 67 2b 41 6c 74 2b 45 6e 74 66 0d 0a 00 00 00 00 00 00 00 00 00 00 00 00 83 a8 b6 ce 00 00 55 aa3 Bytes - Jmp Instruction
eb 52 90 .. .. .. .. .. .. .. .. .. .. .. .. ..8 Bytes - OEM ID
.. .. .. 4e 54 46 53 20 20 20 20 .. .. .. .. .. -> NTFS25 Bytes - BPB
48 Bytes Extended BPB.. .. .. .. .. .. .. .. .. .. .. 00 02 08 00 00 -> 2 Bytes/Sektor, 8 Sektors/Cluster, 8 Reserved Sectors 00 00 00 00 00 f8 00 00 3f 00 ff 00 3f 00 00 00 -> F8 (Media Descriptor), 16.128 Sectors/Track, 65.280 Heads 1.056.964.608 Hidden Sectors 00 00 00 00 80 00 80 00 b0 b5 51 08 00 00 00 00 -> 12.733.172.616.261.533.696 Total Sectors 00 00 0c 00 00 00 00 00 5b 1b 85 00 00 00 00 00 -> 13.194.139.533.312 Logical Cluster Num for $MFT 6.564.987.116.869.124.096 Logical Cluster Num for $MFTMirr f6 00 00 00 01 00 00 00 ff ff ff ff ff ff ff ff -> 4.127.195.136 Clusters Per File Record Segment 268.435.456 Clusters Per Index Block ffffffffffffffff Volume Serial Number 00 00 00 00 .. .. .. .. .. .. .. .. .. .. .. .. -> 00 00 00 00 Checksum426 Bytes - Bootstrap Code
.. .. .. .. fa 33 c0 8e d0 bc 00 7c fb b8 c0 07 8e d8 e8 16 00 b8 00 0d 8e c0 33 db c6 06 0e 00 10 e8 53 00 68 00 0d 68 6a 02 cb 8a 16 24 00 b4 08 cd 13 73 05 b9 ff ff 8a f1 66 0f b6 c6 40 66 0f b6 d1 80 e2 3f f7 e2 86 cd c0 ed 06 41 66 0f b7 c9 66 f7 e1 66 a3 20 00 c3 b4 41 bb aa 55 8a 16 24 00 cd 13 72 0f 81 fb 55 aa 75 09 f6 c1 01 74 04 fe 06 14 00 c3 66 60 1e 06 66 a1 10 00 66 03 06 1c 00 66 3b 06 20 00 0f 82 3a 00 1e 66 6a 00 66 50 06 53 66 68 10 00 01 00 80 3e 14 00 00 0f 85 0c 00 e8 b3 ff 80 3e 14 00 00 0f 84 61 00 b4 42 8a 16 24 00 16 1f 8b f4 cd 13 66 58 5b 07 66 58 66 58 1f eb 2d 66 33 d2 66 0f b7 0e 18 00 66 f7 f1 fe c2 8a ca 66 8b d0 66 c1 ea 10 f7 36 1a 00 86 d6 8a 16 24 00 8a e8 c0 e4 06 0a cc b8 01 02 cd 13 0f 82 19 00 8c c0 05 20 00 8e c0 66 ff 06 10 00 ff 0e 0e 00 0f 85 6f ff 07 1f 66 61 c3 a0 f8 01 e8 09 00 a0 fb 01 e8 03 00 fb eb fe b4 01 8b f0 ac 3c 00 74 09 b4 0e bb 07 00 cd 10 eb f2 c3 0d 0a 46 65 68 6c 65 72 20 62 65 69 6d 20 4c 65 73 65 6e 20 64 65 73 20 44 61 74 65 6e 74 72 84 67 65 72 73 00 0d 0a 4e 54 4c 44 52 20 66 65 68 6c 74 00 0d 0a 4e 54 4c 44 52 20 69 73 74 20 6b 6f 6d 70 72 69 6d 69 65 72 74 00 0d 0a 4e 65 75 73 74 61 72 74 20 6d 69 74 20 53 74 72 67 2b 41 6c 74 2b 45 6e 74 66 0d 0a 00 00 00 00 00 00 00 00 00 00 00 00 83 a8 b6 ce 00 00 .. ..2 Bytes - End Of Sektor Marker
.. .. .. .. .. .. .. .. .. .. .. .. .. .. 55 aaHier noch weiterführende Informationen: http://www.ntfs.com/ntfs-partition-boot-sector.htm
Auf die Partition kann zugegriffen werden mit:
std::fstream f( "\\\\.\\C:", std::ios_base::in | std::ios_base::binary );Allgemein also:
\.\Bezeichnung:
Danach kann mit ganz normalen Leseoperationen gearbeitet werden.
grüße
-
Hallo,
dann schon mal vielen Dank. Ist das ganze Standartkonform ? Ich habe nie gelesen das man mittels \\\.\<Laufwerk> zugriffe auf diese Art machen kann, zumal in dem Beitrag "damals" noch was mit \\\.\\Partition0 stand.
Hast Du zufällig einen Link der das Thema weiterbehandelt ?
fstream \\\.\\
ist kein guter Suchbegriff für Googel

-
Das is Plattformabhängig. Unter Windows kannst du per \.\c: auf deine Partitionen zugreifen. Unter Linux sind alle Partitionen unter \dev\ zu finden, z.B. \dev\hda1.
grüße
-
Besten Dank!