Datei Datentypen Analyse



  • OK folgende Datei:

    AAAA
    

    Ist das: Ein ASCII-String "AAAA", ein Integer mit dem Wert 1094795585 oder vielleicht doch ein float mit eirgend einem Wert (keine Ahnung welchem)? Alle drei Antworten sind Richtig. Diese vier Byte lassen sich sowohl als String, als auch als Zahl als auch als sonstirgendwas interpretieren.



  • datum identifizieren müsste leicht sein

    weil das jahr immer von 1970-20XX geht.



  • frag mal die Entwickler von Datenrettungsprogramme. Die haben doch immer so Analysen 😃



  • x schrieb:

    datum identifizieren müsste leicht sein

    weil das jahr immer von 1970-20XX geht.

    Sagt wer? wieso sollte es nciht Software geben, die das anders handhabt?



  • Helium schrieb:

    x schrieb:

    datum identifizieren müsste leicht sein

    weil das jahr immer von 1970-20XX geht.

    Sagt wer? wieso sollte es nciht Software geben, die das anders handhabt?

    sagt die datenanalyse 😃

    wenn man binärdaten retten (d.h. interpretieren) will, MUSS man einfach bestimmte annahmen machen. und wenn man genug annahmen treffen kann (man weiss z.b., dass auf dem zielsystem viele ms word dateien gespeichert sind), dann kann man anfangen, nach typischen signaturen zu suchen.

    im falle dieses problems hier muss man auch annahmen treffen. ohne diese, lassen sich die bits und bytes sonstwie interpretieren. wenn man aber die annahme macht, dass jedes datum in einer bestimmten form gespeichert ist (z.b. DD-MM-JJJJ), dann kann man nach solchen signaturen suchen. hat man diese erstmal gefunden, hat man auch eine struktur in den daten und man kann weitere annahmen treffen. nämlich das alles, was nicht auf die signatur passt, kein datum ist.

    über einen string lassen sich auch annahmen treffen. das werden aufeinander folgende bytes sein, die sich hauptsächlich im bereich der menschlich lesbaren zeichen bewegen (a-z, A-Z, 0-9, und evtl. einige sonderzeichen).

    kann man solche annahmen nicht treffen, dann ist die interpretation der daten reines raten.

    aber wie der threadersteller dargestellt hat, weiss er wohl, woher die daten kommen. das heisst, er KANN annahmen über die daten treffen. und genau das ermöglicht eine analyse.



  • bububu schrieb:

    wenn man aber die annahme macht, dass jedes datum in einer bestimmten form gespeichert ist (z.b. DD-MM-JJJJ), dann kann man nach solchen signaturen suchen. hat man diese erstmal gefunden, hat man auch eine struktur in den daten und man kann weitere annahmen treffen. nämlich das alles, was nicht auf die signatur passt, kein datum ist.

    Oder es ist ein nicht-detusches Datum und dann MM-DD-JJJJ. ODer vielleicht wird es in einem int in Sekunden seit 1970 gespeichert.

    über einen string lassen sich auch annahmen treffen. das werden aufeinander folgende bytes sein, die sich hauptsächlich im bereich der menschlich lesbaren zeichen bewegen (a-z, A-Z, 0-9, und evtl. einige sonderzeichen)

    Es ist Chinesicher Text als UTF-8.

    Wenn du keine Ahnung vom Format hast kannst du absolut nichts darüber aussagen. Wurden zwei 16Bit Zahlen hintereinander gespeichert oder doch nur eine 32Bit Zahl? Woher willst du das wissen? Du kannst es nicht.

    Beim Dateiwiederherstellen weißt du, dass eine datei nur bei einem neuen Cluster beginnen lassen Des weiteren haben viele Formate an ihrem Anfang eine bestimmte Kennung z.B. "BM" am anfang eines Bitmaps, ... . Findest du also am Anfang eines Clusters ein BM gehst du davon aus, dass es ein Bitmap ist, versuchst die Daten entsprechend zu interpretieren und wenns irgendwie was sinnvolles ist (also die Werte den Vorgaben des Formats entsprechen) nimmst du an, dass du gerade ein Bitmap wiederhergestellt hast. Aber durch das Format weißt du eben, Byte 3 und 4 ergeben zusammen eine 16-Bit-Zahl oder was weiß ich.



  • sag mal, diskutierst du immer, indem du irgendwelche dämlichen beispiele an den haaren herbeiziehst?

    "Oder es ist ein nicht-detusches Datum und dann MM-DD-JJJJ. ODer vielleicht wird es in einem int in Sekunden seit 1970 gespeichert."

    dann such ich halt nach nem anderen datumsformat.

    "Es ist Chinesicher Text als UTF-8"

    spitze! dann weiss man ja, nach was man suchen muss.

    es ist doch klar, dass es wahnsinnig schwer bis unmöglich ist, daten zu analysieren, über die man keine annahmen treffen kann. aber sobald das möglich ist, und es klingt so, als könne der ersteller das, dann kann man auch ne recht gute analyse abliefern.

    so, und nu zauber noch irgendnen seltsames beispiel aus dem hut, bin schon gespannt.



  • Hui ist ja eine heiße Diskusion hier :p
    Also klar soll das nicht 100% sein. Wie gesagt das Programm soll dem User ja nur ein Vorschlag geben und letztendlich soll der User entscheiden was was ist. Und man muss schon mit Wahrscheinlichkeiten Rechnen. Aber ich merk schon das das nicht einfach wird besonders bei binärdateien 😃

    schirrmie



  • thordk schrieb:

    sag mal, diskutierst du immer, indem du irgendwelche dämlichen beispiele an den haaren herbeiziehst?

    Also ich bin beiden von mir genannten Datumsangaben schon öfters begenet, als der Originalvorschlag. Inwiefern ist das an den Haaren herbei gezogen.

    Anyway verstehe ich das ganze immer noch nicht. Man kann anahand der Bytes nicht erkennen, um was es sich handelt. Es geht nicht.
    Die einzige Möglichkeit ist die ersten Bytes einer Datei zu analysieren und falls sich daraus das Dateiformat erschließen lässt die Datei entsprechend einzulesen. Aber aus irgendwelchen Wilden Bytefolgen zu schließen, was es sein könnte ist unmöglich. Es gibt vielleicht ein paar Sepzialfälle, bei denen sich etwas vermuten lässt.
    Machen wir konkrete Beispiele:
    Ich habe ein paar Wavedateien. Ein paar sind 16Bit codiert, ein paar 24Bit und ein paar 32Bit-FP. Ist nicht unrealistisch, ich habe alles zu hauf auf meiner Platte.
    Wenn ich nicht weiß, dass eine dieser Wavedateien ihr Audio mit 24Bit-Tiefe gespeicher hat, woher weiß ich, dass ich immer in 3Byte schritten lesen sollte? Und woher weiß ich, ab wo ich in dreier Schritten lesen sollte, weil vorher kommen ja noch irgendwelche Header, die man ganz anders lesen müsste.

    Und es ist ja auch nicht so, dass das ganze in 2Byte-Schritten interpretiert keinen Sinn ergäbe. Es wären eben andere Zahlen und mal rein hypothetisch als PCM interpretiert ergäbe das immer noch Geräusche.

    Anderes Beispiel: Ich habe eine Zip-Datei. Pures Chaos. Nichts ergibt irgendeinen Sinn. Alles sind einträge in ein nicht existirendes "Wörterbuch", das erst aufgebaut würde, wenn man die Datei korrekt als ZIP einlesen würde.

    Ich habe absichtlich zwei sehr populäre Formate genommen, damit das ganze ein wenig Praxisbezug hat.



  • @Helium
    Es handelt sich ja nicht um solche Wirren dateien. Es sind hauptsächlich irgendwelche Log-Dateien die ein genaues Muster haben. Wo jede Zeile gleich aufgebaut ist. Wie gesagt wo entweder jede Zeile mit einem Seperator getrennt ist oder wo jede Zeile in bestimmte Bytes (bei binärdateien) aufgeteilt ist. Also ganz sooooo unmöglich sollte das nicht sein.

    schirrmie



  • das beispiel ist deshalb an den haaren herbeigezogen, da mein datumsformat lediglich ein beispiel war. natürlich kann auch jedes andere möglich sein. es ging mir nur darum, dass man weiss, dass ein datum zu erwarten ist und eventuell weiss man auch, in welchem format dieses datum erwartet werden kann. und damit hat meinen einen ansatz zur analyse.

    im OP steht, dass das datum 8 byte belegt. das spricht dafür, dass das datum sehr wahrscheinlich in einem JJJJMMDD-format vorliegt, wobei jede ziffer in einem byte angebildet ist. kann natürlich auch was anderes sein, aber das erscheint mir naheliegend. wenn ich über die reihenfolge der speicherung nix weiss, probier ich vielleicht alle varianten durch. womöglich ist es auch ne ganz andere variante, dann läuft meine analyse ins leere. aber, ich wiederhol es nochmal, die grundannahme ist, dass ich eben weiss, wie die daten vorliegen.

    wenn ich nun durch meine binärdatei durchgeh und alle aufeinanderfolgenden 8 byte daraufhingehend analysiere, ob sich die bytes als ein gültiges datum interpretieren lassen, dann ist das ein guter ansatz, um eben den typ "datum" in den bits zu finden.

    dein beispiel mit den waves ist dahingehend nicht direkt auf das problem hier zu beziehen, da es sich bei dem beispiel um daten handelt, die sich schlecht einer plausibilitätskontrolle unterziehen lassen. das ist aber bei einem typ wie "datum" durchaus möglich.


Anmelden zum Antworten