Hosszas próbálkozás után sikeresen kiderült a Siemens SE520 CNC -ből kinyerhető arhívum felépítése.
Az alábbiak saját nyomozás eredményei. Teszteltem az említett CNC-ben, ahol működött is, de ez nem garancia arra, hogy máshol is fog. A leírás inkább csak iránymutatás.
A bináris fájl a következő fájl azonosítóval kezdődik:
40 40 4D 4D 43 41 52 43 2E 30 30 30 (@@MMCARC.000)
A fájl 512 byte-os darabokból áll. Ahol az adatok mérete nem éri el az 512 byte-ot (vagy annak többszörösét), ott 0x00 karakterrel van kitöltve a fennmaradó hely.
Az első darab minden esetben a fájl fejléce ami a következő információkat tartalmazza:
Pozíció Név Méret
--------------------------------------------------------
0 azonosító 14byte
116 szerkesztő program verzió 7byte (nem kötelező)
124 fájl lista mérete 11byte
148 ellenőrző összeg 7byte
A második szakasz a fájl lista, ami az archív fájlok teljes útvonalát és nevét tartalmazza.
Például:
/_N_WKS_DIR/_N_CONTOUR_WPD/_N_MUNKADARAB_MPF
Minden fájlnév a 0x0A (újsor) karakterrel végződik. A lista hossza a fejlécben található.
A fájllistát a fájlok követik. Minden fájlnak van saját fejléce a következők szerint:
Pozíció Név Méret
---------------------------------------------------------
0 fájl neve 100byte
101 attribútum lista 5byte
125 fájl hossza 11byte
137 időbélyegző 11byte
149 ellenőrző összeg 7byte
258 a fájl eredeti könyvtára 255byte
Ezek után következnek a fájl adatok.
Ha esetleg gyártani szeretnénk egy olyan fájlt, amit olvas a CNC, akkor a pontos 512byte -os daraboláson kívül az ellenőrző összeget kell kiszámolni.
Az ellenőrző összeg a fájlban található hexa számok összege.
Például:
@@MMCARC.000=40+40+4D+4D+43+41+52+43+2E+30+30+30=2F1 => 753
00000006877=30+30+30+30+30+30+30+36+38+37+37 =22C => 556
-----
Ellenőrző összeg =>1309
A fejléc ellenőrző összege a következőkből áll:
azonosító+szerkesztő verzió+fájl lista méret = ellenőrző összeg
A fájl ellenőrző összege:
fájlnév+attribútum lista+fájlhossz+időbélyeg=ellenőrző összeg