Sechshundertsechsundneunzig

Mit etwas zeitlichem Abstand beschreibe ich heute das Reverse Engineering von speziellen Dateien, die ich von einem Kunden erhalten hatte.

Zuerst zog ich eine Datei in den Hex-Editor. Aha. Kein binäres Format, sondern Text, genauer gesagt, XML. Allerdings in Unicode (was in Kombination mit XML doch eher ungewöhnlich ist, und die Größe der Dateien ohne Not auf einen Schlag verdoppelt).
Grundsätzlich würde ich die Dateien also schon mal lesen können.

Als nächstes schaute mir die Tags genauer an.
Hm. Da war erst mal eine Art Header-Bereich mit eher allgemeinen Daten. Inwieweit ich die verwerten kann bzw. muss, kann nur eine detaillierte Analyse zeigen. Ich stellte das erst mal zurück.

Der hauptsächliche Inhalt der Datei bestand in einer Liste verschachtelter einzelner Tags mit Bezeichnungen, deren Bedeutung sich zwar beim Lesen erschloss. Das Problem wird sein, sie den offiziellen Bezeichnungen zuzuordnen, von denen sie sich (aus mir unbekannten Gründen) unterscheiden. Das geht keinesfalls automatisch, sondern wäre stupide, langwierige, fehlerträchtige Handarbeit.
Einzelne Attribute waren auch vergeben, die aber ziemlich selbsterklärend waren, und deshalb wohl unproblematisch sein dürften.

Nee, das eigentliche Problem ist das Mapping zwischen den unterschiedlichen Bezeichnungen. Dazu habe ich schlicht und einfach keine Lust. Entweder der Kunde liefert mir selbst eine (von mir zu spezifizierende) Datei, aus der ich die Zuordnungen dann einlesen kann. Oder ich lasse den ganzen Konverter bleiben.
Aber ich selbst tue mir das nicht an. Es finden sich auch noch interessantere Projekte.

Advertisements

Über breakpoint AKA Anne Nühm

Die Programmierschlampe.
Dieser Beitrag wurde unter Uncategorized abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

