.dat auslesen Inhalt unbekannt



  • Erstmal mit einem Hexviewer oder Hexeditor ansehen.



  • Kann ich nicht evtl. das gleiche programmieren was auch ein Hexeditor oder Hexviewer (btw, welcher wäre empfehlenswert) intern macht?

    Also die Datei an sich ist mir eigentlich egal, mir gehts eher um die vorgehensweise usw



  • Es gibt kein standardisiertes "dat"-Format. Du musst also erstmal rauskriegen, was die Datei enthält und wie sie aufgebaut ist. Das ist Detektivarbeit, und dazu absichtlich keine vernünftigen Werkzeuge zu benutzen kommt mir ziemlich dämlich vor. Binär auslesen kannst du die Datei immer noch, wenn du den Aufbau entschlüsselt hast.



  • Kann ich nicht evtl. das gleiche programmieren was auch ein Hexeditor oder Hexviewer (btw, welcher wäre empfehlenswert) intern macht?

    der macht nichts anderes als den Inhalt der Datei als Hexdump auszugeben - keine Magie

    Das Format ist davon abhängig welches Programm die Daten verarbeitet - da gibt es kein Standardvorgehen.

    mh-nexus.de/de/hxd/ ist ein netter Freeware Hexeditor

    oder willst einfach nur einen HexDump programmieren?



  • oder willst einfach nur einen HexDump programmieren?

    Ja, aber irgendwie stehe ich grade voll auf dem schlauch



  • Ja, aber irgendwie stehe ich grade voll auf dem schlauch

    was für ein sinnloser Kommentar - keine Ahnung was dein Problem ist aber du solltest dich mal mit google beschäftigen

    https://www.daniweb.com/software-development/cpp/threads/421365/how-to-make-this-c-hexdump-program-in-c-

    deine Problembeschreibung enthält x völlig abstrakte Fragen ohne irgendeine konkrete Frage - Moeglichweise ist das einfach zu hoch für dich

    kannst du mal eine konkrete Frage stellen?



  • Ja, die Frage ist jetzt eher, wo der Eintrag herkommt ??? Also von mir nicht!!

    Die Frage ist ganz allgemein, was macht so ein Hex Dump Programm ? Den Code hab ich mir angesehen, ganz klar ist mir das aber nicht.



  • Die Bytes in Hexadezimal anzeigen?!
    i.e. das Byte 10101110 (dec: 174) anzeigen als AE (hex). Und das für jedes einzelne Byte.



  • wie dir ja jetzt schon klar ist haben Dateien nicht per se ein bekanntes Format - nur der Entwickler der Software welche die Datei benutzt ist sich über die Struktur und Inhalt im klaren

    Es gibt aber schon Dateien mit bekanntem Format z.B. Bild,Sound,Video,etc. - eben für alle Dateiformate die irgendwo beschrieben wurden - oder jemand in Wochen/Monaten den Inhalt entschlüsselt hat (z.B. oft der Fall bei Textur/Model Extraktion bei Spielen wenn keine Editor vorliegt)

    Ein Hexdump die einfachste Form der Datendarstellung - es wird einfach Byteweise (kleinste sinnvolle Einheit) jedes Bytes als Hexadezimal ausgegeben - mehr passiert da nicht, es gibt ja keine Format-Beschreibung zu der Datei, und auch nur in solchen Fällen nutzt man überhaupt ein HexDump

    in einer Datei steht z.B.

    ABC
    

    sonst nix - also genau 3 Byte

    1. Byte

    in Hex-Darstellung: 0x41
    in Dezimal-Darstellung: 65
    als ASCII-Zeichen: A

    2. Byte

    in Hex-Darstellung: 0x42
    in Dezimal-Darstellung: 66
    als ASCII-Zeichen: B

    3. Byte

    in Hex-Darstellung: 0x43
    in Dezimal-Darstellung: 67
    als ASCII-Zeichen: C

    ein Hexdump davon sieht dann üblicherweise so aus

    41 42 43 | ABC

    oft werden nicht darstellbare oder Steuerzeichen z.B. Newline, Beep, Tab usw
    als . angezeigt

    noch einfacher und verständlicher geht nicht mehr - wenn dir das jetzt
    immer noch unklar ist - mehr Erklärung zu Hexdumps gibt es nicht



  • 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 verstehen

    und,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_modes

    In 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.pdf

    solltest 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 schreiben

    er 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


Anmelden zum Antworten