2017. január 2., hétfő

ECU #2

A bináris, ASCII-ban megjelenő olvasható részleteivel ellentétben a különböző számábrázolási formátumokban szereplő számokból a fontosakat elég nehéz kiszűrni a lényegtelenek közül. Most azonban éppen ez a feladat, hiszen az egyes térképek is számhalmazokból állnak, és éppen ezeket a számokat keresem.

WinOLS

Hexeditor-ból rengeteg féle van. Van, amelyik jobban használható és van amelyik kevésbé, azonban nem találtam olyat, ami a teljes hex fájlt át tudná fordítani az általam kívánt számformátumra. A témában való olvasgatás során elég hamar belebotlottam a WinOLS nevű progiba, ami kifejezetten motorvezérlő programok analizálására, szerkesztésére lett fejlesztve. Kész szerencse, hogy még ingyenes is. Ebben megtalálható a hexeditor-okból hiányolt funkció, a tetszőleges formátumra való átfordítás, és még nagyon sok más is. Többek közt képes önállóan különböző térképeket felismerni, ha szepel az adott motorvezérlőről infó az adatbázisában. De nem, nincs olyan szerencsém, hogy a Z22SE programban akár egyetlen térképet is találjon önállóan. A WinOLS használata egyébként csak korlátozottan intuitív és a kevés fellelhető leírás sem volt számomra túl könnyen emészthető. Szerencsére létezik egy véleményem szerint hiánypótló videósorozat, amely különböző példákon keresztül mutatja be a használathoz szükséges fogásokat. Ez az első rész, és közel 50 további videó található még ettől a felhasználótól.

Számábrázolás
A bináris, tizenhatos (hexadecimális) számrendszerben megjelenített értékeit attól függően, hogy milyen hosszúság szerint tagoljuk átválthatjuk különböző formátumú decimális értékekre. Jelenleg csak a 8,16 és 32 bit-es számoknak van jelentőségük. Ezek azonban lehetnek előjelesek vagy előjel nélküliek (signed, unsigned) és változtatható a bájtsorrendjük is (low/high, high/low).
A 8 bites számok 0-255 (előjel esetén -128-127), a 16 bites számok 0-65535 (előjel esetén -32768-32767), a 32 bites számok 0-4294967295 (előjel esetén -2147483648-2147483647) tartományban vehetnek fel értéket. Nem tudom itt melyek fordulhatnak elő, így valószínűleg mindet végig kell majd nézni.

Stratégia
Ahhoz, hogy a visszafejtés a lehetőségekhez képest minél inkább hatékony legyen, a következő startégiákat használom majd:
 - Publikus információk begyűjtése: Különböző, főleg benzines, nem feltöltött motorokhoz keresek majd térképeket, hogy lássam milyenek léteznek egyáltalán és milyen értékeket alkalmaznak ezekben. 
 - Mintakeresés: A legtöbb térkép egy olyan két dimenziós számhalmaz, amelyben egy adott értéktartományban jellegzetes ismétlődések figyelhetők meg. Ezeket viszonylag egyszerű felismerni.
 - Jellegzetes értékek keresése: Vannak olyan értékek (pl: fordulatszám, hőmérséklet, nyomás, terhelés), amelyek meg kell, hogy jelenjenek a programban. Ezekre célzottan keresek majd.
 - Több program összehasonlítása, különbségek keresése: Talán így kiszűrhetőek a különböző autókhoz, különböző szempontok megírt részletek.
Ha lehetővé válik majd a program olvasása és írása, akkor kiegészül a következőkkel:
 - Ismert beállítás változtatás és a programban való módosult érték megfigyelése: Kérdés, hogy tudok-e ilyet. OPCOM-al lehet ezt-azt állítani, de nem ismerem mélyebben a lehetőségeket.
 - Programmódosítás és hatáselemzés.

Analízis
Sok-sok nézegetés után elsőként az tűnt fel, hogy a program 3 jól elkülönített fő részből áll. A WinOLS az összesítő képen ezt grafikusan is meg tudja jeleníteni.

