.dat auslesen Inhalt unbekannt
-
Ah, ok. Also prinzipiell nutzt mir das dann auch nichts.
Wenn man also ein dat File oder andere Datei "analysieren" will, wie geht man dann weiter vor? Ich meine wenn ich das Format nicht kenne, nützt es mir ja auch nichts, wenn statt Hyroglyphen dann Hex codes stehen ?
-
dat_frage schrieb:
Ich meine wenn ich das Format nicht kenne, nützt es mir ja auch nichts, wenn statt Hyroglyphen dann Hex codes stehen ?
Richtig. Hieroglyphen sind lediglich eine andere Represäntation (vom Texteditor als Zeichen interpretiert nämlich) der selben Werte.
Da du das Format nicht kennst, weißt du nicht, welche Werte Zahlen sein sollen, welche Fließkommazahlen, welche Strings (gut, die könnte man evtl. noch erkennen). Wofür wird die Datei denn verwendet?
-
Wenn man also ein dat File oder andere Datei "analysieren" will, wie geht man dann weiter vor?
- du solltest ein erfahrener Entwickler sein damit du mit hilfe deines pratischen Wissens annahmen über mögliche Strukturen machen zu können
- du solltest dich mit Little/Big Endian auskennen
- Binär- Heaxdezimal und manchmal auch Oktaldarstellung sollte sicher sitzen
- du solltes Kodierungen von Standardformaten IEE754 floats, ints, string, Datumsformate, usw. sehr gut kennen
- du solltest einen Haufen gute Tools um dich Scharen z.B. gute Hexeditoren, Disassembler usw.
- du solltest/musst die Software welche das Dateiformat verwendet besser kennen als deine Mutter
- jede Informationsquelle nutzen
- sehr sehr viel Zeit mitbringen
- die Datei modifizieren und schauen was das Programm dazu sagt
- viele varianten der Datei besitzen um nach sich wiederholenden Patterns suchen
- manchmal muss man auch per Reverse-Engineering in das Programm rein - dann ist es wichtig Assembler und die Platform sehr gut zu verstehenund,und,und
Reverse-Engineering von Dateiformaten ist eine sehr anspruchsvolle Aufgabe - was die eigenen Kodierfähigkeiten und strukturiertes/analytisches arbeiten angeht - danach kommt dann nur noch Programm-ReverseEngineering
Ich meine wenn ich das Format nicht kenne, nützt es mir ja auch nichts, wenn statt Hyroglyphen dann Hex codes stehen ?
manche Kodierungen lassen sich einfacher in Hex- oder Binärdarstellung erahnen
-
Weiss ich nicht genau. Glaub fürs deinstallieren von einem Programm. Wie gesagt, es geht mir eher um eine Vorgehensweise im allgemeinen als um eine spezielle Datei.
-
@Gast : Danke, sehr ausführlich. Das hat mich inzeressiert.
Noch eine allgemeine Frage... Ich mach nur hobby kleine programme und hab es noch nie gebraucht : Für was für Anwendungen braucht man es im oraxisleben, eine Datei binär zu öffnen oder was binary zu schreiben? Ios_base::binary ist mir irgendwie suspekt...
-
Praxisleben sollte das heissen
-
ios_base::binary:
http://en.cppreference.com/w/cpp/io/c#Binary_and_text_modesIn kurz: In einigen Betriebssystemen (z.B. Windows) ist das Zeilenende durch \r\n dargestellt.
Wenn du eine Datei im Testmodus oeffnest und etwas daraus liest, wir \r\n "automatisch" zu \n (in deinem Programm). Du liest also einfach ein endline.Wenn du aber tatsaechlich jedes einzelne Zeichen genau lesen moechtest, ohne automatische Umwandlungen zu haben, musst du die Datei eben im Binaermodus oeffnen. Hier gibt es keine Interpretation ueber den Inhalt der Datei.
-
ich glaube dir fehlt noch sehr viel Erfahrung - wenn diese Vorhanden wäre würdes du völlig andere Fragen stellen
aber du scheinst tatsächlich google nicht wirklich zu nutzen (womit du schon mal zeigst das du schon per se nicht alle Informatsquelle nutzt - was ein grosses Manko bei Dateianalyse wäre)
http://www.iwriteiam.nl/Ha_HTCABFF.html
http://en.wikibooks.org/wiki/Reverse_Engineering/File_Formats
http://www.zachtronics.com/yoda-stories/
http://www.rumint.org/gregconti/publications/2008_VizSEC_FileVisualization_v53_final.pdfsolltest du Probleme mit Englisch haben wird es auch schwer, es gibt fast nur Infos in der Sprache
Dateiformat ReverseEngineering ist eine der Königsdisziplinen der Softwareentwicklung/Analyse - da geht man nicht einfach so ran ohne mehrjährige Erfahrung in der Softwareentwicklung - am besten mit Expertenwissen in C/C++ und Assembler
eine Datei zu analysieren kann Wochen oder Monate dauern - das ist definitiv keine Sache von Tagen - hoechstens das Format ist total trivial
-
dat_frage schrieb:
Für was für Anwendungen braucht man es im praxisleben, eine Datei binär zu öffnen oder was binary zu schreiben? Ios_base::binary ist mir irgendwie suspekt...
Gibt viele Anwendungen dafür.
Viele weitverbreitete File-Formate sind einfach binär. Ich würde sogar sagen: die meisten. Mach z.B. mal ein Bild in einem Format deiner Wahl in Notepad oder einem Hex-Editor auf. Das einzige bekannte Bildformat, das mir gerade einfällt, das textbasiert ist, ist SVG. Dagegen BMP, JPEG, PNG, TIFF, TGA - alles binär.Textbasierte Formate sind in letzter Zeit, wo RAM und Festspeicher sehr billig geworden sind, wieder in Mode gekommen. Davor waren auch die gängigen Formate für z.B. Office-Dokumente binär.
Bzw. sind sie eigentlich sogar heute noch, da es primär mal .zip Archive sind, und .zip Archive sind auch Binärfiles.
(Erst in den entpackten .zip Archiven drinnen findet man dann bei den neueren Office-Formaten XML Files.)Binärfiles haben u.A. die Vorteile dass sie kompakt sind (weniger Speicherplatz brauchen) und mit Programmen sehr einfach zu lesen und schreiben sind. Sogar dass sie von Menschen ohne die passenden Programme schwer zu lesen/modifizieren sind kann ein Vorteil sein.
Und wenn diese Punkte wichtig sind, nimmt man halt ein binäres Format.
-
Du kannst im ersten Versuch mal gucken, ob du sowas wie eine Kennung am Anfang der Datei findest. View Formate benutzen eine Kennung, die das Dateiformat bezeichnet, manchmal steht sie als ASCII oder 2/4/8 Byte Folge zu Beginn der Datei. Und dann könntest du danach suchen, ob sich im Netzt eine Formatbeschreibung findet.
-
Also die Datei an sich ist mir eigentlich egal, mir gehts eher um die vorgehensweise usw
...
Danke, sehr ausführlich. Das hat mich inzeressiert.
...
Für was für Anwendungen braucht man es im oraxisleben, eine Datei binär zu öffnen oder was binary zu schreibener will gar kein Format entschüsseln - nur verstehen wie ma sowas macht und unsere Posts + Links erklären das wirklich zu genüge, aber auf seiner Seite fehlt wirklich noch viel zu viel Praxiswissen
-
Richtig, da fehlt Praxiswissen. Wird aber auch nicht kommen, da ich wie gesagt nur als Hobby bisschen programmiere, aber ich wollte einfach mal von den Profis wissen, wie man "theoretisch" an sowas rangeht.
-
DocShoe schrieb:
Du kannst im ersten Versuch mal gucken, ob du sowas wie eine Kennung am Anfang der Datei findest. View Formate benutzen eine Kennung, die das Dateiformat bezeichnet, manchmal steht sie als ASCII oder 2/4/8 Byte Folge zu Beginn der Datei. Und dann könntest du danach suchen, ob sich im Netzt eine Formatbeschreibung findet.
Wobei noch dazuzusagen wäre dass das alles nur Heuristiken sind. (Wobei ich mit "das" meine: das was Programme machen die verschiedenste File-Formate aufmachen bzw. identifizieren können ohne sich auf die Extension zu verlassen.)
Für jedes Dateiformat das eine Kennung an Stelle X stehen hat, gibt es Dateiformate die dort "Nutzdaten" stehen haben -- und diese Nutzdaten können durch Zufall auch jede beliebige Kennung enthalten.
D.h. nur weil etwas mit "BM" anfängt muss es kein .BMP File sein, nur weil etwas mit "MZ" anfängt kein .EXE/.DLL File etc.