17 Antworten zu Sechshundertsechsundneunzig

  1. Uschi-DWT schreibt:

    So ist das eben manchmal bzw. öfters das ein Kunde meint einen ganz besonderen Dateiaufbau gebastelt zu haben (und sich damit zu den Programmierern zählt) aber der einzige der damit etwas anfangen kann er selbst ist.

    Mit etwas Glück ist er aber so einsichtig das schon ein klärendes Gespräch dazu führt eine gemeinsame Basis zu schaffen.

    Am besten lief es immer bei mir wenn der Kunde nach dem Gespräch das Gefühl hatte das er mir etwas beibringen konnte und er eben für mich das kleine Problem behebt. 😉

    Gefällt mir

    • breakpoint schreibt:

      Die Software, die diese Dateien sonst verarbeitet, wurde vor etlichen Jahren von einer Firma geschrieben, die mittlerweile nicht mehr existiert, und läuft nur noch auf XP.
      Der Kunde will – verständlicherweise – von XP weg, und möchte deshalb all seine Daten in ein spezielles anderes Format (für das ich geeignete Routinen habe) konvertieren.

      Die Erstellung eines Konverters würde ich ja übernehmen, aber es fehlt die Zuordnung einen ewiglangen Liste von Identifierern.
      Diese Zuordnungsliste müsste man händisch erstellen. Vielleicht findet der Kunde ja einen Mitarbeiter, der das machen könnte. Ich habe dazu keine Lust.

      Gefällt mir

  2. Dir wäre doch bestimmt mehr nach etwas Reverse Engineering von Carsten bei Dir?

    (verlinkte URL beachten)

    Gefällt mir

  3. ednong schreibt:

    Wie? Dir fehlt lediglich so eine Liste mit Zuordnungen und deshalb lehnst du einen Auftrag ab?

    Gefällt mir

    • breakpoint schreibt:

      Diese Liste ist schon noch einiges komplizierter (und vor allem extrem umfangreich – mehrere tausend Items) als ich es hier dargestellt habe.
      Der Kunde überlegt derzeit, ob er selbst diese Liste anlegen will (dann würde auch gleichzeitig ein Teil des Risikos bei ihm liegen, :> falls der Konverter nicht funktioniert).

      Der Konverter selbst ist jetzt nicht so interessant. Ähnliches habe ich schon gemacht.

      Gefällt mir

      • ednong schreibt:

        Also, ich denke, der Kunde muss eh die Zuordnungen absegnen, denn nur er dürfte ja wissen, welche Inhalte sich verbergen. Damit dürfte der Teil des Risikos eh bei ihm liegen.

        Und die eine Seite der Items – nämlich die derer, die sich in den Dateien befinden – dürfte man doch problemlos automatisiert erstellen können. Dokumente in einer Art Batch durlaufen lassen und alle Bezeichner herausziehen dürfte doch nicht so schwer sein. Und der Kunde darf dann zuordnen.
        Captcha: eat out – 😉

        Gefällt mir

        • breakpoint schreibt:

          Der Kunde selbst ist reiner Anwender und hat keinerlei Ahnung von den Zuordnungen. Die hat damals eine andere Firma gemacht, von denen niemand mehr greifbar ist.

          Wenn sich das so einfach automatisiert per Batch, Script oder Whatever machen ließe, hätte ich das schon gemacht.
          Nee, das wäre stupide Handarbeit.

          Gefällt mir

  4. engywuck schreibt:

    Sowas in der Art wird auch grad von unserem Azubi gemacht. Da gibt es ein Messgerät, das Dateien ausspuckt, die in ein (separat zu erwerbendes!) Programm importiert werden können.

    Allerdings kann das Programm nur etwa zwei drittel dessen, was wir wollen, ist in Access „geschrieben“ (Datenformat von Access 2000, IIRC) und nicht multi-user fähig. Support gibt’s auch nur(!), wenn es auf einem Clientbetriebssystem installiert ist, vorzugsweise nicht-virtualisiert (wir haben natürlich auf einem Server installiert, denn die sind über Datacenter-License abgedeckt) und möglichst nicht über XP.

    Natürlich haben die „Tags“ (nein, kein XML) nicht viel mit den Daten zu tun, die drinstehen (eher so wie wenn eine Waage die Masse in Gramm in einem Feld mit Namen „X3“ abspeichert).

    Bevor hier Bedenken kommen: in diesem Fall ist Reverse Engineering unbedenklich, denn erstens bleibts im Haus, und zweitens wird das Messgerät auch ohne Programm verkauft (natürlich ohne Doku, wass die Dateien angeht…), so dass der Vergleich Dateigemessene Daten rechtlich problemlos ist.

    Gefällt mir

    • breakpoint schreibt:

      Ja, solche Aufgaben sind ohne weiteres von einem Azubi o.ä. zu erledigen.

      Ich habe nur keinen Azubi, und auf die Personalresourcen von Novosyx will ich auch nicht dafür zurückgreifen.

      Der Kunde überlegt sich derzeit noch, ob er selbst den Aufwand treiben will, oder ob er bei XP bleibt, oder ob er anderswo einen Konverter herkriegen könnte, oder ob er die ganzen uralten Dateien überhaupt noch braucht …

      Könntet ihr euer Programm eventuell über einen ODBC-Treiber auf eine g’scheite DB abbiegen?
      Dann müsste es doch multi-user-fähig sein.
      Kommt halt drauf an, wie die DB-Anbindung implementiert ist.

      Gefällt mir

      • engywuck schreibt:

        theoretisch ginge das sicher, aber da die Oberfläche ohnehin den Anforderungen nicht voll entspricht und wir dann die missratenen Tabellen (Normalformen, was ist das?) 1:1 übernehmen müssten…
        Wenn ich mich recht erinnere sieht es aus, als hätte da ein Techniker (oder Technik-Azubi?) was „zusammengebastelt“. Ja, man kann alle nötigen Daten eingeben, aber Versionierung (welche Daten standen in früheren Versionen drin) oder gar die Verhinderung der Löschung von Daten ist beispielsweise nicht implementiert. Bei einem Programm, das dem Nachweis von Sicherheitsprüfungen dienen soll.

        Gefällt mir

        • breakpoint schreibt:

          Tja, es ist schon manchmal skuril, nachzuvollziehen, was sich die Entwickler bei so etwas gedacht haben.

          Versionierung ist ja noch nicht soooo alt. Dass sich Daten eines Anwendungsprogramms nicht versionieren lassen, ist eigentlich immer noch Standard.

          Gefällt mir

  5. Pingback: Neunhundertzweiundfünfzig | breakpoint

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s