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.

Über Anne Nühm (breakpoint)

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. 😉

    Like

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

      Like

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

    (verlinkte URL beachten)

    Like

  3. ednong schreibt:

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

    Like

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

      Like

      • 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 – 😉

        Like

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

          Like

  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.

    Like

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

      Like

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

        Like

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

          Like

  5. Pingback: Neunhundertzweiundfünfzig | breakpoint

Hinterlasse einen Kommentar