Hamis a baba II.

FT232RL chipA korábbi cikkben egy nyomozás menete került leírásra, melyben a hamis FT232RL chipek kerültek megtalálásra és összehasonlításra az eredeti chipekkel. (→ Hamis a baba...)

A hamis FT232RL chipek piaci térhódítását az FTDI nem nézhette tétlenül, így igyekezett az eszközök működését befolyásolni.

Első kísérlet

A piac szondázása, a működés korlátozott ellehetetlenítésével történt (kb. 2014 március). Az FTDI honlapjáról letölthető akkori legfrissebb driver 64-bites Windows rendszerek alatt a soros kommunikációt a hamis chipek esetén meghiúsítja olymódon, hogy a Tx kimeneti oldalon az adatküldés hosszának megfelelő logikai H szint mérhető, a standard működés négyszögjeles adatcsomagja helyett:

A kommunikációban egyszerűen a Tx jelek kerültek manipulálásra, így a hamis chipeken nem működött az adatküldés. A vételi oldalon (Rx) pedig a PC felé 00 kódú karakter került továbbításra.

A hibás működés azonban egyszerűen kezelhetővé vált: a legújabb driver letörlése (verzió 1.30.0.0.) és korábbi (verzió 1.24.0.0) telepítése. Ezzel a működés helyreállt, a de a drivert nem szabad többé frissíteni.

A meghajtóprogrammal az FTDI a kompetibilitást illetve az elterjedtséget tesztelte, hiszen a 32-bites Windows rendszerek esetén (Windows XP család, Windows 7 Starter, stb) a program működése teljesen szabályos maradt (ipari rendszerek főként 32-bites Windows Xp Embedded (beágyazott) rendszert használnak a mai napig).

Második felvonás

A 64-bites Windows rendszerek esetén a driver le-, majd feltelepítése után mindenki használta a hamis chipeket tovább. Maximum az egyszeri bosszúság maradt. Azonban a cég tovább kereste a megoldást az ellehetlenítésre, a hamisítványok likvidálására. Minthogy a drivert magától senki nem frissítette, így ezt valahogyan kényszeríteni kell. Mi erre a legjobb megoldás?

Patch - minden keddenWindows alatt: ha kedd, frissítési nap. Így, mint kritikus rendszerfrissítés megérkezett (egyebek mellett) az FTDI új programja. A trükk, - hogy ne menjen a soros kommunikáció - már régen ismert volt. Valami maradandóbb, biztosabb megoldásra volt szükség. Olyanra, ami "téglásítja" a chipet. Az eredeti FTDI és a hamisítvány sokmindenben megegyezik. Többek közt az USB belső azonosítók kezelésében. A standard FTDI azonosítók: VID:0403, PID:4001. Ez az USB azonosító azonban külső program segítségével megváltoztatható. Ezt akár a frissítéssel is el lehet érni. A frissített driver így a chipben átírta: VID:0403; PID:0000. Az FTDI eszköztárában olyan chip/driver ami 0000 termékazonosítójú, nem is létezik.

A módosított azonosítójú eszköz így a következő csatlakoztatáskor/gépbekapcsoláskor meghajtóprogramot fog keresni. Minthogy ilyet nem talál: driver hiányában az eszköz nem működik.

Kiegészítés: Fórumokban panaszkodnak, hogy egyes eredeti (?) FTDI chipek esetén is időnként megtörtént a PID átírása.

Működés/teszt: Az eredeti és hamisítvány chipek közti különbség tesztelése a belső EEPROM kezelésén keresztül lehetséges. Az EEPROM adat írás/olbasása 32-bites változóval is történhet. A hamis FT232 chipek 16bites kezelésre vannak csak felkészítve, 32-bitesre nem. Ezt a programozási különbséget használja ki a detektálás.

Van tovább?

Az FTDI ennek a "téglásító" manővernek köszönhetően jópár ellenséget szerzett. A végfelhasználót bűntették, mert - akár tudtán kívül is - hamis chippel szerelt eszközt használ. A visszajelzések, felhasználói nemtetszések hatására a módosított driver a windows update területről 1 nap után visszavonásra került.

De az FTDI azóta is keresi a lehetőséget. A fórumokat, szakmai oldalakat bújva az látszik körvonalazódni, hogy a következő frissítéskor megjelenő driver egyszerűen nem működik együtt a hamis FTDI chipekkel (mintha nem lenne a driver betöltve, azonban a chipekhez nem nyúl hozzá).

Mit tegyünk a téglásított chippel?

Ha már a chipről kiderült, hogy nem eredeti, és az azonosító is átírásra került - akkor tenni kellene vele valamit. Erre több lehetőség is kínálkozik:

