Mijn vraag
Ik ben bezig een proprietary 3D formaat te reverse engineeren. Het gaat om een (gedateerd) bestandsformaat waarin verschillende 3D elementen ruimtelijk weergegeven kunnen worden zoals lijnen en punten. Ik ben er inmiddels achter dat één ruimtelijk XYZ coördinaat opgeslagen wordt als 12 bytes (4 bytes voor elk element).
Als ik de X waarde aanpas in de editor die ik bij deze software heb dan zie ik 4 bytes veranderen. De getallen hebben een zichtbare precisie van 3 decimalen in de software.
Ik heb niet het vermoeden dat de file geëncrypt is, anders waren er meer bytes gewijzigd, ik zie ook wel een duidelijk patroon in de getallenopbouw, maar voor zover ik kan nagaan voldoen de waardes op geen enkele manier aan een geldende standaard.
Hier zijn wat voorbeeld getallen die ik getest heb:
Het gedeelte na 0.5 lijkt een voorspelbaar karakter te hebben, de waarde wordt telkens vergroot met 0.004 wat mij doet denken dat er ergens een factor gecodeerd is.
Wat ik geprobeerd heb:
* Little / big endianess
* Nagaan of de waarde misschien een int was met een factor er overheen
* Nagaan of de waarde als single 4-byte float geldig is
* Internet search of er nog andere floating point standaarden zijn
Relevante software en hardware die ik gebruik
HxD gebruikt om de files te lezen en binair te vergelijken waardoor ik de offset van de waarde kan achterhalen.
Als ik eenmaal achterhaald heb hoe ik de waarde om kan zetten heb ik kennis genoeg om er een fatsoenlijke importer / converter voor te maken. Mijn vraag richt zich er nu vooral op wat dit toch voor formaat is.
Ik ben bezig een proprietary 3D formaat te reverse engineeren. Het gaat om een (gedateerd) bestandsformaat waarin verschillende 3D elementen ruimtelijk weergegeven kunnen worden zoals lijnen en punten. Ik ben er inmiddels achter dat één ruimtelijk XYZ coördinaat opgeslagen wordt als 12 bytes (4 bytes voor elk element).
Als ik de X waarde aanpas in de editor die ik bij deze software heb dan zie ik 4 bytes veranderen. De getallen hebben een zichtbare precisie van 3 decimalen in de software.
Ik heb niet het vermoeden dat de file geëncrypt is, anders waren er meer bytes gewijzigd, ik zie ook wel een duidelijk patroon in de getallenopbouw, maar voor zover ik kan nagaan voldoen de waardes op geen enkele manier aan een geldende standaard.
Hier zijn wat voorbeeld getallen die ik getest heb:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| 00 00 80 BE == -1.000 6F 12 83 39 == 0.001 6F 12 83 3A == 0.004 00 00 01 3E == 0.504 00 00 3F 3E == 0.746 00 00 40 3E == 0.750 00 00 41 3E == 0.754 00 00 60 3E == 0.875 00 00 80 3E == 1.000 00 00 C0 3E == 1.500 00 00 01 3F == 2.016 00 00 02 3F == 2.031 00 00 80 3F == 4.000 00 00 C4 3F == 6.125 00 60 6A 46 == 60000.000 28 6B 6E 4D == 1000000000.000 |
Het gedeelte na 0.5 lijkt een voorspelbaar karakter te hebben, de waarde wordt telkens vergroot met 0.004 wat mij doet denken dat er ergens een factor gecodeerd is.
Wat ik geprobeerd heb:
* Little / big endianess
* Nagaan of de waarde misschien een int was met een factor er overheen
* Nagaan of de waarde als single 4-byte float geldig is
* Internet search of er nog andere floating point standaarden zijn
Relevante software en hardware die ik gebruik
HxD gebruikt om de files te lezen en binair te vergelijken waardoor ik de offset van de waarde kan achterhalen.
Als ik eenmaal achterhaald heb hoe ik de waarde om kan zetten heb ik kennis genoeg om er een fatsoenlijke importer / converter voor te maken. Mijn vraag richt zich er nu vooral op wat dit toch voor formaat is.