Jedná se o zápis na KryoFlux. Jak jsem
reportoval před pár dny, dokázal jsem zjistit packety, které DTC posílá KryoFluxu když zapisuje jednu stopu - zapnutí motoru, najetí na cylindr, vybrání strany, čekání na index, začátek streamování,
poslání dat přes pípu, flush pípy, konec streamování, čekání na dokončení.
V tuhle chvíli jsem předpokládal, že je hotovo.
Jenže - DTC přes pípu neposílá KryoFluxu soubor se Streamem (
jeho specifikace), nýbrž to "předchroupe" a posílá něco, co má v hlavičce "KFW\x1" (hexa 4B 46 57 01). Co jsem vypozoroval, tak hlavička nemá pevnou délku (v obrázku níže je dlouhá 132/0x84 bajtů). Pak následujou data, který (opět co jsem vypozoroval) jsou "nějak" formulovaný násobky 2µ. Píšu "nějak," protože dlouhé fluxy (např. neformátovaná část stopy coby protipirátská ochrana) se musí řešit speciálně rychlou sekvencí "jedniček," aby signál na čtecí hlavě po danou dobu nespadnul na nulu. Čili z tohodle hlediska chápu konverzi Streamu na něco interního, ale doufal jsem, že se to děje
až na straně hardwaru! V oficiálním popisu KryoFluxu si k zápisu dávají rezervu s tím, že zařízení není určeno pro duplikování disket, ale jejich čtení - čili nepředpokládám, že by "KFW\x1 formát" uměl dobře reprezentovat neformátovanou oblast nebo fuzzy bity - prostě tam "něco" přidělali aby umožnili aspoň zápis "dobře vypadajích" dat (nebudu vás zbytečně zahlcovat detailama).
V každém případě začátek mojí uměle sestavený stopy zní "010101010101...," kde "01" trvá 2x2µ=4µ. Proč je to reprezentovaný zrovna bajtama 0x01 místo 0x02 (tu a tam přerušenýma něčím jiným) zatím netuším. Pokud 0x01 nahradím bajtama 0x02, zapíše se totéž.
Každopádně
prekompenzovaná stopa pak vypadá jinak. Jednak hlavička už nemá délku 132 bajtů, ale 196/0xC4 bajtů a fluxy jsou reprezentovaný malinko jinak (u patternu "0101010101..." jsou sudý smrštěný a lichý natažený, přesně jak se požaduje u 2DD disket, "aby to pasovalo" a jeden flux trval co nejblíž cílovým 4µ).
Transformaci fluxů na vhodný násobky 2µ si už pořeším sám, v tom nevidím zásadní problém.
Ale nedokážu rozluštit hlavičku. Jediný, čeho se chytám je zmíněná značka "KFW\x1" a little-endian délka dat na offsetu 0x10 (výše 0xB1E8, zelenej kroužek to trochu překrývá). Co je uloženo ve zbývajících bajtech netuším. Určitě tam bude něco jako hodiny KryoFluxu (vizte výše uvedená specifikace Stream formátu). Bohužel binárku nepřečtu. Disassemblovací tooly mi nepomůžou, protože neovládám 386 assembler. Decompiler to vysype do funkcí jenom o malinko čitelnějších než disassembler (opět registry). Z dekompilerů jsem zkoušel
IDA Freeware,
Snowman (ten mi bohužel padal),
Binary Ninja a další z
této stránky. Bohužel nebyl jsem v těch toolech schopnej dohledat ani ono "KFW\x1"
Nenašel by se zde někdo, mistr ve svém oboru, kdo by si na to troufnul?
Vím že zde máme velice šikovné členy!Edit: Dá se aplikace nějak debugovat ve Visual Studiu? Že bych si najel na případné volání funkce CreateFile a odtud si to krokoval?