Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mi 13.08.14 22:24 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Do 14.08.14 07:00 
[quote="[user]Christoph1972[/user]"(688536)]
user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:

  • 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: 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... :mrgreen:

_________________
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1652
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: 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 user profile iconNersgatt hat recht, eine typische Wichtelmann-Frage :zustimm:

Gruß Horst
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Do 14.08.14 17:04 
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 14.08.14 20:02 
Ist das ein Agilent Format?
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Do 14.08.14 20:06 
Ja

_________________
Gruß
Christoph
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 376
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Do 14.08.14 22:28 
user profile iconGuaAck hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: 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.
user defined image
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Fr 15.08.14 06:46 
Wow, das ging aber schnell! Scheinbar habe ich hier bei dem einen oder anderen schlaflose Nächte angezettelt :lol:

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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Fr 15.08.14 15:15 
user profile iconChristoph1972 hat folgendes geschrieben Zum zitierten Posting springen:
Wow, das ging aber schnell! Scheinbar habe ich hier bei dem einen oder anderen schlaflose Nächte angezettelt :lol:
*Auf die Beitragszeit guck* Och, geht doch noch :lol:

user profile iconChristoph1972 hat folgendes geschrieben Zum zitierten Posting springen:
Hast Du das als Text eingelesen und die Werte gesplittet? Das habe ich gestern versucht, das passte leider noch nicht.
Ich hab nur einen Stream aufgemacht, nach $1800 geseekt und dann bis zum EOF Double-Werte gelesen. Die dann in eine Textdatei geworfen, das Diagramm ist daraus dann mit Pi gemalt. Wie gesagt, das sind zwar die Werte, aber die hängen noch etwas in der Luft, schon was Skalierungen angeht.

_________________
"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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: 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