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.
Ha?
LikeLike
Ach, nur irgendwelcher Nerd-Kram.
LikeLike
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. 😉
LikeLike
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.
LikeLike
Ist da ein normaler Mitarbeiter nicht zu teuer für — wir hatten da früher meistens entweder Praktikanten oder Studenten die für ein paar Mark das gerne und ordentlich übernommen haben.
LikeLike
Ja, dafür braucht man keine sonderlich hohe Qualifikation.
Eine Ingenieurassistentin o.ä. wäre auch geeignet.
Aber darum müsste sich der Kunde selbst kümmern, wenn ihm daran gelegen ist.
LikeLike
Dir wäre doch bestimmt mehr nach etwas Reverse Engineering von Carsten bei Dir?
(verlinkte URL beachten)
LikeLike
Das macht er eigentlich genügend zu meiner Befriedigung, wenn auch nicht unbedingt reverse.
Kaum jemand weiß besser als ich, wie hart es sein kann, Doppeldeutigkeiten zu finden.
LikeLike
Wie? Dir fehlt lediglich so eine Liste mit Zuordnungen und deshalb lehnst du einen Auftrag ab?
LikeLike
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.
LikeLike
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 – 😉
LikeLike
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.
LikeLike
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.
LikeLike
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.
LikeLike
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.
LikeLike
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.
LikeLike
Pingback: Neunhundertzweiundfünfzig | breakpoint