A zöld/rózsaszín/lila valamilyen adat, a szürke viszont csak FF-ekkel van feltöltve. Ez a fajta tagoltság a normál nézetben a gördítősávon is megfigyelhető. A második rész éppen egy szép kerek (215) számú helyiértéknél 32768-nál (0x8000) kezdődik. Itt több tíz olyan mintát találtam, melyeket ezentúl lehetséges térképeknek tekintek. Ami nagyban erősíti a meggyőzdésemet, az az, hogy minden egyes minta előtt szerepel, hogy az hány oszlopból áll.

Ezen a képen két 13x17-es térkép látható. A sorok száma (17) nem jelenik meg. Bár van olyan térkép, ahol a sor és az oszlop számának megfelelő érték is szerepel közvetlenül a térkép előtt, de annyira kevés esetben, hogy inkább véletlennek tekintem mintsem utalásnak.
Ilyen a felső egy kicsit rendezve:

Ilyen 3D-ben:


Jellegzetes értékekből leginkább csak fordulatszám sorozatokat találtam. Vannak ugyan egyéb számsorok is, de nem egyediek annyira, hogy bárminek is biztosan tulajdonítani lehessen. Ezek a fordulatszám értékek:

Sajnálatos módon nem közvetlen a térképek előtt szerepel, így nem tudni pontosan mihez is tartozik, és a térképek előtt/mögött sincs semmilyen hivatkozás a tengelyekre vonatkozóan. A fentebbi képen is jól látható, hogy a két térkép, csak két 0-val van elválasztva egymástól. Minden bizonnyal egy harmadik helyen van meghivatkozva melyik térkép mit használ. Ebben az esetben viszont nem világos miért szerepeltetik többször is ugyanazokat a számsorozatokat. És az is elég nagy talány számomra, hogy az alsó fordulatszámérték (800) miért szerepel háromszor.

A második részt így a konfigurációs adatok helyének tekintem, a harmadik részt pedig magának a programtözsnek (core). Ez utóbbi a 09391263BA (Vectra B) és 12202073BZ (Speedster, VX220) esetében gyakorlatilag teljesen megegyezik, ami azért jó hír, mert a térképek amiknél jelentős eltérés van valószínűleg szabadon cserélhetők. Az első részt nem nagyon tudom hova tenni, ennek a végén található például az alvázszám és hardver,- szoftverazonosítók (16384-től, 214, 0x4000)). Lehetséges, hogy az immo-hoz tartozó adatok is ide kerülnek.

(Így leírva talán nem is tűnik annyira bonyolultnak, de valójában hetek mentek el míg eljutottam eddig a pontig, és az már jól látszik, hogy messze még a vége.)

Kütyü
Ekkorra már úgy ítéltem meg nem lesz kidobott pénz, ha rendelek egy eszközt.
Az ismertebbek közül a választék nagyjából a következő termékekből áll: MPPS, KESS V2, KTAG, FgTech Galletto. Itt olvasható egy összehasonlítás róluk. A KTAG nem képes OBDn keresztül kommunikálni, így számomra esélytelen, az MPPS túl olcsó és a többihez képest túl egyszerűnek néz ki képeken, így elvetettem azt is. A Galletto és a KESS V2 közül pedig inkább az utóbbit ajánlják a különböző fórumokon. Már ha ajánlanak egyáltalán valamit, mert ezek csak kínai klónok. Működésük bizonyos esetekben erősen kérdéses. Sajnos az eredeti termékek több tízszer többe kerülnek, így az egyszeri hobbi autós vagy ilyet vesz vagy semmilyet. Legyen KESS.

Az Ebay-en Kínából rendelt dolgoknak talán legnagyobb hátránya, hogy sokszor akár 1 hónapba is beletelik mire megérkeznek. Nincs mit tenni várok, és tovább vizsgálom a meglévő progikat.

Nincsenek megjegyzések:

Megjegyzés küldése