| Autor |
Beitrag |
C0der
Hält's aus hier
Beiträge: 6
|
Verfasst: Mo 10.05.10 00:04
Hallo Leute,
Damit ihr mein Problem besser verstehen könnt, müsst ihr zuerst wissen was es tut.
Ich lese quasi Sektor für Sektor raw von der Festplatte aus und speichere es in einem Byte Array.
Das Problem ist nun, wenn ich es in einen String umcodieren will (um eine Pattern Recognition durchzuführen) mit
C#-Quelltext 1:
| buf2=Encoding.Convert(Encoding.UTF8, Encoding.Unicode, buf); |
oder jeglichen anderen Quellcodierung (ist der erste Parameter) bekomme ich nicht das Ergebnis, dass ich machen würde wenn ich statt dem obigen Folgendes durchführe:
C#-Quelltext 1: 2: 3: 4: 5:
| for (int x = 0; x < 512; x++) { c = (char)buf[x]; this.richTextBox1.Text += c; } |
Ich weiß, dass von der Festplatte ziemlicher "Müll" kommt, der teilweise nicht codiert werden kann, aber ich kann mit der ersten Methode nicht einmal den MBR auslesen, der 100%ig einen lesbaren String beinhaltet (z.B. "No operating system installed"). Wisst ihr woran das liegen könnte?
Danke im Vorraus!
Mit freundlichen Grüßen
C0der
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 10.05.10 00:11
Wie wird denn dann der Buffer weiterverarbeitet/angezeigt? Das Äquivalent zu deiner Schleife sollte jedenfalls Encoding.ASCII.GetString sein.
_________________ >λ=
|
|
C0der 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mo 10.05.10 00:29
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mo 10.05.10 09:06
Hallo und ebenfalls
Und wie ist es mit Encoding.Default? Das ist die Version des Betriebssystems. Bei Dateien sind noch GetEncoding() mit 1250, 1251, 1252 vorzuschlagen; aber das kannst du nur für die Bereiche machen, die eindeutig zu einer bestimmten Datei gehören.
Jürgen
|
|
C0der 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mo 10.05.10 13:33
JüTho hat folgendes geschrieben : | Hallo und ebenfalls
Und wie ist es mit Encoding.Default? Das ist die Version des Betriebssystems. Bei Dateien sind noch GetEncoding() mit 1250, 1251, 1252 vorzuschlagen; aber das kannst du nur für die Bereiche machen, die eindeutig zu einer bestimmten Datei gehören.
Jürgen |
Encoding.Default funktioniert ebenfalls nicht.
Ich werde jetzt einfach die BitEncoder Klasse verwenden, und mir den String als HEX anzeigen lassen. Wenn ich Muster Suche wandle ich den String nachdem gesucht werden soll einfach um und suche ihn dann.
Es würde mich jedoch trotzdem interessieren warum es nicht funktioniert :/
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 10.05.10 16:17
C0der hat folgendes geschrieben : | | Es würde mich jedoch trotzdem interessieren warum es nicht funktioniert :/ |
Mich auch, könntest du uns so ein Array mal zukommen lassen  ? Am besten wohl per File.WriteAllBytes in eine Datei dumpen.
_________________ >λ=
|
|
C0der 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mo 10.05.10 17:07
Einloggen, um Attachments anzusehen!
|
|
Greenberet
      
Beiträge: 339
Erhaltene Danke: 20
Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
|
Verfasst: Mo 10.05.10 17:15
Der Text scheint UTF8 kodiert zu sein.
Allerdings hat der String viele NPC ( Non Printable Characters ). Es könnte sein, dass die Richtextbox diese nicht anzeigen und dadurch "durcheinander" kommt
|
|
C0der 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mo 10.05.10 21:19
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 10.05.10 21:40
Non Printable Charactes anzeigen? Interessant  .
Das hier tut jedenfalls wie erwartet bei mir nicht:
C#-Quelltext 1: 2: 3: 4: 5:
| var buf = File.ReadAllBytes("dump.txt"); for (int x = 0; x < 512; x++) { this.richTextBox1.Text += (char)buf[x]; } |
_________________ >λ=
|
|
C0der 
Hält's aus hier
Beiträge: 6
|
Verfasst: Mo 10.05.10 21:55
|
|