Autor |
Beitrag |
Christoph1972
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: Mi 13.08.14 21:59
Hallo Leute,
ich würde gerne eure Meinung hören. Und zwar habe ich eine Binärdatei von einer Messegerätesoftware. In dieser Datei sollen Laut Internet X Y Koordinaten stehen mit denen ein Chart gezeichnet wird. Dieses Chart möchte ich nun gerne in einem Programm von mir zeichnen, dazu muss ich diese Datei auslesen und genau dass ist das Problem. Dieses Vorhaben hatten auch schon andere User im Internet, eine Lösung wurde bisher nicht präsentiert. Es gibt jedoch einige Firmen die Editoren für genau diese Datei anbieten, die haben es irgendwie geschafft die Struktur der Datei aufzuklären. Ein Open Source Projekt gibt es auch, aber genau dieser Teil ist nicht frei
Es ist gut möglich, das diese Datei mit .Net erzeugt wird, da es ein .Net Programm ist. Es ist aber auch möglich, das der Programmabschnitt noch eine Altlast aus den Zeit vor .Net ist. Das Programm ist an sich recht alt und wurde vor ein paar Jahren auf .Net umgestellt.
Was meint ihr, besteht eine realistische Möglichkeit die Point Liste aus der Datei zu extrahieren?
_________________ Gruß
Christoph
|
|
Ralf Jansen
Beiträge: 4705
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mi 13.08.14 22:13
Zitat: | Was meint ihr, besteht eine realistische Möglichkeit die Point Liste aus der Datei zu extrahieren? |
Wenn du weißt was für Daten drin abgelegt sind klar. Du hast dann genug Anhaltpunkte nach denen man die Datei untersuchen kann. Ob dann letztlich das Reverse Enginnering einfach, schwer oder unmöglich ist weißt du erst nachher. Aber die Grundlage mit der du arbeiten kannst ist zumindest gegeben.
|
|
Christoph1972
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: Mi 13.08.14 22:24
Ralf Jansen hat folgendes geschrieben : | Du hast dann genug Anhaltpunkte nach denen man die Datei untersuchen kann. |
Ich habe mir die Datei mit einem Hex Editor angschaut, das hat mich aber nicht schlauer gemacht....
Wie geht man die Sache üblicherweise an? Das ist leider absolutes Neuland für mich.
_________________ Gruß
Christoph
|
|
ub60
Beiträge: 762
Erhaltene Danke: 127
|
Verfasst: Mi 13.08.14 22:57
Hier mal einige Möglichkeiten:
- Nach Möglichkeit einen der beiden oder beide Werte konstant halten.
- Anschließend mehrfach auftauchende Byte-Folgen im Hex-Code suchen.
- Unbedingt einige Werte aus der Messreihe aufschreiben.
- Diese Werte in Byte, Word, Integer, Single, Double, ... unwandeln und die entstehenden Bytefolgen im Hex-Code suchen.
ub60
|
|
Christoph1972
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: Do 14.08.14 07:00
[quote="[user]Christoph1972[/user]"(688536)] ub60 hat folgendes geschrieben : |
- Nach Möglichkeit einen der beiden oder beide Werte konstant halten.
- Anschließend mehrfach auftauchende Byte-Folgen im Hex-Code suchen.
- Unbedingt einige Werte aus der Messreihe aufschreiben.
- Diese Werte in Byte, Word, Integer, Single, Double, ... unwandeln und die entstehenden Bytefolgen im Hex-Code suchen.
ub60 |
Ich hatte bereits nach Werten mit dem Hex Editor gesucht, leider ohne Treffer. Ich vermute das könnte an berechneten Werten liegen. Ich werde das heute noch mal angehen. Vielen Dank schon mal so weit!
_________________ Gruß
Christoph
|
|
Christian S.
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 14.08.14 07:46
Man sollte auch ausprobieren, ob die Werte im Little- oder Big-Endian-Format gespeichert werden.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Nersgatt
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Do 14.08.14 07:58
Stell die Datei hier ins Forum und formuliere irgend eine obskure Geschichte um die Datei, in dem Wichtel und Weihnachtsmänner vorkommen. Dann ist das Format in 1-2 Tagen geknackt...
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Für diesen Beitrag haben gedankt: bole, Christian S., FinnO, Martok, Tastaro, ub60, Xion
|
|
Horst_H
Beiträge: 1653
Erhaltene Danke: 243
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: Do 14.08.14 09:45
Hallo,
dann schreibe Dir doch einen eigenen Datendeuter.
In dem Du Daten bei x und x+Offset anzeigen lässt:
Vertikale Memo links die Daten ab einem verschieblichem StartWert rechts ab StartWert+verschieblichem Offset.( eventuell bei Startwert +2xOffset )
In den Memos alle Varianten an Ausgaben, die Dir einfallen ,
jeweils little und big endian
Byte integer Word ,longint,long Word Int64 Double extended ,TdateTime
Dann als zum Beispiel 16 Byte als HEX -Werte
und 16 Byte als Char oder unicode ( Schreibt ein Messgerät Texte außer im Header ?? )
Das müßte doch fix gehen.
Aber Nersgatt hat recht, eine typische Wichtelmann-Frage
Gruß Horst
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 14.08.14 16:55
Du könntest ja auch so mal eine Datei posten
Am Besten irgendwas mit bekannten Messwerten, 0 oder so.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Christoph1972
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: Do 14.08.14 17:04
Martok hat folgendes geschrieben : | Du könntest ja auch so mal eine Datei posten
Am Besten irgendwas mit bekannten Messwerten, 0 oder so. |
Hi Leute,
hier ist schon mal die Datei. Messwerte kann ich erst morgen nachliefern.
Einloggen, um Attachments anzusehen!
_________________ Gruß
Christoph
|
|
jaenicke
Beiträge: 19284
Erhaltene Danke: 1742
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 14.08.14 20:02
Ist das ein Agilent Format?
|
|
Christoph1972
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: Do 14.08.14 20:06
Ja
_________________ Gruß
Christoph
|
|
Christoph1972
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: Do 14.08.14 20:27
Bei den Werten würde Little Endian am besten passen, die Werte liegen immer um die 7.5, eigentlich sollte sie um die 10 sein. Ist aber gut möglich das da ein Faktor herangezogen wird. Die 7.5er würden gut als Y-Wert passen. Igrendie sind das aber alles Zahlen im selben Bereich, das passt nicht zu den X-Werten.....
Eine interessante Geschichte jedenfalls
Vielen Dank schon mal für eure Unterstützung!
_________________ Gruß
Christoph
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 14.08.14 21:06
Also angeblich sollte aus dem Gerät CDF/AIA rausfallen, das ist das aber nicht.
Bei den Werten würde ich ja auf IBM-Double tippen, da kommt man schon in die richtige Ecke (falls noch irgendwo ein Exponent abhanden gekommen ist...)
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
GuaAck
Beiträge: 378
Erhaltene Danke: 32
Windows 8.1
Delphi 10.4 Comm. Edition
|
Verfasst: Do 14.08.14 21:26
Hallo,
die Datei scheint von einem HP Agilent Gaschromatografen zu stammen. Evtl. gibt es da eine Doku.
Ab $1800 sind ist die Datenreihe, m.E. little Endien, IEEE single (32 Bit) Gleitpunkt, auf 64 bit Grenze. Dann ist das eine Zahlenreihe mit Werten zwischen 7.5 und 9. Bei jeder anderen Interpretation kommen merkwürdige Zahlen raus.
Sie Dir mal "Tiny Hexer" ( www.mirkes.de) das, das kleine Tool zeigt die Daten in einem wählbaren Format an.
Gruß GuaAck
|
|
Christoph1972
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: Do 14.08.14 22:28
GuaAck hat folgendes geschrieben : | die Datei scheint von einem HP Agilent Gaschromatografen zu stammen. Evtl. gibt es da eine Doku. |
Ja genau da kommt die Datei her. Eine Doku gibt es wohl nicht, im Internet habe ich nichts gefunden, auch keine Macros mit denen ich mir helfen könnte, und in unseren Dokus steht auch nichts....
Die Werte mit 7.5 könnten die Basislinie bilden, die liegt ungefähr bei 10, ist somit nicht abwägig...
Das Tool werde ich mir morgen mal anschauen!
_________________ Gruß
Christoph
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 15.08.14 02:28
Stimmt, ihr habt Recht, das war ein Fall von Overthinking bei mir
Die Daten haben trotz Double als Datentyp keine Kommastellen, sondern einen festen Faktor 1E5. Die Detektionsachse(Zeit oder Retentionsfaktor müsstest noch rausbekommen) dürfte fest skaliert sein, das kann dann ja nur eine der Werte davor sein.
Der zweite Peak ist bei {5516,5014017}.
Was sehen wir da eigentlich? Spektrometer könnt ich sogar was raten, aber Chromatographie braucht man mit Metallen so selten...
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Christoph1972
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: Fr 15.08.14 06:46
Wow, das ging aber schnell! Scheinbar habe ich hier bei dem einen oder anderen schlaflose Nächte angezettelt
Was man da sieht ist ein Lösemittelgemisch, ein Benzin dürfte auch enthalten sein.
Hast Du das als Text eingelesen und die Werte gesplittet? Das habe ich gestern versucht, das passte leider noch nicht.
_________________ Gruß
Christoph
|
|
Martok
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 15.08.14 15:15
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Christoph1972
Beiträge: 690
Erhaltene Danke: 16
VS2015 Pro / C# & VB.Net
|
Verfasst: Fr 15.08.14 20:42
Also, ich habe heute "fast" den ganzen Tag versucht die Datenreihe einzulesen. (Ich habe das mit .Net File.ReadAllBytes(File) gemacht) Was ich da einlese macht bisher keinen Sinn. Hier ist jetzt schon 2* $1800 gefallen, wo habt ihr das her? Das sehe ich weder in meinem Hex Editor, noch in meinem Stream. Da ich keinen gescheiten Entry Point gefunden habe, habe ich den Stream von hinten nach vorne gelesen und dann umgekehrt. Die Byte Arrays habe ich mit der BitConverter.ToSingle(Array, 0) Methode in Double umgewandelt. Da kommen dann die Werte raus die ich mit dieser Website ( www.scadacore.com/fi...-hex-converter.html) ermittelt habe (zumindest die ersten und letzten Werte der Datenreihe stimmen).
Ich vermute das beim einlesen der Daten etwas durcheinander gerät....
Die Datenreihen setzen sich ja aus vierer Reihen zusammen. Gibt es dafür fertige Methoden zum lesen?
_________________ Gruß
Christoph
|
|