Első megoldásként felmerülhet a chip belső azonosítójának visszaírása az eredeti VID:0403; PID:4001 azonosítókra az FTDI által kiadott MPROG szoftverrel (ez a szoftver alkalmas a chipek részletes konfigurálására). A VID/PID visszaállítása után a chip továbbra is FTDI standard sorosportnak mutatja magát - amíg az átírós driverrel újra nem találkozik. A chiphez kétféle driver tartozik: egy USB illesztő (API, Dxx réteg) és a soros kommunikációért felelős eszközkezelő. A rendszerben a PID átírása szerencsére csak a soros kommunikációs réteget befolyásolja és az EEPROM kezelése az API rétegben található. 

A másik megoldás, hogy a módosított azonosítójú chiphez a driver információs állományt módosítjuk. Ekkor a PID:0000 chipek is használhatóak lesznek, csak a driver digitális aláírása hiányzik. Ennek leírását az FTDI honlapján meg is találhatjuk. Röviden az ftdibus.inf és az ftdibus.inf állományban a PID:6001 hivatkozású sorokat le kell másolni és PID:0000 szöveggel kell a vonatkozó részeket kiegészíteni.

Az új meghajtóprogram-gyűjteménnyel nem probléma a PID:0000 chipek kezelése. (A preparált meghajtócsomag elérhető a cikk végén: avrduino.zip)

Tipp: 64 bites rendszerek esetén szükséges a telepítőprogramok aláírásvizsgálatának kikapcsolása. Ez Windows 8, Windows 8.1 és Windows 10 alatt is lehetséges. A hogyan step-by-sep módon: Disable Driver signature

De mi a különbség a valódi és a hamis chip közt?

A hamis és az eredeti chip közti különbség két oldalról is megközelíthető: jogi és felépítésbeli szemszögből.

Jogi oldal

Kisebb "ereszd el a hajam" alakult ki a fórumokon országtól-földrajztól függetlenül. Érveltek azzal, hogy az FTDI chip drága és egy csereszabatos olcsóbb alternatíva már nem ártott. Csak persze az átszitázás, hamis típusjelölés nem kellene. Viszont ki venne Hantec Technology & Other Ltd. HTO232 chipet? És itt az előállítás és az FTDI ár közti árrés miatt >200% árrés jónak tűnik...

Leszámítva, hogy tesztelés, fejlesztés, innováció, K+F nemigen történik hosszútávon a hamis FTDI chip gyártójánál...

Nem beszélve arról, hogy az USB eszközök esetén a VID a gyártót (Vendor ID) azonosítja, míg a PID a terméket (Product ID). Gyakorlatilag ezt más által használni (termékben): egyszerű csalás. Az Atmel és a Microchip által használt (publikussá tett) USB VID/PID használatára is igen szigorú szabályok vonatkoznak.

Felépítési különbségek

Az eredeti és a hamis chipet röntgen alá téve, a belső felépítése feltárul. A két chip belseje is már eltérő:

Chip Lapkaméret Technológia SRAM
FTDI FT232RL 3288 x 3209 um 6-800 nm 123 um
Hamis FT232RL 3489 x 3408 um 500 nm 68 + 132 um

Talán sikerül a FTDI chipekből a valódi adatokat meglesni és kipróbálni.

A rajzolat illetve a lapka kialakításból látszik, hogy a hamis chip technológiailag fejlettebb. Lehet hogy az FTDI-nek érdemes a kisebb csíkszélességű technológia fele nyitni? Vagy jóez így is - és egy nagyobb ráncfelvarrás mozdítja el a kényelmi helyzetéből? Ezt a jövő hozza majd el....  

Update

Az FT232RL chipek meghajtóprogramját az FTDI visszavonta. Jogilag nehezen védhető, hogy a vétlen harmadik fél eszközei használhatatlanok lettek. Azonban a meghajtó-program licenszszerződésében szerepel egy kitétel (FTDI Licensz-szerződés):

Azaz a "hamis vagy nem eredeti komponensek visszafordíthatatlanul károsodhatnak"...  

Jelenlegi helyzet: A meghajtóprogram nem "üti ki" az illesztőchipet, csak a chip belső EEPROM tartalma nem frissíthető illetve módosítható. Gyakorlatilag egyszerű soros-USB chippé kerül visszaminősítésre. Egyedi konfigurációk beállításait nem lehetséges a chipben letárolni. Mindezen hibák csak Windows alatt jönnek elő. Linux / Mac OSX alatt a hamis és az eredeti chip azonos módon viselkedik.

Források

TavIR-Facebook