WEBKEY USB raktas 2011.12.04 at 14:09

Vakar gavau tokį žaisliuką. Įkišus į USB paleidžią jame įprogramuotą puslapį. Neįdomu, nes ne mano puslapį :). Prijungus prie kompo šitas daikčiukas identifikuojamas taip:

Manufacturer : WEBKEY
Product : FET-M-0101
USB Version : 1.10
Product ID : VEN_05AC, DEV_0101, PRT_00
Class : Human Interface
Max. Packet Size : 8 bytes
Max. Power : 100 mA

Daugiau niekur niekas neišlenda – nei kaip USB atmintukas (bent jau šitas žodis man visai nieko, ne taip kaip vaizduoklis, skaitlys ir linksmakotis), nei kaip nors kitaip. Įkišus raktą i USB vizualiai matosi tik keletą kartų išjungiamas ir įjungiamas „Caps Lock”, paleidžiamas „RUN”, įrašomas puslapio pavadinimas ir „OK”. O toliau jau WINdai patys paleidžia puslapį defaultiniam browseryje.

 

Pats raktas ir closeup’as. O dabar apie veikimą – prijungus raktą prie USB Windows’am jis prisistato kaip HID įrenginys su klaviatūros funkcija (pataisiau 😉 ), kuris paleidžia RUN (Win+R), ir kaip jau sakiau įrašo puslapio adresą ir numyga ENTER. Ardosi visai nesunkiai, peiliuko pagalba 🙂 Viduje detalių nedaug – juodas lašas valdiklis, salia aštuonkojis SOIC8 yra Atmel’io EEPROM’as 24C02. Šitas daiktas yra ne atmintukas, taigi, atminties jam lyg ir nereiktų, nebent – patogiam ir greitam konfigūracijos įrašymui. Spėju, ten saugomas tas adresas į kurį nukreipiama prijungus raktą. 24C02 dirba su I2C/TWI. Reikės keleto laidukų jo pajungimui prie programatoriaus. Beje, įdomi smulkmena – prijungus raktą su išlituotu EEPROMu – paleidžia RUN’ą ir sustoja :), nebežino kokį adresą rašyt ;).

Taigi – atspėjau. EEPROMe sėdi adresas. Truputį „užkoduotas”, truputi HEXinis, bet esmė, kad pakeitus jį teoriškai galima RUNint bet kokią komandą. Reiks pabandyt 🙂 Kol kas bandymas paleisti www.dainiaus.lt is to rakto. Nuskaitymas nesudėtingas turint programatorių. Nuo atminties baito 0000: matosi, kad yra kazkokie duomenys, po to daug 00 ir nuo 0080: vel kazkokie duomenys. OK, pasakysiu – abu tie HEX skaičių kratiniai – koduotas puslapio adresas. Kodavimai abiem būdams skirtingi.  Pirmas sudėtingesnis, antras lengvas. Pakeitus tik antrąjį – krauna defaultinį puslapį. Kodų gale abiem atvejais keletas vienodų bitų. Turbūt pointeris į adresą nuo kurio programa vykdoma toliau (o gal čia ENTER paspaudimas). SVARBU – jo keisti negalima. Žodžiu, logika paprasta – kraunamas pirmasis adresas (bandžiau pakeitęs tik antrąjį – vistiek krauną pirmą, nebandžiau atvirkščio varianto), jo ir kodavimas sudėtingesnis, taigi, ne taip paprasta įvesti savo. Bet šiaip ar taip – viskas veikia, linkina i www.dainiaus.lt. Programos screenshotas:

Pirmasis, sudėtingesnis kodas taigi, patingėjau sumastyti universalią perkodavimo formulę. Kol kas tik surašau visą abecelę (ST – standartinė raidė, mažoji, ADD – kiek pridėti prie standartinio HEXo, CD – coded HEXas):

ST ADD CD
a 61 +14 75
b 62 +16 78
c 63 +18 7B
d 64 +1A 7E
e 65 +1C 81
f 66 +1E 84
g 67 +20 87
h 68 +22 8A
i 69 +24 8D
j 6A +26 90
k 6B +28 93
l 6C +2A 96
m 6D +2C 99
n 6E +2E 9C
o 6F +30 9F
p 70 +32 A2
q 71 +34 A5
r 72 +36 A8
s 73 +38 AB
t 74 +3A AE
u 75 +3C B1
v 76 +3E B4
w 77 +40 B7
x 78 +42 BA
y 79 +44 BD
z 7A +46 C0

Kaip matosi kodas sudarytas taip – raidės HEXas + lyginis pozicijos numeris HEX formatu. Simbolis A būtų standartinis HEXas + 0, B=HEXas+2 ir t.t. ASCII > HEX lentele galima rasti Internete arba pasinaudoti automatiniu konvertavimu (pvz. čia). Galima būtų sudaryti visą simbolių lentelę, bet… 🙂 Jei visgi kas nepatingėsit įmeskit formulę į komentarą.

Antrasis kodas sudarytas visai paprastai – STD_HEX – 5D, tai yra iš standartinio HEXo atimamas skaičius 5D ir praleidžiant FC supilamas į mikrę 🙂

Toliau paranoikams 🙂  turint šitą dalyką integruotą į USB prietaisus (peles, klaviatūras, atmintukus ir t.t.) teoriškai galima paleisti bet kokią komandą. Kodas tikrai nėra tiek sudėtingas – tai saugumo klausimas lieka atviras. Slaptažodžiai, sekimas, mygtukų paspaudimai, nuotolinis prisijungimas… Kiek daug galimybių 🙂

2011.12.12 – dėkui Blah iš o.electronics už kodavimo formulę –  COD = 3·HEX-AE.

Leave a Reply

*