| Przejdz do strony glownej |

>> Phreak It > strona glowna > newsy > o serwisie >> Automaty > mapy i spisy > niebieski [TSP91] > srebrny [TPE97] > jajko [CTP] > żółty [eXANTO] > Netia > Dialog > karty chipowe > klucze >> W eterze > GSM > tranking >> Stuff > teksty (FAQ) > narzędzia > elektronika > nagrywarki > strony Variego >> Inne > multimedia > phreak-muzeum > hacked > linki
|
STEROWANIE CZYTNIKIEM BLURMETA BY SHADOWS
27.02.2000
1. Wstep
2. Opis zlacza czytnika - przykladowy schemat podlaczenia do PC
3. Komunikacja z czytnikiem na poziomie podstawowym
4. Rozkazy dla czytnika
5. ...
1. Wstep
========
Na poczatku ten tekst mial byc bardzo lakoniczny, ale ostatnio rozmawialem z
kumplem co ma duzo bystrych (to takie jednostki spostrzegawczosci) i
dowiedzialem sie, ze mial problemy zeby go zrozumiec - to jest najlepszym
dowodem na to, ze musialem cos schrzanic :(.
Postaralem sie wiec dopisac cos wiecej tak, zeby ten tekscik stanowil kompletny
opis: "Jak sterowac czytnikiem Blurmeta"
2. Opis zlacza czytnika - przykladowy schemat podlaczenia do PC
===============================================================
Widok zlacza na plytce czytnika (od strony elementow)
+------+ 1 - Wyjscie danych (DO)
1| o o |10 2,6 - NC
| o o | 3,8 - Power (ladowanie akumulatora 3.6V)
|o o | 4,7 - GND
| o o | 5 - /Power on (wyjscie lub wejscie dla
5| o o | 6 podtrzymania zasilania)
+------+ 9 - /RESET
10 - Wejscie danych (DI)
Aby w pelni wykorzystac mozliwosci czytnika, wystarczy jak podlaczymy sie do
koncowek 1,3,7,9,10.
Sygnal /RESET (aktywny przy zwarciu do masy) wymaga dosc duzego pradu - powyzej
100mA, dlatego tym wejsciem nie mozna sterowac bezposrednio z PC.
A oto przykladowy schemat podlaczenia czytnika do PC
Port drukarki (LPT) Zlacze czytnika
20 o--------------------+
C ________|
| / |
1 o---------| _ BC308 |
B ||\ +----------o 7
E |
+------------------o 9
+-------+
7 o------------|33 Ohm |----------o 3
+-------+
9 o-------------------------------o 10
10 o-------------------------------o 1
Akumulator w czytniku moze byc doladowywany przez rezystor 33 ohm (jak na
schemacie) z LPT, ale przy czestym korzystaniu z czytnika to za malo. Trzeba
wtedy dolaczyc zasilacz zewnetrzny (zamiast podlaczac sie do koncowki nr 7 w
LPT).
UWAGA!!!
Czasami (albo nawet zawsze ;) ) moze tez sie okazac konieczne zwarcie rezystora
R15 w czytniku, bo wejscia w PC maja zbyt mala rezystancje wejsciowa.
3. Komunikacja z czytnikiem na poziomie podstawowym
===================================================
Najpierw trzeba czytnik wlaczyc, tzn. podac mu sygnal RESET - koncowke nr 9
zwieramy na chwile do masy (ok. 100 ms). Jednoczesnie na DI powinien byc podany
sygnal niski. Czytnik wtedy przetestuje swoje uklady, zakreci bebnem i po kilku
sekundach jest gotowy do pracy. Jesli w czasie gotowosci czytnika, na DI
pozostanie niezmienny stan (niski lub wysoki) dluzej niµ ok. 0.5 s, to czytnik
wylaczy sie (slychac tykniecie przekaznika). Wylaczenie jest poprzedzone
ewentualnym zamknieciem drzwiczek i wyrzuceniem karty. Wtedy trzeba jeszcze raz
przykladac sygnal RESET i zaczynac wszystko od nowa. Aby nie dopuscic do
samoczynnego wylaczenia sie czytnika, nalezy co ok. 200ms (lub nieco czesciej)
wysylac jakis rozkaz (najlepiej rozkaz nr 0 - odczyt stanu).
Kazdy rozkaz do czytnika to impuls o odpowiednim czasie trwania. Aby "wydac"
czytnikowi jakis rozkaz, postepujemy tak:
a) na DI podajemy sygnal wysoki
b) czekamy az czytnik odpowie nam sygnalem wysokim na DO - od tego momentu
zaczynamy liczyc czas
c) po uplywie czasu odpowiadajacego wysylanemu rozkazowi (w ms), podajemy stan
niski na DI
d) czekamy na potwierdzenie z czytnika, czyli na stan niski na DO
Na tym konczy sie rozkaz wysylany do czytnika.
Jedyny wyjatek stanowi rozkaz nr 9 (kasowanie jednostek). W tym wypadku do
czytnika nalezy jeszcze przeslac 1 bajt danych (bit po bicie) wg nastepujacego
przepisu:
e) na DI podajemy najstarszy bit przesylanego bajtu
f) czekamy na zmiane poziomu na DO
g) podajemy na DI kolejny bit
h) czekamy na zmiane DO
i) kroki g i h powtarzamy jeszcze 6 razy (az do przeslania calego bajtu)
j) na DI podajemy stan niski
Czytnik po odebraniu kazdego rozkazu wysyla odpowiedz (od 1, 2 lub 11 bajtow).
Procedura odbioru (jednego) bajtu z czytnika wyglada tak:
a) czekamy (1 ms)
b) z linii DO odczytujemy bit (za pierwszym razem - najstarszy)
c) na linie DI podajemy stan wysoki
d) czekamy (1 ms)
e) z linii DO odczytujemy kolejny bit
f) na linie DI podajemy stan niski
g) kroki a..f powtarzamy jeszcze 3 razy
Ilosc bajtow jakie musimy odebrac, zalezy od rozkazu jaki zostal wyslany i od
wartosci pierwszego odebranego bajtu.
Po rozkazie nr 9 (kasowanie jednostek) zawsze musimy odebrac dwa bajty.
Po rozkazie nr 0 (odczyt stanu) i 4 (odczyt danych z karty) musimy odebrac
lacznie 11 bajtow, jesli pierwszy z nich ma wartosc 3.
W innych przypadkach odbieramy tylko jeden bajt.
4.Rozkazy dla czytnika
======================
Czytnik przyjmuje 13 roznych rozkazow:
Numer rozkazu Czas trwania impulsu [ms] Operacja wykonywana
-------------------------------------------------------------------------------
0 10 odczyt stanu czytnika
1 40 anulowanie odczytu karty
2 55 wyrzuc karte, wyl. czytnik
3 70 przygot. do odczytu
4 95 odczyt danych z karty
5 125 zamykanie drzwiczek
6 140 NOP
7 155 otwieranie drzwiczek
8 170 nie niszcz nosnika
9 185 kasowanie jednostek
10 200 NOP
11 215 wyrzuc karte
12 230 NOP
Opis rozkazow:
Rozkaz nr 12:
-------------
Nic nie robi
Zwracana wartosc: 238 (0EEh)
Rozkaz nr 11:
-------------
Wyrzuca karte. Pozostawia czytnik wlaczony.
Zwracana wartosc: 32 (20h)
Rozkaz nr 10:
-------------
Nic nie robi
Zwracana wartosc: 31 (1Fh)
Rozkaz nr 9:
------------
Kasowanie jednostek z karty
Wysylana wartosc: 0..200 - ilosc jednostek do skasowania
201..253 - brak operacji
254,255 - po wykonaniu tych operacji, rozkaz
"odczyt stanu" zwraca wartosc 23.
Zwracana wartosc
(1 bajt): 0..200 - ilosc faktycznie skasowanych jednostek
(gdy drugi bajt rowny 27 lub 28)
0 - gdy drugi bajt rowny 29
-
(2 bajt): 27 (1Bh) - proba skasowania wiekszej ilosci niz pozostalo
28 (1Ch) - kasowanie przebieglo poprawnie
29 (1Dh) - gdy wyslano >200, brak karty lub brak jednostek
do kasowania
Jesli transmisja nie zostanie zakonczona poprawnie (nie zostana odebrane
2 bajty), to jednostki nie sa kasowane.
Rozkaz nr 8:
------------
Nie niszcz nosnika, otwieraj drzwiczki gdy przygotowany do odczytu
Zwracana wartosc: 40 (28h)
Rozkaz nr 7:
------------
Otwiera drzwiczki wejscia dla karty
Zwracana wartosc: 81 (51h)
Rozkaz nr 6:
------------
Nic nie robi
Zwracana wartosc: 160 (0A9h)
Zwracana wartosc obliczana jest na podstawie zawartosci EPROM'u:
(($6401) shl 4) or (($6402) shr 4) or #$80)
Rozkaz nr 5:
------------
Zamyka drzwiczki wejscia dla karty
Zwracana wartosc: 80 (50h)
Rozkaz nr 4:
------------
Odczyt danych z karty
Zwracana wartosc: 0 - jesli w czytniku nie ma odczytanej karty
3 - jest karta - wtedy kolejnych 10 bajtow:
A,B,C,D,E,F,G,H,IMP,CTR - dane z karty
CTR:=3 xor A xor B xor ... xor H xor IMP
Rozkaz nr 3:
------------
Przygotowanie czytnika do odczytu karty.
Zwracana wartosc: 12 (0Ch)
Rozkaz nr 2:
------------
Wyrzucenie karty lub wylaczenie czytnika.
Zwracana wartosc: 10 (0Ah)
Wyrzuca karte. Wylacza czytnik jesli nie bylo w nim karty.
Rozkaz nr 1:
------------
Anulowanie odczytu karty.
Zwracana wartosc: 9
Wyrzuca karte.
Jesli uzyty po rozkazie nr 3 to otwiera drzwiczki
(jesli byly zamkniete).
Rozkaz nr 0:
------------
Odczyt stanu czytnika
Zwracana wartosc:
1 - brak jakichkolwiek zdarzen
3 - odczytano prawidlowe dane z karty - dalej jak rozkaz nr 4
5 - karta zuzyta
6 - uszkodzenie 1,3 lub 4 czujnika karty gdy karta byla w czytniku
11 - do wejscia wsunieta jest karta
20 - ?
21 - ?
22 - uszkodzona co najmniej jedna z glowic, lub 2 czujnik karty
23 - po rozkazie "kasuj jednostki" z parametrem 254 lub 255
24 - karta zablokowana w czytniku
25 - ?
26 - ?
36 - karta nieczytelna
37 - blad przy operacji na drzwiczkach - uszkodzony silnik drzwiczek
38 - ?
39 - pomyslnie zakonczono operacje zamykania / otwierania drzwiczek
41 - ?
42 - proba sabotazu (usuniecia karty z wnetrza czytnika)
44 - skasowano cos z karty
45 - ?
46 - ?
5. ...
======
Niestety, ale nie udalo mi sie jak dotad wyczaic wszystkiego w temacie
czytnika. Na przyklad nie wiem do czego moze byc uzywany rozkaz "kasuj
jednostki" z parametrami 254 i 255, co oznaczaja niektore stany czytnika
i pare innych rzeczy. Jesli ktos z was ma jakies informacje ktore moglyby
przyczynic sie do uaktualnienia tego tekstu, to prosze o kontakt
shadows@dione.ids.pl
Pozdrowienia dla wszystkich czlonkow grupy URMET-DEVELOPERS, Thorina (wybacz
jesli to nie tak sie pisze, dzieki za mozliwosc zbadania czytnika w praktyce).
Pozdrawiam tez kumpli z miejscowosci w ktorej mieszkam, jedna taka kolezanke
i dwie siostry ;).
SHADOW
|