Przejdz do strony glownej  

Kolnsoft FAQ - 2002-08-08

Pobierz wersje spakowana


 >> 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



           ===================>    Kolnierzyk    <===================

                              VIII 1998-VIII 2002l

                               koln@poczta.onet.pl

                  ===================>    <===================


        "It's nice to be important, but it's more important to be nice"
                                                                Scooter

    Witam :)

    Oto opis wynikow moich badan nad oprogramowaniem automatow. Tekst sklada
    sie z dwoch czesci:

    - czesc pierwsza zawiera opis oprogramowania plyty glownej niebieskiego
    Urmeta oraz skutkow wynikajacych z jego dzialania (lub nie :). Wszedzie,
    gdzie nie napisalem inaczej, opisana jest wersja 2.9. Dodalem pare infor-
    macji "sprzetowych".

    - czesc druga zawiera opis softu plyty glownej srebrnego Urmeta. Opis do-
    tyczy wersji 2.60 programu glownego i 2.06 programu bootujacego, jesli nie
    napisalem gdzies inaczej oczywiscie. Zaktualizowalem i poprawilem infor-
    macje zwiazane z kartami elektronicznymi. Gdy znajde troche czasu i checi,
    napisze tu cos na temat komunikacji automatu z centrum nadzoru i jeszcze
    pare innych ciekawych rzeczy... :) Odwleka sie to i odwleka, ale kiedys
    to w koncu napisze :)

    Uzycie wiadomosci tu zawartych jak zwykle na wlasna odpowiedzialnosc.
    Najnowszej wersji tego tekstu, o ile beda nowsze wersje, nalezy szukac
    na stronie Hrabiego: http://phreak.hack.pl (nowy adres dawnego phreak.
    zone.to). Gwiazdki na marginesie oznaczaja uaktualnienia wzgledem pop-
    rzedniej wersji. I jeszcze jedno: przed ewentualnym napisaniem do mnie
    maila prosilbym o zapoznanie sie z ostatnim rozdzialem tego tekstu.

    SPIS TRESCI:
    CZESC I - Urmet niebieski TSP 91
      N1. WSTEP
      N2. OGOLNA BUDOWA PROGRAMU
 *    N3. PRZERWANIA
 *    N4. REJESTRY UKLADOW PERYFERYJNYCH
      N5. KARTY ZWYKLE
      N6. TABLICE KART
      N7. PRZYPOMNIENIE MENU GLOWNEGO AUTOMATU
      N8. KARTY SERWISOWE
      N9. KARTY SERWISOWE W WERSJI 5.8
      N10.KARTY SERWISOWE W WERSJI 3.0
      N11.INNA (NIZ HRABIEGO) METODA DZWONIENIA Z KART SERWISOWYCH
      N12.DIAGNOSTIC MENU - KODY DIAGNOSTYCZNE
      N13.POWODY ZGLOSZENIA DO CENTRUM NADZORU (C90)
      N14.PROGRAMOWANIE WARTOSCI DOMYSLNYCH W EEPROM
      N15.TARYFIKACJA
      N16.KOMUNIKACJA Z MODULEM CZYTNIKA
      N17.JAK ZROBIC NIEKASOWALNA KARTE
 *    N18.KOMUNIKACJA Z CENTRUM NADZORU (C90)
      N19.SPOSOB NA UNIEMOZLIWIENIE KOMUNIKACJI Z CENTRUM NADZORU
 *    N20.SPECIAL TEST MODE
      N21.BUFORY KLAWIATURY
      N22.INNE (NIZ 2.9) WERSJE OPROGRAMOWANIA
      N23.NOWY CZYTNIK I OPROGRAMOWANIE DO NIEGO (3.0?)
      N24.NAPISY
      N25.INSTRUKCJA WYMIANY EPROMU
      N26.ZAKLOCANIE AUTOMATU TELEFONEM KOMORKOWYM
      N27.DOSWIADCZENIE
      N28.PODSUMOWANIE
    CZESC II - Urmet srebrny TPE 97/U
      S1. WSTEP
      S2. OGOLNA BUDOWA PROGRAMU
      S3. WYJATKI
      S4. REJESTRY UKLADOW PERYFERYJNYCH
      S5. KODY KLAWIATURY
      S6. PAMIECI ZNAMIONOWE (BOLLINO) I METRYCZKA APARATU
 *    S7. KARTY ZWYKLE
 *    S8. ALGORYTM ROZPOZNAWANIA RODZAJU KARTY ELEKTRONICZNEJ
      S9. LISTY KART
 *    S10.ZABEZPIECZENIA KART ZWYKLYCH
      S11.KARTY KREDYTOWE
      S12.MENU GLOWNE AUTOMATU
 *    S13.KODY ALARMOW
      S14.MENU AUTOTEST
 *    S15.KARTY SERWISOWE
 *    S16.ZABEZPIECZENIA KART SERWISOWYCH
 *    S17.PRZYCISK "TEST"
 *    S18.FORMAT DANYCH KART ELEKTRONICZNYCH
      S19.PRYWATNE STG :)
      S20.INNE (NIZ 2.60) WERSJE OPROGRAMOWANIA
    WSPOLNE
      W1. GDY TPSA MA PODEJRZENIA
 *    W2. LINKI
 *    W3. ZAKONCZENIE




============ CZESC I - Urmet niebieski TSP 91 ================================

N1. WSTEP
    Tak wiec zaczelo sie w sierpniu 1998, gdy Hrabia opublikowal programy
    Urmeta i powstal Shroom FAQ, z ktorego zaczerpnalem podstawowe wiadomosci.
    Na poczatek musialem sobie napisac deasembler, bo w sieci nie znalazlem
    odpowiedniego (Uwaga! Najlepszy deasembler to IDA - The Interactive
    Disassembler, jest do sciagniecia z phreak.hack.pl). Potem sciagnalem
    jeszcze jakis symulator, nie najlepszy zreszta. Zamowilem sobie tez
    ksiazke o 68HC11. Kod zrodlowy po zdeassemblowaniu mial przy zalozonym
    przeze mnie formacie zapisu okolo 430 kB. Teraz, z komentarzami, ma ponad
    890 kB... Linii samego kodu, czyli instrukcji, jest 12164. Przedstawione
    ponizej wyniki to rezultaty analizy samego programu, a nie doswiadczen
    w praktyce na automacie, chyba ze napisalem inaczej. Prawdopodobnie znaj-
    da sie czasem jakies pomylki lub niescislosci, ale absolutnie bezbledne
    przeanalizowanie od podstaw takiej ilosci kodu jest raczej niemozliwe.
    Dlatego jesli ktos ma pelniejsze/dokladniejsze informacje na opisane
    tu tematy, chetnie umieszcze uaktualnienie.

N2. OGOLNA BUDOWA PROGRAMU
    Program zbudowany jest dosc sprytnie, tak ze daje sie latwo konfigurowac.
    Na poczatku kodu programu, przed napisami, znajduja sie rozne tablice
    i dane konfiguracyjne. Tak wiec zmiana jednego bajtu moze mocno zmienic
    dzialanie programu. Poza tym calosc oparta jest na przerwaniach. Komuni-
    kacja z czytnikiem, klawiatura, wyswietlaczem oparte sa na przerwaniach
    zegarowych. Rowniez na przerwaniach oparta jest taryfikacja. W zwiazku
    z tym glowny program ustawia tylko pewne zmienne, ktore odczytywane sa
    okresowo przez odpowiednie przerwania zegarowe, odpowiedzialne za obsluge
    jakiegos podzespolu automatu. Na przyklad glowny program ustawia w odpo-
    wiedniej zmiennej numer napisu do wyswietlenia, zmienna ta co jakis czas
    jest odczytywana przez procedure obslugi przerwania, a odpowiadajacy war-
    tosci tej zmiennej napis jest wyswietlany na LCD.

N3. PRZERWANIA
 *  Ponizej umiescilem krotki wykaz przerwan uzywanych przez oprogramowanie.
 *  Pozostale, ktorych tutaj nie wymienilem, maja puste procedury obslugi
 *  (co oznacza brak reakcji na wystapienie przerwania). Na poczatku wiersza
 *  znajduje sie adres wektora przerwania, nastepnie adres procedury obslugi
 *  wskazywany przez ten wektor (w nawiasach kwadratowych), dalej jest an-
 *  gielska nazwa przerwania, a na koncu napisalem do czego przerwanie jest
 *  uzywane.
 *
 *  Dla trybu pracy procesora "Normal Expanded Mode" (w tym trybie zwykle
 *  procesor pracuje) tabela wektorow znajduje sie pod adresami z zakresu
 *  0xFFD6..0xFFFF:
 *
 *    0xFFDA: [0xBF24] - Pulse Accumulator Input Edge  - Obsluga taryfikacji
 *                                                       50 Hz
 *
 *    0xFFE2: [0xB800] - Timer Output Compare 4 (TOC4) - Obsluga komunikacji
 *                                                       z czytnikiem
 *
 *    0xFFE6: [0xC908] - Timer Output Compare 2 (TOC2) - Sprawdzanie pradu
 *                                                       linii, obsluga tary-
 *                                                       fikacji i polaczen,
 *                                                       zarzadzanie czytni-
 *                                                       kiem i stanem karty
 *
 *    0xFFE8: [0xBCD9] - Timer Output Compare 1 (TOC1) - Obsluga taryfikacji
 *                                                       16 kHz i klawiatury
 *
 *    0xFFEA: [0xBA99] - Timer Input Capture 3 (TIC3)  - Obsluga komunikacji
 *                                                       z czytnikiem
 *
 *    0xFFEC: [0xBED1] - Timer Input Capture 2 (TIC2)  - Obsluga DTMF-u
 *
 *    0xFFEE: [0xBF16] - Timer Input Capture 1 (TIC1)  - Pomocnicza obsluga
 *                                                       taryfikacji 16 kHz
 *
 *    0xFFF8: [0xD44F] - Illegal Opcode Trap           - Bledna instrukcja
 *
 *    0xFFFA: [0xC000] - COP Watchdog Time-Out         - Przepelnienie licz-
 *                                                       nika bezpieczenstwa
 *
 *    0xFFFC: [0xC000] - COP Clock Monitor Fail        - Zatrzymanie taktowa-
 *                                                       nia procesora
 *
 *    0xFFFE: [0xC000] - Reset                         - Reset - procesor wy-
 *                                                       chodzi ze stanu us-
 *                                                       pienia po podniesie-
 *                                                       niu sluchawki, otrzy-
 *                                                       maniu rozmowy przy-
 *                                                       chodzacej, takze ok-
 *                                                       resowo co jakis czas
 *
 *  Dla trybu pracy procesora "Special Test Mode" (patrz rozdzial "Special
 *  Test Mode") tabela wektorow znajduje sie pod adresami z zakresu
 *  0xBFD6..0xBFFF:
 *
 *    0xBFD6..0xBFFE: [0xAA7E] - wszystkie przerwania  - Programowanie re-
 *                                                       jestru CONFIG
 *
N4. REJESTRY UKLADOW PERYFERYJNYCH
 *  Ponizej zamiescilem odwzorowanie rejestrow ukladow peryferyjnych w przes-
 *  trzen adresowa mikrokontrolera niebieskiego automatu (brzmi strasznie ;)).
 *  Po dokladniejsze informacje na temat rejestrow i ukladow peryferyjnych
 *  odsylam do danych producenta (M68HC11 Reference Manual - powinien byc na
 *  phreak.hack.pl). Na poczatku znajduje sie adres, pod jakim widoczny jest
 *  rejestr, nastepnie jest nazwa rejestru, a na koncu umiescilem angielskie
 *  rozwiniecie nazwy rejestru.
 *
 *    0x1000:     Rejestr PORTA   - Port A Register
 *    0x1001:     -
 *    0x1002:     Rejestr PIOC    - Parallel I/O Control Register
 *    0x1003:     Rejestr PORTC   - Port C Register
 *    0x1004:     Rejestr PORTB   - Port B Register
 *    0x1005:     Rejestr PORTCL  - Port C Latch Register
 *    0x1006:     -
 *    0x1007:     Rejestr DDRC    - Data Direction for Port C Register
 *    0x1008:     Rejestr PORTD   - Port D Register
 *    0x1009:     Rejestr DDRD    - Data Direction for Port D Register
 *    0x100A:     Rejestr PORTE   - Port E Register
 *    0x100B:     Rejestr CFORC   - Output Compare Force Register
 *    0x100C:     Rejestr OC1M    - Output Compare 1 Mask Register
 *    0x100D:     Rejestr OC1D    - Output Compare 1 Data Register
 *    0x100E:     Rejestr TCNT    - Timer Counter Register
 *    0x100F:     c.d.
 *
 *    0x1010:     Rejestr TIC1    - Timer Input Capture 1 Register
 *    0x1011:     c.d.
 *    0x1012:     Rejestr TIC2    - Timer Input Capture 2 Register
 *    0x1013:     c.d.
 *    0x1014:     Rejestr TIC3    - Timer Input Capture 3 Register
 *    0x1015:     c.d.
 *    0x1016:     Rejestr TOC1    - Timer Output Compare 1 Register
 *    0x1017:     c.d.
 *    0x1018:     Rejestr TOC2    - Timer Output Compare 2 Register
 *    0x1019:     c.d.
 *    0x101A:     Rejestr TOC3    - Timer Output Compare 3 Register
 *    0x101B:     c.d.
 *    0x101C:     Rejestr TOC4    - Timer Output Compare 4 Register
 *    0x101D:     c.d.
 *    0x101E:     Rejestr TOC5    - Timer Output Compare 5 Register
 *    0x101F:     c.d.
 *
 *    0x1020:     Rejestr TCTL1   - Timer Control Register 1
 *    0x1021:     Rejestr TCTL2   - Timer Control Register 2
 *    0x1022:     Rejestr TMSK1   - Timer Interrupt Mask Register 1
 *    0x1023:     Rejestr TFLG1   - Timer Interrupt Flag Register 1
 *    0x1024:     Rejestr TMSK2   - Timer Interrupt Mask Register 2
 *    0x1025:     Rejestr TFLG2   - Timer Interrupt Flag Register 2
 *    0x1026:     Rejestr PACTL   - Pulse Accumulator Control Register
 *    0x1027:     Rejestr PACNT   - Pulse Accumulator Counter Register
 *    0x1028:     Rejestr SPCR    - SPI Control Register
 *    0x1029:     Rejestr SPSR    - SPI Status Register
 *    0x102A:     Rejestr SPDR    - SPI Data Register
 *    0x102B:     Rejestr BAUD    - Baud-Rate Control Register
 *    0x102C:     Rejestr SCCR1   - SCI Control Register 1
 *    0x102D:     Rejestr SCCR2   - SCI Control Register 2
 *    0x102E:     Rejestr SCSR    - SCI Status Register
 *    0x102F:     Rejestr SCDR    - SCI Data Register
 *
 *    0x1030:     Rejestr ADCTL   - A/D Control/Status Register
 *    0x1031:     Rejestr ADR1    - A/D Result Register 1
 *    0x1032:     Rejestr ADR2    - A/D Result Register 2
 *    0x1033:     Rejestr ADR3    - A/D Result Register 3
 *    0x1034:     Rejestr ADR4    - A/D Result Register 4
 *    0x1035:     -
 *    0x1036:     -
 *    0x1037:     -
 *    0x1038:     -
 *    0x1039:     Rejestr OPTION  - System Configuration Options Register
 *    0x103A:     Rejestr COPRST  - COP Timer Reset Register
 *    0x103B:     Rejestr PPROG   - EEPROM Programming Register
 *    0x103C:     Rejestr HPRIO   - Highest Priority I-Bit and Misc Register
 *    0x103D:     Rejestr INIT    - RAM and I/O Mapping Register
 *    0x103E:     Rejestr TEST1   - Testing Functions Control Register
 *    0x103F:     Rejestr CONFIG  - System Configuration Register
 *
N5. KARTY ZWYKLE
    Karty uzywane przez niebieski automat ulozone sa w 1024 serie po
    65536 kart w serii (tak naprawde 1024 serie to 256 prawdziwych serii
    i 4 mozliwe emisje -> 256*4 = 1024). Sa DWA rodzaje kart zwyklych:

    a) Karta w jednostkach taryfikacyjnych

       Te karty sa powszechnie uzywane. Posiadaja zapisane na sobie unikalne
       dane jak numer serii, numer kolejny w serii, a takze informacje o no-
       minalnej i pozostalej liczbie jednostek, ktore to dane chronione sa
       odpowiednimi algorytmami kontrolnymi. I tu najwieksza niespodzianka:
       NIEMOZLIWE JEST ZROBIENIE POZWALAJACEJ DZWONIC NIEKONCZACEJ SIE KARTY.
       Moze kiedys, w starych wersjach oprogramowania, bylo to mozliwe, teraz
       na pewno nie. Otoz kazda nowa karta posiada w trzeciej, najwiekszej
       czesci, 200 magnetycznych jedynek. W oprogramowaniu automatu istnieje
       nastepujaca tablica:

       Offset       Wartosc (Liczba       Maks. liczba
       tablicy      jedynek/jednostke)    jednostek

         #0           1                     200
         #1           2                     100
         #2           4                     50
         #3           5                     40
         #4           8                     25
         #5           10                    20
         #6           20                    10

       Na karcie zapisana jest liczba od 0 do 7. Jesli wartosc ta wynosi 0,
       karta jest wyrzucana z automatu bez zadnego komentarza na wyswietlaczu
       (zatrzymuje sie tylko na chwile tak jak karty serwisowe). W przeciwnym
       wypadku oprogramowanie odejmuje od niej 1 i daje to offset do powyzszej
       tablicy. Jesli dla przykladu na karcie zapisane jest 7, offset do tab-
       licy wyniesie 6, pod tym offsetem jest wartosc 20, czyli jednostce na
       karcie odpowiada 20 jedynek. Tak wiec na karcie moze byc maksymalnie
       200/20 = 10 jednostek, po prostu jest to karta 10-jednostkowa. Jak wi-
       dac, TPSA nie wykorzystuje w pelni mozliwosci istniejacego oprogramowa-
       nia. Kazdy oczywiscie zaraz chcialby zmienic zapis na karcie tak, zeby
       bylo na niej 200 jednostek, co jest mozliwe, ale na chetnych czeka mala
       niespodzianka, o ktorej bedzie w jednym z nastepnych punktow... Wniosek
       jest nastepujacy: poniewaz na karcie nie jest bezposrednio zapisana
       maksymalna liczba jednostek, nie mozna zrobic karty na dowolnie duza
       ich liczbe. Na dodatek ilosc jednostek z karty jest reprezentowana
       w oprogramowaniu jako wielkosc 1-bajtowa, a wiec daje to teoretycznie
       maksymalnie 255 jednostek. Ktos widzial moze na wyswietlaczu cos w ro-
       dzaju "KREDYT 00025", faktycznie, zdarzalo sie tak skonfigurowane opro-
       gramowanie, tak wiec automat przystosowany jest do wyswietlania PIECIU
       cyfr... Po co wiec byloby piec cyfr, gdy na karcie moze byc maksymalnie
       (teoretycznie) 255 jednostek? Czasem sie to jednak moze przydac, o czym
       za chwile... Ktos moze miec tez ochote zmodyfikowac zawartosc powyzszej
       tablicy, aby wszystkie karty byly czytane jako np. 100... Jest to jak
       najbardziej mozliwe! Nie radze jednak wpisac jako liczbe jedynek/
       jednostke 0. Algorytm obliczania pozostalych jednostek jest nastepu-
       jacy: liczba pozostalych jedynek (pozostalych z poczatkowych 200) jest
       dzielona przez liczbe jedynek/jednostke i jako wynik brana jest czesc
       calkowita. W praktyce jest to realizowane przez instrukcje IDIV, ktora
       w przypadku dzielenia przez 0 daje jako czesc calkowita wyniku 0xFFFF,
       z czego bajt mniej znaczacy jest brany jako liczba pozostalych jednos-
       tek, czyli tutaj 255. Co sie dalej stanie, napisalem w rozdziale "Tab-
       lice kart". Mozna tez wpisac 1, aby karty byly odczytywane jako 200-
       jednostkowe, ale, jak powiedzialem, wiaze sie z tym niespodzianka...
       Jeszcze odnosnie karty niekasowalnej - mozna by bylo sprobowac nagrac
       karte na materiale twardszym magnetycznie niz zwykla karta, tak, zeby
       automat nie byl w stanie skasowac czegokolwiek z karty. Niestety, na
       karcie sa wybijane zabki wskazujace procent jej zuzycia, i karta jest
       w tym miejscu nieczytelna. Poza tym uzywanie takiej karty mocno by
       ograniczal mechanizm opisany w nastepnym rozdziale.

    b) Karta w jednostkach Tax Value

       Tych kart nie ma w obiegu. Posiadaja dane analogiczne do kart opisanych
       powyzej, ale jest jedna zasadnicza roznica. Jak wiadomo, w automacie
       zapisana jest wartosc Tax Value, zwykle ustawiona na 1, ktora okresla
       liczbe kasowanych z normalnej karty jednostek przy kazdym sygnale
       16 kHz z centrali. Natomiast z kart w jednostkach Tax Value kasowana
       jest zawsze jedna jednostka, niezaleznie od wartosci Tax Value.
       W zwiazku z tym sabotaz polegajacy na ustawieniu Tax Value np. na 30
       nie spowoduje zadnych skutkow ubocznych dla takiej karty, rozmawiac
       mozemy tak samo dlugo, jak zwykle. Zalozmy, ze na takiej karcie jest
       5 jednostek. Wtedy dla Tax Value rownego 30 na wyswietlaczu pojawi sie
       30*5 = 150 jednostek do wykorzystania! Za to przy kazdym 16 kHz bedzie
       od tego odejmowane 30 jednostek. Jezeli na takiej karcie bedzie 200
       jednostek, a Tax Value ustawimy na 255, to na wyswietlaczu zobaczymy
       "KREDYT 51000"! Do tego wlasnie przydac sie moze piec cyfr. Podobnie
       jak poprzednio, niemozliwe jest zrobienie niekonczacej sie karty.

N6. TABLICE KART
    W pamieci RAM znajduja sie 3 tablice kart uzywanych przez automat.

    a) Karty, z ktorych nie udalo sie skasowac pelnej wartosci Tax Value

       Tablica ma 21 pozycji, kazda pozycja zajmuje 2 slowa (4 bajty) i zawie-
       ra kolejno numer serii Karty i numer kolejny Karty w serii. Zapisywane
       sa tu karty w przypadku, kiedy na karcie zabraklo jednostek do skasowa-
       nia pelnej wartosci Tax Value lub czytnik w wyniku bledu odmowil skaso-
       wania odpowiedniej liczby jednostek. Wtedy cala karta jest kasowana,
       a brakujaca liczba jednostek zostanie skasowana z nastepnej wlozonej
       karty, chyba ze odlozymy sluchawke i poczekamy chwile az do wylaczenia
       sie wyswietlacza. Automat posiada w oprogramowaniu zabezpieczenie, kto-
       re powoduje, ze wyrzuca on stara karte po skasowaniu ostatniej istnie-
       jacej na karcie pelnej wartosci Tax Value i prosi o nowa karte. Tak
       wiec w praktyce jest to zabezpieczenie tylko przed bledami w pracy
       czytnika.

    b) Karty uzywane przez automat

       Ta tablica ma 562 pozycje, kazda pozycja zajmuje 2 slowa i 1 bajt
       (razem 5 bajtow), i zawiera, oprocz numeru serii karty i numeru
       kolejnego karty w serii, rowniez informacje o pozostalej na karcie
       liczbie jednostek (dokladnie piaty bajt zawiera wartosc: 200 minus
       liczba magnetycznych jedynek pozostalych w trzeciej czesci karty).
       Karty zapisywane sa tu w chwili kasowania z nich pierwszej jednostki,
       a podczas kasowania kolejnych jednostek piaty bajt tablicy jest
       uaktualniany - dodawana jest do niego wartosc odpowiadajaca liczbie
       kasowanych jednostek.

    c) Karty ponownie napelnione

       Tablica ta posiada 221 pozycji, kazda zajmuje 2 slowa (4 bajty) i za-
       wiera numer serii karty i numer kolejny karty w serii, wpisywane sa tu
       te karty, ktore zostaly ponownie napelnione.

    Na powyzsze listy nie sa wpisywane karty serwisowe. Algorytm
    akceptowania karty jest nastepujacy:

    1) Czy karta jest na liscie tych, z ktorych nie udalo sie
       skasowac pelnej wartosci Tax Value?
       NIE - 2)
       TAK - Automat kasuje cala karte (po co - przeciez juz raz byla
             kasowana...), kasuje jej numer z tablicy, wyrzuca karte
             i pisze "KARTA ZUZYTA".

    2) Czy karta jest na liscie kart ponownie napelnionych?
       NIE - 3)
       TAK - Automat kasuje cala karte (tez juz raz byla kasowana -
             patrz punkt nizej), ustawia kod diagnostyczny nr 32
             (o kodach bedzie pozniej), wyrzuca karte i pisze
             "KARTA ZUZYTA".

    3) Czy karta jest na liscie uzywanych przez automat?
       NIE - Dopisuje karte na liste - dopiero w chwili kasowania
             z niej pierwszej jednostki
       TAK - Sprawdza, czy na karcie nie ma wiecej jednostek, niz poprzednio.
             Jesli jest wiecej, karta jest kasowana, ustawiany jest kod 32,
             automat wyrzuca karte i pisze "KARTA ZUZYTA". Jesli jednostek
             nie jest za duzo, lista jest uaktualniana poprzez wpisanie bie-
             zacej liczby jednostek (bo przeciez pomiedzy jednym i drugim
             uzyciem karty moglismy z niej dzwonic uzywajac innego automatu).
             Scisle rzecz biorac, dane o jednostkach karty sa zapisywane
             w tablicy w postaci: 200 minus liczba magnetycznych jedynek po-
             zostalych w trzeciej czesci karty). Przy ponownym uzyciu karty
             do zapamietanej powyzej wartosci dodawana jest znowu biezaca
             liczba pozostalych na karcie jedynek. Jesli wynik przekroczy
             205(!), karta jest kwalifikowana jako ponownie napelniona.
             Tak wiec mozemy bezkarnie dopisac liczbe jednostek odpowiadajaca
             5 jedynkom, czyli np. 2 jednostki na karcie 100-jednostkowej
             (daje to 4 jedynki)...

    Gdy zapelni sie pierwsza tablica, wszystkie dotychczasowe elementy zostaja
    zepchniete w dol z usunieciem ostatniego z nich, a najnowszy zostaje
    umieszczony na samej gorze. Natomiast tablice druga i trzecia sa traktowa-
    ne jak pierscienie. W przypadku zapelnienia sie jako kolejny wolny element
    jest traktowany dotychczasowy najstarszy (na samym dole) i kolejne elemen-
    ty sa zapisywane znowu coraz blizej szczytu tablicy. Oprogramowanie ma
    mozliwosc kasowania dowolnych elementow tylko z pierwszej tablicy, w dwoch
    pozostalych najstarsze elementy sa zastepowane najnowszymi. Przy kasowaniu
    elementu z pierwszej tablicy wszystkie, ktore sa nad nim, spadaja o jeden
    poziom w dol i zmienna zawierajaca liczbe waznych elementow jest zmniej-
    szana o jeden. Natomiast komorka pamieci na szczycie nie jest fizycznie
    zerowana, w zwiazku z tym ostatni element moze byc powtorzony kilka razy.

    W celu skasowania list mozna wyciagnac i z powrotem wlozyc kosc RAM, ale
    wtedy sumy kontrolne RAM nie beda sie zgadzac, przez co automat przetestu-
    je pamiec RAM i ustawi kod diagnostyczny nr 11 oraz m.in. nastapi utrata
    zawartosci "DIAGNOSTIC MENU", "COUNTER MENU" oraz "VISUAL BLACK L."
    z "SW VERSION MENU", o czesci ktorych to menu napisalem ponizej (testowa-
    ne praktycznie). Kazda z tablic posiada tez wlasna sume kontrolna, ktorej
    niezgodnosc powoduje rowniez skasowanie tablicy oraz dodatkowo wypelnienie
    jej zerami (we innych przypadkach jedynie liczba elementow w tablicy jest
    ustawiana na zero i wskaznik na pierwszy wolny element ustawiany jest na
    poczatek tablicy, bez fizycznego kasowania danych).

    A teraz o tym, co sie stanie, gdy jako liczbe jedynek/jednostke wpiszemy
    w EPROMie zero. Jak juz napisalem, wtedy liczba pozostalych jednostek po
    wlozeniu dowolnej karty zostanie odczytana jako 255. Mozemy z tej karty
    normalnie rozmawiac. Nalezy jednak pamietac o tym, ze zmodyfikowalismy
    oprogramowanie plyty glownej, ale nie czytnika! Tak wiec w pamieci czyt-
    nika znajduje sie rzeczywista liczba jednostek. W momencie, gdy zuzyjemy
    liczbe jednostek rowna faktycznie istniejacej na karcie, karta zostanie
    skasowana i wyrzucona, natomiast plyta glowna nic nie bedzie wiedziec
    o potrzebie wymiany karty i nie otworzy wlotu czytnika, tak wiec nie
    bedziemy nawet mogli wlozyc nowej karty (odmiana tego przypadku zostala
    przetestowana praktycznie). Podsumowujac: ustawienie liczby jedynek/jed-
    nostke na zero nie przynosi zadnych korzysci.

    Natomiast gdy uzyjemy karty, na ktorej jest wieksza liczba jednostek od
    liczby nominalnej wynikajacej z podzielnika (a ktora mozna zrobic poprzez
    nagranie w trzeciej czesci karty wiecej niz 200 jedynek magnetycznych -
    metode ta jako pierwszy wymyslil Shadow), stanie sie rzecz nastepujaca:
    przyjmijmy, ze mamy karte z 230 jedynkami. W chwili pierwszego uzycia
    danej karty zostaje ona wpisana na 2 tablice kart z liczba jedynek magne-
    tycznych rowna 200-230=... no wlasnie, wychodzi liczba ujemna, wiec na
    liste zostanie wpisane zero, czyli tak, jak gdyby na karcie bylo 200 mag-
    netycznych jedynek, a nie 230. Teraz dla przykladu podczas rozmowy zostaje
    skasowanych z karty a dodanych do tablicy 10 jedynek, czyli w tablicy
    jest wartosc 10, a na karcie zostaje 220 jedynek. Przy probie ponownego
    uzycia tej karty zostanie wykonana operacja: 10 jedynek z tablicy + 220
    jedynek z karty = 230 > 205 -> karta zostanie uznana za ponownie napelnio-
    na, automat wpisze ja na 3 liste kart oraz podejmie probe skasowania calej
    karty i ustawi kod 32... Aby temu zapobiec, nalezaloby zuzyc na innym
    automacie taka liczbe jednostek, aby podany wyzej wynik nie przekroczyl
    205. Zagadnienie to zostalo przetestowane praktycznie.

N7. PRZYPOMNIENIE MENU GLOWNEGO AUTOMATU
    W tym miejscu dla przypomnienia umieszczam glowne menu automatu.
    Po dokladny opis odsylam do menu.txt Hrabiego (phreak.hack.pl).

    0.  DEFAULT    MENU
    1.  DIAGNOSTIC MENU
    2.  COUNTER    MENU
    3.  DIAL       MENU
    4.  C90        MENU
    5.  TAXATION   MENU
    6.  SW VERSION MENU
    7.  FREE NUM.  MENU
    8.  LOCK NUM.  MENU
    9.  WATCH      MENU

N8. KARTY SERWISOWE
    Kart serwisowych jest PIEC rodzajow:

    a) Karta Maintenance

       Karta ta wyswietla:
       1.  DIAGNOSTIC MENU
       2.  COUNTER    MENU - bez podmenu "CLEAR PARTIAL" i "CLEAR ALL"

       Dokladnie to samo wyswietlane jest po otwarciu automatu.
       Po szczegoly odsylam do menu.txt Hrabiego.

    b) Karta Programming

       Karta wyswietla:
       1.  DIAGNOSTIC MENU
       2.  COUNTER    MENU
       3.  DIAL       MENU
       4.  C90        MENU
       5.  TAXATION   MENU
       6.  SW VERSION MENU - bez podmenu "VISUAL BLACK L.", o czym nizej
       7.  FREE NUM.  MENU
       8.  LOCK NUM.  MENU
       9.  WATCH      MENU

       Po szczegoly, jak poprzednio, odsylam do menu.txt.

    c) Karta ProgrammingVBL

       Jest to karta, ktora nazwalem sobie ProgrammingVBL,
       gdyz wyswietla, oprocz wszystkiego co zwykly Programming,
       dodatkowe podmenu:
       1.  DIAGNOSTIC MENU
       2.  COUNTER    MENU
       3.  DIAL       MENU
       4.  C90        MENU
       5.  TAXATION   MENU
       6.  SW VERSION MENU
           6.1  TELEPHONE  SOFT.
                6.1.1    PO  2.9
    ==>    6.2  VISUAL BLACK L.
                6.2.1    11111 11111       \
                ......   ..... .....         Tablica 1 - 21 pozycji
                6.2.21   11111 11111       /
                6.2.22   00000 00000         A3 / L3
                6.2.23   33333 33333       \
                .......  ..... .....         Tablica 3 - 221 pozycji
                6.2.243  33333 33333       /
                6.2.244  00000 00000         CRC3 / CRC2
                6.2.245  00000 00000         A2 / L2
                6.2.246  22222 22222 222   \
                .......  ..... ..... ...     Tablica 2 - 562 pozycje
                6.2.807  22222 22222 222   /
           6.3  EXIT
       7.  FREE NUM.  MENU
       8.  LOCK NUM.  MENU
       9.  WATCH      MENU

       Objasnienie skrotow:
         A3   - Adres pierwszej wolnej pozycji w 3 tablicy
         L3   - Liczba zapamietanych pozycji w 3 tablicy
         CRC3 - Suma kontrolna 3 tablicy
         CRC2 - Suma kontrolna 2 tablicy
         A2   - Adres pierwszej wolnej pozycji w 2 tablicy
         L2   - Liczba zapamietanych pozycji w 2 tablicy

       Dodatkowe podmenu "VISUAL BLACK L." (Skrot od "Visual Black List")
       wyswietla po kolei zawartosc 1, 3 i 2 tablicy zapamietanych kart,
       czyli:
         1 - Karty, z ktorych nie udalo sie skasowac pelnej wartosci
             Tax Value
         3 - Karty ponownie napelnione
         2 - Karty uzywane przez automat

       W przypadku tablic 1 i 3 wyswietlane sa numery: numer serii i numer
       kolejny karty w serii (numery te to dwa slowa, ktore sa wyswietlane
       obok siebie - kazde slowo w postaci pieciu cyfr), a dla 2 tablicy
       dodatkowo jako trzecia (trzycyfrowa) liczba wyswietlana jest wartosc:
       200 minus liczba magnetycznych jedynek pozostalych na karcie. Wszyst-
       kie numery wyswietlane sa w postaci dziesietnej. Wspolczuje tylko
       temu, kto chcialby przegladac recznie 807 pozycji...

    d) Karta Test

       Ta karta wyswietla:
       0.  DEFAULT    MENU
           0.1  PROG. DEFAULT
                0.1.1    DEFAULT Y
                0.1.2    DEFAULT YE
                0.1.3    DEFAULT YES
                0.1.4    PROG. DEFAULT OK - gdy programowanie sie udalo
                         PROG. DEFAULT KO - gdy wystapil blad
           0.2  EXIT
       1.  DIAGNOSTIC MENU
       2.  COUNTER    MENU
       3.  DIAL       MENU
       4.  C90        MENU
       5.  TAXATION   MENU
       6.  SW VERSION MENU - bez podmenu "VISUAL BLACK L."
       7.  FREE NUM.  MENU
       8.  LOCK NUM.  MENU
       9.  WATCH      MENU

       Karta ta jest uzywana przy produkcji nowych automatow.
       "DEFAULT MENU" ustawia w pamieci EEPROM domyslne ustawienia
       automatu. Szerzej na ten temat w punkcie "Programowanie
       wartosci domyslnych w EEPROM".

    e) Karta Sample

       Ta karta wyswietla tylko:
       0.  DEFAULT    MENU

       Uzycie tej karty powoduje dodatkowo, ze automat, nawet, jesli
       posiada dane do przeslania na centrale i normalnie probowalby je
       przeslac ("ZAJETY"), nie bedzie po jej uzyciu probowal tego zrobic -
       az do odlozenia sluchawki na kilka sekund. Byc moze uzywa sie tej
       karty, gdy automat lezy w serwisie odlaczony od linii, a podpiety
       do zasilania zastepczego, bo wtedy proba komunikacji z centala i tak
       nie ma sensu. Na jakiejs stronie TPSA znalazlem jej opis jako "karta
       technologiczna".

N9. KARTY SERWISOWE W WERSJI 5.8
    Na poczatek musze wszystkich rozczarowac: NIE ISTNIEJA KARTY DO
    PROGRAMOWANIA W WERSJI 5.8 !!! Tak tak, TPSA doszla do slusznego wniosku,
    ze nowe oprogramowanie i tak zostanie predzej lub pozniej zlamane, i nie
    zrobila odpowiednikow kart ze starszych wersji. Jedyne menu pojawia sie
    po otwarciu automatu, ale, jak wiadomo, jego mozliwosci sa bardzo ograni-
    czone (mozna jednak wlaczyc pelne menu! - patrz slammer.faq :). Istnie-
    nieje tylko jedna karta serwisowa:

    a) Karta Check58

       Ta karte nazwalem Check58. Karta ta sluzy do sprawdzania, czy w auto-
       macie jest oprogramowanie 5.8, czy tez inne. Nie slyszalem, zeby
       TPSA wyemitowala takie karty, ale jak wiadomo, nie tylko ona ma mozli-
       wosc ich produkcji :) Istnienie tej karty zawdzieczamy najprawdopodob-
       niej niedopatrzeniu programistow przerabiajacych soft 2.8. Dzialanie
       tych kart zostalo praktycznie sprawdzone. Karta taka po wlozeniu do
       automatu z oprogramowaniem innym niz 5.8 zatrzymuje sie na chwile jak
       karta serwisowa i wypada, nic nie wyswietlajac. Natomiast jesli zosta-
       nie uzyta z softem 5.8, najnormalniej na swiecie wyswietla "KREDYT"
       i zawarta na niej liczbe jednostek. Mozna z niej normalnie rozmawiac,
       nie wolno jej wszakze zuzyc do zera, gdyz wtedy traci swoje wlasci-
       wosci.

    Na marginesie warto dodac, w jaki sposob TPSA rozpoznaje soft, skoro
    nie uzywa kart Check58... Otoz jest to po prostu zaznaczone na kosci
    EPROMu. Monter najpierw otwiera automat i sprawdza wersje oprogramowania,
    a dopiero potem ewentualnie uzywa kart serwisowych.

    Pozostaje problem, jak skonfigurowac automat, skoro nie istnieje karta
    do jego programowania. Glownym problemem jest zaprogramowanie numeru do
    centrum nadzoru i ustawien, ktorych nie mozna zmieniac z poziomu centrali
    (patrz rozdzial "Komunikacja z centrum nadzoru"). Otoz widze nastepujace
    mozliwosci:

      - mozna zmodyfikowac w EPROMie domyslne ustawienia tak, zeby
        odpowiadaly zadanej konfiguracji - przy zmianie wersji EPROMu
        wartosci domyslne zostana zaprogramowane w EEPROM - szerzej
        o tym w rozdziale "Programowanie wartosci domyslnych w EEPROM".
        Wymagaloby to programowania indywidualnie kazdego ukladu
        scalonego, gdyz trzeba by bylo zmieniac przynajmniej numer
        automatu - odpowiednik pozycji "NUM. TELEPHON" w "C90 MENU".
        Jednak w EPROMie 5.8 nie wykorzystano tej mozliwosci, zreszta
        jest ona malo praktyczna.

      - poniewaz pamiec EEPROM, w ktorej pamietana jest konfiguracja,
        znajduje sie w mikroprocesorze 68HC11, mozna zaprogramowac
        ta pamiec w serwisie i do automatu wlozyc juz zaprogramowany
        mikroprocesor. W praktyce trzeba najpierw wyjac stara pamiec
        EPROM, pozniej mikroprocesor, nastepnie nalezy wlozyc nowy
        mikroprocesor i na koncu nowy uklad z pamiecia. Zmiana tej
        kolejnosci grozi zaprogramowaniem w EEPROM wartosci domyslnych.

      - trzecia mozliwosc to posiadanie oprogramowania 2.9 lub starszego
        przerobionego tak, zeby wygladalo jak 5.8 (nie wystarczy zmiana
        naglowka pliku!). Wtedy za pomoca zwyklej karty serwisowej
        mozna zaprogramowac automat, a nastepnie wlozyc prawdziwe 5.8.
        Takie przerobienie wersji nie jest niebezpieczne, gdyz adresy
        danych w pamieci EEPROM we wszystkich wersjach od 2.6 wlacznie
        w gore sa (prawie na pewno) takie same.

      - kolejny sposob zostal wymyslony przez Nola i polega na przerobie-
        niu oprogramowania 5.8 w ten sposob, aby po otwarciu automatu
        wyswietlalo sie pelne menu, z mozliwoscia zaprogramowania wszyst-
        kich ustawien. Po zaprogramowaniu mozna zamienic EPROM na normalny
        5.8.

      - mozna zmienic w pliku z oprogramowaniem 5.8 bajt #0x0049 na #0x00
        (w tym przypadku nieistotne, czy plik jest zakodowany, czy nie),
        co wylaczy sprawdzanie wersji oprogramowania i zablokuje zapro-
        gramowanie z powodu zmiany wersji ustawien domyslnych, tak wiec
        stara konfiguracja pozostanie niezmieniona. TPSA nie wykorzystala
        tej prostej mozliwosci w EPROMie 5.8.

      - wreszcie mozna niczego nie zmieniac w oprogramowaniu i wlaczyc
        sobie pelne menu serwisowe za pomoca metody opisanej przez Slammera
        (slammer.faq) - sprawdzilem i dziala!

N10.KARTY SERWISOWE W WERSJI 3.0
    Na poczatek dobra (srednio dobra) wiadomosc: w najnowszej wersji softu
    do niebieskiego Urmeta zostaly przywrocone karty serwisowe! A teraz
    kilka mniej dobrych wiadomosci: po pierwsze po uzyciu karty Programming,
    ProgrammingVBL, Test lub Sample na wyswietlaczu zadne menu sie nie wys-
    wietla... aby sie wyswietlilo nalezy otworzyc i zamknac automat! Oczywis-
    cie wiaze sie to z ustawieniem odpowiedniego kodu diagnostycznego infor-
    mujacego o otwarciu automatu. A teraz jeszcze gorsza wiadomosc: z menu
    zniknely bez sladu: cale menu "LOCK NUM. MENU", opcje "16 KHz" i "50 Hz"
    z "TAXATION MENU", opcja "DIAL FREQ." z "DIAL MENU". Zablokowane zostalo
    tez cale menu "FREE NUM. MENU"! To ostatnie mozna prawdopodobnie wlaczyc
    uzywajac sposobu opisanego przez Slammera (slammer.faq), choc w praktyce
    jest to chyba malo przydatne bez opcji "16 KHz"... Oczywiscie zostala
    zachowana mozliwosc zdalnego programowania wszystkich usunietych/zablo-
    kowanych opcji. Ponizej przejrzyste podsumowanie - opisalem zmiany wzgle-
    dem wersji 2.9:

    a) Karta Maintenance

       Jako jedyna dziala bez zadnych zmian i wyswietla wlasciwe sobie menu
       od razu po jej uzyciu.

    b) Karta Programming

       Po uzyciu wymaga otwarcia i zamkniecia automatu. Nie wyswietla:
       - DIAL FREQ.        /      DIAL       MENU
       - 16 KHz            /      TAXATION   MENU
       - 50 Hz             /      TAXATION   MENU
       - FREE NUM.  MENU
       - LOCK NUM.  MENU

    c) Karta ProgrammingVBL

       Jak w punkcie b)

    d) Karta Test

       Jak w punkcie b)

    e) Karta Sample

       Po uzyciu wymaga otwarcia i zamkniecia automatu.

    f) Karta Check58

       Zachowuje sie identycznie jak w wersji 2.9.

    Pozostale zmiany w sofcie 3.0 zostaly opisane w rozdziale "Inne (niz 2.9)
    wersje oprogramowania".

N11.INNA (NIZ HRABIEGO) METODA DZWONIENIA Z KART SERWISOWYCH
    Przemek, tzn. moja prawa reka, wpadl na pomysl, ze mozna wylaczyc
    opcje "16 KHz" i dzwonic z automatu metoda na "rozmowe przychodzaca".
    Okazuje sie, ze jest to prawda, i metoda ta dziala w praktyce. Jesli
    wiec ktos woli dzwonic w ten sposob, narobi Telekomunikacji dodatkowego
    zamieszania, gdyz wtedy nie beda sie zgadzac nie tylko liczniki taryfi-
    kacji i liczniki rozmow platnych i bezplatnych, ale rowniez przychodza-
    cych... Metoda ta jest o tyle wygodna, ze nie trzeba programowac wielu
    nieraz numerow, a pozniej ich kasowac (dla tych ktorzy nie wiedza: cal-
    kowite wymazanie numeru z menu jest mozliwe przez trzymanie klawisza
    Redial przez okolo 5 sekund).

N12.DIAGNOSTIC MENU - KODY DIAGNOSTYCZNE
    W menu tym obejrzec mozemy kody diagnostyczne automatu. Sa to wartosci
    sygnalizujace zajscie pewnych zdarzen podczas jego dzialania. Wyswietlane
    sa kody #1..#8, jeszcze jeden, #9, jest tylko w pamieci automatu. Kod
    o numerze #1 odpowiada zdarzeniu najnowszemu, kod #9 - najstarszemu. Jes-
    li zajdzie jakies zdarzenie, odpowiadajacy mu kod dopisywany jest na po-
    zycji #1, a pozostale sa spychane w dol. Nowy kod nie jest jednak dopisy-
    wany w przypadku, gdy poprzedni byl taki sam. Ponizej podaje spis wszyst-
    kich mozliwych kodow. Czesc z nich rozpracowalem sam, czesc uzyskalem od
    Hrabiego, a czesc przepisalem z instrukcji niebieskiego Urmeta otrzymanej
    od Pita, za co dzieki dla niego. Kody 11-17 dotycza plyty glownej, 21-36
    ukladow peryferyjnych, natomiast 81-95 modulu czytnika. Sa jeszcze inne
    kody, o ktorych wczesniej nic nie napisalem, a ktore sie nazywaja "powo-
    dami zgloszenia do centrum nadzoru". Wyobrazmy sobie, ze otworzylismy
    automat, wtedy generowany jest kod diagnostyczny numer 13 (dziesietnie).
    Ale przeciez mozemy wyzerowac kody diagnostyczne w nadziei, ze gdy po
    zamknieciu automatu zadzwoni on do centrum nadzoru, to nie bedzie wiadomo,
    dlaczego dzwonil. Wlasnie zeby temu zapobiec, automat podczas komunikacji
    z centrum nadzoru wysyla kod powodu zgloszenia odpowiadajacy zdarzeniu,
    ktore bezposrednio spowodowalo koniecznosc komunikacji, niezaleznie od
    tego, co jest aktualnie w "DIAGNOSTIC MENU". Ten mechanizm jednak rowniez
    da sie oszukac - patrz rozdzial "Sposob na uniemozliwienie komunikacji
    z centrum nadzoru". Spis omawianych kodow umiescilem w nastepnym punkcie.
    A oto kody diagnostyczne:

    Legenda:
    [-]  = nie dzwoni do centrum nadzoru po ustawieniu kodu
    [!]  = dzwoni natychmiast
    [PZ] = dzwoni po zamknieciu automatu
    [L1] = dzwoni, jesli przekroczono limit 5 zdarzen (wspolny dla wszystkich
           zdarzen oznaczonych L1)
    [L2] = dzwoni, jesli przekroczono limit 11 zdarzen (wspolny dla wszystkich
           zdarzen oznaczonych L2)

    ====================

    [-]   Kod 01 - Przeslano dane do centrum nadzoru ("ZAJETY")
    [!]   Kod 11 - Sprawdzono, czy pamiec RAM sprawna w zakresie
                   #0x6000..#0x7787
                   Nastapila utrata danych pamieci RAM
                   Sprawdzanie pamieci odbywa sie, gdy suma kontrolna pamieci
                   sie nie zgadza, np. gdy wyjeto i z powrotem wlozono uklad
                   scalony zawierajacy RAM
    [!]   Kod 12 - Zaprogramowano w EEPROM wartosci domyslne (z EPROM)
                   Nastepuje to w wyniku uzycia "DEFAULT MENU", po
                   wystapieniu bledu zapisu EEPROM lub po zmianie wersji
                   oprogramowania - szerzej o tym w nastepnym punkcie
    [PZ]  Kod 13 - Otwarto automat
    [L1]  Kod 14 - Proba oszukania automatu - podanie na linie sygnalu 16 kHz
                   dluzszego niz 4 sekundy
                   Podanie na linie ciagle trwajacego sygnalu 16 kHz powo-
                   dowaloby zaliczenie podczas calej rozmowy tylko jednego
                   impulsu taryfikacyjnego
    [!]   Kod 15 - 50 kolejnych podniesien sluchawki bez zrealizowania
                   platnego polaczenia (zablokowany wlot czytnika, uszkodzony
                   mikrofon lub wyswietlacz)
                   Za polaczenie platne jest uwazane takie, podczas ktorego
                   automat otrzyma choc jeden impuls 16 kHz, jesli wiec ktos
                   ustawi "TAXATION MENU"/"16 KHz" na "Disabled", automat
                   jest na 16 kHz gluchy i przy okazji nie odblokowuje
                   mikrofonu przy probach wykonywania normalnych platnych
                   polaczen, w zwiazku z czym kod ten zostanie po 50 probach
                   takich polaczen ustawiony
    [L1]  Kod 16 - Automat odlaczony od linii
    [L1]  Kod 17 - Zbyt niska wartosc pradu linii
    [L1]  Kod 21 - Zablokowany przycisk klawiatury
    [L1]  Kod 22 - Zablokowany przycisk Redial
    [L1]  Kod 23 - Uszkodzony odbiornik impulsow 16 kHz
    [L1]  Kod 25 - Obnizone napiecie akumulatora
    [L1]  Kod 27 - Uszkodzony obwod mikrofonu
    [-]   Kod 28 - Uszkodzony modem DTMF (do komunikacji z centrum nadzoru)
    [!]   Kod 29 - Uszkodzony uklad zegara Philips
    [L1]  Kod 31 - Blad zapisu pamieci EEPROM
    [-L1] Kod 32 - Uszkodzone przetworniki A/D, kod ustawiany rowniez, gdy
                   automat podjal probe skasowania calej karty naraz (gdy
                   probowano uzyc karty falszywej - ponownie napelnionej
                   lub probowano uzyc np. karty Programming w wersji 5.8)
    [!]   Kod 33 - Bledny rozkaz z centrum nadzoru - patrz rozdzial
                   "Komunikacja z centrum nadzoru"
    [!]   Kod 34 - Rejestr CONFIG <> #09
                   O tym bedzie w jednym z nastepnych punktow
    [!]   Kod 35 - Nastapilo przepelnienie jednej ze statystyk
                   Chodzi o statystyki ilosci polaczen lokalnych,
                   miedzymiastowych, bezplatnych, przychodzacych itd.
    [-]   Kod 36 - Blad konca rozmowy telefonicznej
    [!]   Kod 37 - Uszkodzony nadajnik 12kHz dla teletaksy
    [L1]  Kod 81 - Blad wymiany informacji miedzy plyta glowna i modulem
                   czytnika (np. niekompatybilnosc wersji oprogramowania
                   plyty glownej i czytnika)
                   Ustawiany, gdy nie udalo sie z karty skasowac zadanej
                   liczby jednostek
    [L1]  Kod 82 - Brak odpowiedzi czytnika (odlaczony kabelek polaczeniowy)
    [L1]  Kod 83 - Proba oszustwa wykryta optycznie; czujniki optyczne
                   wykryly probe wyjecia karty przed zakonczeniem rozmowy
    [L1]  Kod 84 - Proba oszustwa wykryta magnetycznie; glowica magnetyczna
                   wykryla probe wyjecia karty przed zakonczeniem rozmowy
    [L1]  Kod 85 - Proba oszustwa wykryta mechanicznie; czujniki ruchu bebna
                   wykryly probe wyjecia karty przed zakonczeniem rozmowy
    [L1]  Kod 86 - Uszkodzony jeden z podzespolow czytnika
    [L2]  Kod 87 - Po podniesieniu sluchawki wykryto karte zablokowana
                   w czytniku
    [!]   Kod 88 - W chwili wciagania karty karta zablokowala sie w czytniku
    [!]   Kod 89 - Probowano uzyc karty z niewlasciwej (zablokowanej) serii
    [!]   Kod 91 - Nieprawidlowe dzialanie glowic (glowice zuzyte)
                   Kod ten jest ustawiany, gdy procent kart nieodczytanych
                   przekroczy ustalony prog
    [!]   Kod 92 - 30 kolejnych kart nieodczytanych
    [!]   Kod 93 - Blad otwarcia lub zamkniecia szczeliny wlotowej czytnika
    [L1]  Kod 95 - Wystapila proba skasowania naraz 254 lub 255 jednostek

N13.POWODY ZGLOSZENIA DO CENTRUM NADZORU (C90)
    Ponizej przedstawilem wykaz kodow, o ktorych wspomnialem w poprzednim
    punkcie. Przy wiekszosci z nich umiescilem odpowiadajace im kody diag-
    nostyczne (dziesietnie), ktorych opis zawarty jest powyzej. Opisane sa
    tylko te kody, ktore w kodach diagnostycznych nie posiadaja swojego
    odpowiednika.

    Powod 01 - Ustawiany w celu wymuszenia przeslania danych, gdy
               liczba rozmow PLATNYCH przekroczy "Calls Num."
    Powod 02 - Ustawiany w celu wymuszenia przeslania statystyk,
               jesli ktoras zostala przepelniona (Code 35) lub grozi
               przepelnieniem - przekroczyla 40000 dziesietnie
    Powod 03 - Rozpoczeto rozmowe platna, a poprzednio automat
               byl uszkodzony (informacja o powrocie do stanu
               sprawnosci)
    Powod 04 - Code 13
    Powod 05 - Code 15
    Powod 06 - Code 12
    Powod 07 - Code 11
    Powod 09 - Code 89
    Powod 11 - Code 91
    Powod 12 - Code 92
    Powod 13 - Code 33
    Powod 14 - Code 34
    Powod 15 - Code 93
    Powod 16 - Ustawiany w celu wymuszenia przeslania danych
               po przekroczeniu limitu L1 lub L2 liczby zdarzen
               (patrz punkt wyzej)
    Powod 17 - Code 88
    Powod 19 - Code 29
    Powod 20 - Meldunek okresowy - kod ustawiany tylko, jesli
               w buforze nie ma innych kodow, a poprzednia proba
               komunikacji z centrum nadzoru nie powiodla sie
    Powod 21 - Code 37

N14.PROGRAMOWANIE WARTOSCI DOMYSLNYCH W EEPROM
    Programowanie to nastepuje w trzech przypadkach:
      - po uzyciu "DEFAULT MENU"
      - po wymienie EPROMu na inna wersje
      - po wystapieniu bledu programowania EEPROM

    W pierwszych dwoch przypadkach programowane sa domyslne wartosci:

      - tablica dopuszczonych serii kart - wszystkie serie sa dopuszczone
      - listy numerow "FREE NUMBER", "LOCK NUMBER" i "NATIONAL NUM."
        (pierwsze dwa rodzaje moga zawierac do czterech cyfr, ostatni tylko
        jedna cyfre) - puste, tzn. ich zaprogramowanie wykasuje wszystkie
        dotychczas wpisane wartosci
      - pozostale ustawienia "DIAL MENU" (pozostale, bo o "NATIONAL NUM."
        napisalem juz wyzej)
      - ustawienia "C90 MENU" i "TAXATION MENU"
      - numer wersji EPROMu

    Natomiast w przypadku bledu programowania EEPROM programowane jest
    to, co powyzej, ale z wylaczeniem:

      - "C90 MENU": "NUM. TELEPHON", "NUM. C90" i "ENABLE C90"
      - "DIAL MENU": "DIAL TYPE", "DIAL FREQ."

    Rozdzial ten pisze rowniez po to, aby zwrocic uwage na fakt, ze nieopatrz-
    ne uzycie "DEFAULT MENU" lub wymiana EPROMu na inna wersje spowoduje wyka-
    sowanie numerow bezplatnych, a wiec przez nas ktos moze nie dodzwonic sie
    na pogotowie. Co wiecej, nikt nie dodzwoni sie na pogotowie rowniez uzywa-
    jac karty, gdyz numery bezplatne nie przysylaja 16 kHz, a po wykasowaniu
    listy numerow bezplatnych wszystkie sa uwazane za platne i w zwiazku z tym
    mikrofon sie odblokowuje dopiero po otrzymaniu 16 kHz. Tak wiec nikt nas
    nie uslyszy. Dobrze jest wiec wpisac przynajmniej numery alarmowe, a w
    przypadku wymiany EPROMu i nieposiadania karty serwisowej mozna zmienic
    w pliku z oprogramowaniem bajt #0x0049 (dla oprogramowania od 2.6, przez
    5.8 do 3.0 wlacznie) na #0x00 (w tym przypadku nieistotne, czy plik jest
    zakodowany czy nie), co wylaczy sprawdzanie wersji i zablokuje zaprogramo-
    wanie z powodu niezgodnosci ustawien domyslnych. Stosowane przez niekto-
    rych modyfikowanie naglowka pliku nie zapobiega wykryciu niezgodnosci
    wersji - tak naprawde w ogole nie ma sensu i nic pozytecznego nie daje!
    Adresy danych w pamieci EEPROM we wszystkich wersjach od 2.6 wlacznie
    w gore sa prawie na pewno takie same, tak wiec pozostawienie starych
    ustawien dla nowej wersji nie powinno spowodowac bledow w dzialaniu.
    Natomiast wersje 1.8 i 2.0 nie wygladaja na kompatybilne z poprzednimi.

N15.TARYFIKACJA
    Automat posiada statystyki taryfikacji, ktore mozna obejrzec
    w "COUNTER MENU". Na poczatku kazdej rozmowy zwiekszany jest
    licznik jednej z pozycji:

    a) "LOCAL CALL" - w przypadku, kiedy rozmowa nie zostanie
       zakwalifikowana jako zadna z ponizszych.

    b) "NATIONAL CALL" - jesli wybrany numer zaczyna sie na cyfre
       wpisana jako ktoras z pozycji "NATIONAL NUM."

    c) "INTERNAT CALL" - jesli wybrany numer zaczyna sie od "00" -
       nie ma mozliwosci zmiany tych cyfr poprzez zadne menu.

    d) "ENTRY CALL" - oczywiscie gdy ktos dzwoni do automatu.

    e) "FREE CALL" - jesli wybrany numer znajduje sie na jednej z pozycji
       "FREE NUMBER". Statystyka ta jest bardzo podatna na zafalszowania.
       Statystyki dotyczace liczby rozmow platnych sa zwiekszane w chwili ot-
       rzymania przez automat pierwszego impulsu 16 kHz, tak wiec w momencie
       faktycznego nawiazania polaczenia. Natomiast przy rozmowach bezplatnych
       16 kHz normalnie nie przychodzi, dlatego licznik ten jest zwiekszany
       natychmiast po wybraniu z klawiatury numeru nalezacego do ktorejs z po-
       zycji "FREE NUMBER". Jesli polaczenie nie dojdzie do skutku, bo np. nu-
       mer bedzie zajety albo rozlaczymy sie przed nawiazaniem polaczenia, to
       statystyka i tak zostanie zwiekszona. Jak wiadomo, numer bezplatny ma
       maksymalnie 4 cyfry i po jego wybraniu blokowana jest klawiatura,
       z jednym wyjatkiem - po "0800", jesli znajduje sie w jednej z pozycji
       "FREE NUMBER", mozna wybrac jeszcze 6 cyfr. Numeru, po ktorym mozna
       bedzie jeszcze wybrac cyfry, ani liczby tych cyfr, nie mozna zmienic
       poprzez zadne menu. Mozna jednak zmodyfikowac odpowiednie bajty konfi-
       guracyjne w oprogramowaniu, zeby bylo to np. "0700" i zeby mozna bylo
       jeszcze po nim wybrac 80 cyfr... Zeby to jednak zadzialalo, trzeba
       jeszcze wpisac "0700" jako "FREE NUMBER". Pojawia sie jeszcze jeden
       problem. Standardowo po numerze bezplatnym automat na pierwszy sygnal
       16 kHz sam odsyla do centrali 12 kHz dla teletaksy, jesli jest wlaczona
       opcja "CHECK TAX" w "TAXATION MENU", i nie zrywa polaczenia. Normalnie
       to wystarcza, bo gdy dzwonimy pod rzeczywiscie bezplatny numer, centra-
       la nie wysyla sygnalow 16 kHz do automatu. Jesli zadzwonimy pod "0700",
       sygnaly 16 kHz beda przychodzic co kilka sekund, wiec dlugo i tak nie
       porozmawiamy... chyba ze znowu zmienimy odpowiedni bajt konfiguracyjny,
       aby po bezplatnym numerze 12 kHz odbijane bylo do centrali np. 200 ra-
       zy, albo lepiej w nieskonczonosc :) No, jeszcze trzeba znalezc automat,
       gdzie "0700" nie jest zablokowane na poziomie centrali, ale okazuje
       sie, ze TPSA ma spore trudnosci z blokowaniem "0700" na centralach
       analogowych, gdyz wiaze sie to z zablokowaniem wszystkich numerow
       zaczynajacych sie od zera... Wiec nic nie blokuja. Ale wrocmy do
       poprzedniej mysli. Okazuje sie, ze teletaksa w zasadzie jest zbedna,
       gdyz automat i tak sam zrywa polaczenie w chwili, kiedy wyczerpie sie
       limit automatycznie odbijanych 12 kHz (ale dzieje sie tak tylko w wers-
       ji 2.9 i 3.0!). Poniewaz dla rozmowy przychodzacej limit ten jest zaw-
       sze rowny zero, automat zrywa polaczenie w chwili otrzymania pierwszego
       sygnalu 16 kHz. Jedyne sensowne zastosowanie teletaksy opisalem w roz-
       dziale "Inne (niz 2.9) wersje oprogramowania". A odnosnie blokowania
       klawiatury, zmiana innego jeszcze bajtu konfiguracyjnego powoduje, ze
       klawiatura nie jest blokowana nigdy, czyli ani po numerze bezplatnym,
       ani normalnie platnym, dzieki czemu mozna wybrac np. numer wewnetrzny.

    W czasie trwania rozmowy po kazdym sygnale 16 kHz zwiekszany jest wlasciwy
    licznik sposrod "LOCAL PULSE", "NATIONAL PULSE" i "INTERNAT PULSE". Licz-
    nik ten zwiekszany jest za kazdym razem o wartosc Tax Value. Wyjatkiem
    jest jednak uzycie karty w jednostkach Tax Value - wtedy licznik zwiek-
    szany jest zawsze o 1. Istnieje (niewykorzystana) mozliwosc mnozenia
    przez odpowiednia stala wartosci Tax Value osobno dla rozmow lokalnych,
    krajowych i miedzynarodowych. Tak wiec, mimo, ze Tax Value wynosi np. 2,
    przy rozmowach miedzynarodowych kasowane moze byc kazdorazowo np. 3 razy
    wiecej jednostek, czyli przy kazdym 16 kHz kasowane bedzie 6 jednostek.
    Dzieki temu centrala moze wysylac 16 kHz z taka sama czestotliwoscia nie-
    zaleznie od rodzaju numeru, a automat, zaleznie od rodzaju rozmowy, sam
    bedzie kasowal odpowiednia liczbe jednostek przy kazdym 16 kHz. Przy kaz-
    dym sygnale 16 kHz zwiekszany jest o 1 rowniez licznik "TAXATION". Mowiac
    "licznik" dokonalem pewnego uproszczenia, gdyz naprawde kazda pozycja za-
    wiera dwa liczniki: "Total" i "Partial". Licznik "Total" zawiera calkowita
    liczbe rozmow/jednostek taryfikacyjnych, natomiast licznik "Partial" jedy-
    nie liczbe liczona od ostatniej komunikacji z centrala. W pamieci RAM
    znajduje sie tez ciekawa tablica zawierajaca 1024 liczniki rozmow. Przy
    rozpoczeciu kazdej platnej rozmowy jeden z licznikow jest zwiekszany,
    a ktory, to zalezy od... numeru serii (ale nie numeru karty w serii)
    uzywanej do rozmowy karty! Tablicy tej nie mozna obejrzec poprzez zadne
    menu, za to jest wysylana po kawalku do centrali przy kazdej z nia komu-
    nikacji. Poza tym oprogramowanie jest zabezpieczone przed wpisaniem jako
    Tax Value wartosci 0. Wpisanie zera jest niemozliwe, ale gdyby jednak,
    np. na skutek bledu, sie udalo, platna rozmowa zostanie przerwana natych-
    miast po jej rozpoczeciu. A teraz o tym, co sie stanie, gdy uzyjemy karty,
    dla ktorej liczba jedynek/jednostke wynosi 1, czyli na karcie moze byc
    maksymalnie 200 jednostek. Otoz, gdy wlozymy taka karte do automatu, nor-
    malnie zobaczymy "KREDYT". Jednak przy probie skasowania pierwszej jed-
    nostki ukaze sie nagle "KARTA ZUZYTA" i karta zostanie cala skasowana...

N16.KOMUNIKACJA Z MODULEM CZYTNIKA
    Jak wiadomo, fizycznie jednostki z karty kasowane sa dopiero przy jej
    wyrzucaniu z czytnika. Mimo to, przy kazdym sygnale 16 kHz odpowiednia
    liczba jednostek (normalnie rowna Tax Value) jest przesylana do modulu
    czytnika. Modul czytnika sumuje kolejno otrzymywane wartosci i wynikowa
    liczba jednostek jest kasowana z karty przy jej wyrzucaniu. Przy kazdej
    takiej komunikacji wyslana do czytnika wartosc jest przez czytnik zwra-
    cana w celu weryfikacji. I tak, na przyklad, jesli Tax Value wynosi 2
    i do czytnika wyslano 2, ale czytnik zwrocil tylko 1, to nastepnym
    razem do czytnika zostanie wyslana, zamiast 2, wartosc 3.

N17.JAK ZROBIC NIEKASOWALNA KARTE
    Od wersji softu 2.8 istnieje mozliwosc zrobienia karty, ktorej niebieski
    Urmet nie bedzie potrafil skasowac! Niestety, nie da sie takiej karty
    wykorzystac do dzwonienia za darmo :( Po pierwsze, jak wiadomo, soft
    od wersji 2.8 kasuje karty z podzielnikiem rownym #1 (odpowiadajacym
    kartom o nominalnej liczbie jednostek 200) - normalnie wyswietlany jest
    "KREDYT", ale po przyjsciu pierwszego impulsu taryfikacyjnego kasowana
    jest cala karta. Po drugie mozna zrobic karte o wiekszej niz nominalna
    liczbie jednostek, tak jak to opisalem w punkcie "Tablice kart" - metode
    produkcji takich kart wymyslil Shadow. Po trzecie czytnik niebieskiego
    Urmeta nie potrafi skasowac naraz wiecej niz 200 jednostek, przy czym
    "naraz" nalezy rozumiec jako kasowanie z uzyciem pojedynczego rozkazu
    kasowania, bo mozna skasowac np. 250 jednostek wysylajac 10 rozkazow
    kasowania po 25 jednostek kazdy. Teraz robimy karte z podzielnikiem #1
    (karta 200) i nagrywamy na niej wiecej niz 200 jednostek, np. 250. Wkla-
    damy karte do automatu i widzimy na wyswietlaczu wartosc kredytu. Wybie-
    ramy numer i po przyjsciu 16 kHz automat probuje skasowac naraz cala kar-
    te, wypisuje "KARTA ZUZYTA" i ja wyrzuca, ale poniewaz karta ma wiecej
    niz 200 jednostek, czytnik zwraca tylko blad i nie kasuje karty! Wkladamy
    teraz karte z powrotem do automatu i... pojawia sie "KARTA ZUZYTA" i au-
    tomat wyrzuca karte... Ale idziemy do innego automatu i znowu widzimy
    250 jednostek na wyswietlaczu! Okazuje sie, ze w pierwszym automacie
    karta zostala wpisana na liste kart, z ktorych nie udalo sie skasowac
    pelnej jednostki Tax Value i automat ja probuje kasowac i wyrzuca przy
    probie drugiego i kolejnego uzycia, ale na innym automacie karta wyswiet-
    la znowy swoja rzeczywista ilosc jednostek. Efekt tej zabawy jest taki,
    ze ustawiane sa kody diagnostyczne 32 (proba skasowania calej karty) i 81
    (blad wymiany informacji miedzy plyta glowna i modulem czytnika, ustawia-
    ny, gdy nie udalo sie z karty skasowac zadanej liczby jednostek). Jezeli
    na karcie bylo 254 albo 255 jednostek, ustawiany jest kod 95 (wystapila
    proba skasowania naraz 254 lub 255 jednostek). Podsumowujac: karta taka
    jest tylko ciekawostka bez mozliwosci pozytecznego zastosowania. Wszystko,
    co napisalem w tym rozdziale, testowalem praktycznie.

N18.KOMUNIKACJA Z CENTRUM NADZORU (C90)
    Automat komunikuje sie z centrum nadzoru gdy zrealizuje liczbe rozmow
    okreslona w "CALLS NUM." w "C90 MENU" (pod uwage brane sa tylko rozmowy
    platne) lub jesli zajdzie zdarzenie, dla ktorego zaprogramowana jest
    natychmiastowa komunikacja z centrum. Jesli proba nawiazania polaczenia
    sie nie powiedzie, automat po uplywie pewnego czasu probuje ponownie.

    Podczas komunikacji automat przesyla do centrum nadzoru:

      - sume kontrolna list numerow "FREE NUMBER" i "LOCK NUMBER", wartosci
        Tax Value, tablicy numerow serii kart dopuszczonych do obiegu i tab-
 *      licy cyfr poczatkowych zablokowanych numerow - inaczej dekad (bedzie
        o tym za chwile). Tak wiec niezauwalazna zmiana tych parametrow jest
        niemozliwa, chyba ze przywrocimy oryginalne wartosci przed najblizsza
        komunikacja z centrum nadzoru
      - wartosci kodow diagnostycznych "CODE"
      - jezeli automat dzwoni do centrum z powodu uzycia karty z niewlasciwej
        (zablokowanej) serii, to zamiast niektorych pozycji "CODE" przesylany
        jest numer serii tej karty i numer karty w serii
      - liczbe okreslajaca, ktory raz od czasu zainstalowania
        (lub przepelnienia licznika) automat dzwoni do centrum nadzoru
      - wartosci wszystkich licznikow z "COUNTER MENU"
      - fragment (normalnie 30 pozycji) tablicy 1024 licznikow rozmow zwiek-
        szanych w zaleznosci od numeru serii karty (ale nie numeru karty
        w serii), ktora to tablice opisalem juz w punkcie "Taryfikacja"
      - kod powodu zgloszenia do centrum nadzoru, ktorego ustawienie
        spowodowalo komunikacje z centrum

    Centrum nadzoru moze przekazywac do automatu:

      - wartosc Tax Value
      - listy numerow "FREE NUMBER" i "LOCK NUMBER"
      - numery serii kart dopuszczonych do obiegu (przy probie uzycia karty
        z zablokowanej serii zatrzymuje sie ona na chwile tak jak karta ser-
        wisowa, po czym wypada bez zadnego napisu na wyswietlaczu, ustawiany
        jest tez kod diagnostyczny 89)
      - date i czas systemowy dla zegara Philips
      - tablice, ktorej kolejne pozycje odpowiadaja kolejnym cyfrom poczat-
        kowym numerow, a ostatnia pozycja odpowiada za numery miedzynarodowe
        ("00"). Ustawienie pozycji w tablicy blokuje wszystkie (z wyjatkiem
        wpisanych jako "FREE NUMBER") numery zaczynajace sie od cyfry, ktora
        odpowiada tej pozycji. Dla przykladu, jesli w tablicy ustawimy pozyc-
        je odpowiadajaca cyfrze "5", wszystkie numery zaczynajace sie na "5"
        zostana zablokowane! Nie ma mozliwosci zaprogramowania tego z poziomu
        menu. Inaczej mowiac tablica ta sluzy do konfiguracji aktywnych de-
        kad.

    W uzywanej przez TPSA wersji centrum nadzoru (C90) istnieje blad uniemoz-
    liwiajacy wprowadzanie jako pozycje "LOCK NUMBER" numerow 4-cyfrowych!
    Nawet wiec jesli monter wpisze za pomoca karty serwisowej numer 4-cyfrowy,
    podczas najblizszej komunikacji z centrum nadzoru zostanie stwierdzona
    niezgodnosc sum kontrolnych miedzy lista numerow automatu i centrum nadzo-
    ru i automat otrzyma z powrotem liste numerow zablokowanych z centrum nad-
 *  zoru - maksymalnie 3-cyfrowych! Ostatnio jednak blad ten zostal (przynaj-
 *  mniej w czesci kraju) naprawiony.

    Do automatu z centrum nadzoru moze byc wysylane 6 rozkazow, i co ciekawe,
    ich lista jest taka sama dla wszystkich wersji od 2.6 wlacznie (starszych
    nie badalem). Tak wiec ewentualny bledny rozkaz jest spowodowany raczej
    bledem transmisji niz niezgodnoscia wersji oprogramowania automatu
    i centrum nadzoru.

    Oto rozkazy z centrum nadzoru:

      Rozkaz 0x00 - Nic nie robi
      Rozkaz 0x01 - Programuje date i czas systemowy
      Rozkaz 0x02 - Programuje Tax Value, numery serii kart dopuszczonych do
                    obiegu, tablice cyfr poczatkowych zablokowanych numerow
 *                  (tablice zablokowanych dekad), listy numerow "FREE NUMBER"
                    i "LOCK NUMBER"
      Rozkaz 0x03 - Programuje to co powyzej oraz date i czas systemowy
      Rozkaz 0x04 - Programuje Tax Value
      Rozkaz 0x05 - Programuje Tax Value oraz date i czas systemowy

    Jako parametr rozkazu przekazywana jest informacja, czy po udanej
    komunikacji nalezy "uporzadkowac" rozne zmienne, czyli:

 *    - przesunac wskaznik na kolejne przeznaczone do wyslania 30 elementow
        tablicy 1024 licznikow rozmow zwiekszanych w zaleznosci od numeru
        serii karty (ale nie numeru karty w serii)
      - zwiekszyc licznik liczby polaczen z centrum nadzoru (!)
      - wyzerowac wartosci Partial licznikow statystyk polaczen
      - wykasowac przeslany juz kod powodu zgloszenia do centrum nadzoru
      - wyczyscic licznik platnych rozmow od ostatniego polaczenia
        z centrum nadzoru, ktory po przekroczeniu wartosci "CALLS NUM."
        spowoduje kolejna komunikacje
      - ustawic kod diagnostyczny 01 (Przeslano dane do centrum nadzoru)

    Jak widac, mozliwe jest podszycie sie pod centrum nadzoru bez wykrycia
    tego przez prawdziwe, gdyz mozemy nie porzadkowac podanych wyzej zmien-
    nych. Po drugie mozna wyslac do automatu rozkaz #00, ktory nic nie robi,
    ale uporzadkowac po nim zmienne (normalnie sluzy on do poszukiwania auto-
    matow, ktore dawno sie nie meldowaly do centrum nadzoru). Z powyzszego
    opisu wynika rowniez, ze jesli po dzwonieniu przy uzyciu karty serwisowej
    nie przywrocimy poprzednich ustawien automatu, to choc mozna mu zdalnie
    przywrocic zawartosc "FREE NUM. MENU" (i tak sie wlasnie dzieje - jesli
    suma kontrolna numerow bezplatnych sie nie zgadza, programowane sa orygi-
    nalne przy najblizszej komunikacji z centrum nadzoru), to odblokowanie
    opcji "16 KHz" jest niemozliwe! Wtedy przychodzi monter i przy okazji
    instaluje soft 3.0...

N19.SPOSOB NA UNIEMOZLIWIENIE KOMUNIKACJI Z CENTRUM NADZORU
    Metoda ta pozwala zmusic automat do zapomnienia powodow zgloszenia do
    centrum nadzoru, ktore normalnie wymuszaja natychmiastowa komunikacje
    z centrum w przypadku zajscia waznych zdarzen. Dzieki niej mozemy np.
    wylaczyc komunikacje z centrum po otwarciu automatu. Ogolnie rzecz
    biorac mozna spowodowac zapomnienie dowolnych kodow powodow zgloszenia
    (opisanych w ktoryms z poprzednich rozdzialow). Metoda zostala teore-
    tycznie wymyslona przez Pita (to znaczy on jako pierwszy ja wymyslil),
    a nastepnie sprawdzona przeze mnie w oprogramowaniu oraz (wielokrotnie)
    praktycznie. Aby spowodowac zapomnienie wspomnianych kodow, nalezy za-
    programowac w "C90 MENU" pozycje "ENABLE C90" na "Disabled", a nastepnie
    ponownie na "Enabled". Przy zmianie tego ustawienia zerowana jest liczba
    kodow powodow zgloszenia i jedyny slad zdarzen pozostaje w "DIAGNOSTIC
    MENU". Wymazanie "DIAGNOSTIC MENU" i uzycie opisywanej metody spowoduje
    wiec, ze w centrum nadzoru nikt nigdy nie dowie sie o zaistnialych zda-
    rzeniach i najwyzej zauwazy wyzerowanie kodow diagnostycznych (czyli po-
    mysli, ze ktos bawil sie karta Programming). Jak wynika z softu, istnieje
    rowniez drugi sposob, choc mniej praktyczny, na osiagniecie powyzszego
    celu. Nalezy w "C90 MENU" zaprogramowac pozycje "NUM. C90" na pusta (trzy-
    mamy Redial przez 5 sekund), a nastepnie ponownie wejsc do "NUM. C90"
    i zaprogramowac wlasciwy numer do centrum nadzoru. Oczywiscie sprawa
    komplikuje sie, gdy zamieniamy EPROM na 5.8. Do uruchomienia menu polecam
    wtedy metode opisana przez Slammera w slammer.faq.

N20.SPECIAL TEST MODE
    Poprzez przelaczenie jednej ze zworek na plycie glownej procesor jest
    uruchamiany w specjalnym trybie, ktory sie nazywa "Special Test Mode"
 *  (standardowo procesor pracuje w trybie "Normal Expanded Mode"). Procesor
    68HC11 posiada rejestr o nazwie CONFIG. W rejestrze tym wykorzystywane
    sa cztery mniej znaczace bity:
      - NOSEC - ustawienie go wylacza zabezpieczenie pamieci EEPROM i RAM
        przed niepowolanym dostepem; ustawiony na 1
      - NOCOP - ustawienie go wylacza COP Watchdog System - system ten
        zawiera licznik, ktory zwieksza sie samoczynnie i po osiagnieciu
        pewnej wartosci resetuje procesor; oprogramowanie zeruje co jakis
        czas ten licznik, jednak gdy sie zawiesi, licznik przekroczy wartosc
        graniczna i procesor zostanie poprzez zresetowanie odwieszony;
        ustawiony na 0
      - ROMON - ustawienie go wlacza wbudowana pamiec ROM procesora;
        ustawiony na 0
      - EEON - ustawienie go wlacza wbudowana pamiec EEPROM procesora;
        ustawiony na 1
    Jak widac, dla prawidlowej pracy automatu rejestr CONFIG musi miec
    wartosc 9. Uruchomienie procesora w "Special Test Mode" powoduje
    sprawdzenie wartosci tego rejestru i ewentualne ustawienie na 9,
    uzywane jest to przy wymianie procesora w automacie na nowy.
    Po uruchomieniu automatu pojawia sie:
    - "CONFIG OK" - gdy rejestr CONFIG ustawiony jest prawidlowo,
    - "CONFIG CPU" - gdy rejestr CONFIG ma nieprawidlowa wartosc.
      W tym momencie rejestr CONFIG jest programowany, a po zakonczeniu
      programowania pojawia sie: "PRESS RESET" i procesor zawiesza prace
      czekajac na zresetowanie.

N21.BUFORY KLAWIATURY
    Automat posiada dwa bufory klawiatury. W pierwszym pamietane sa
    wszystkie klawisze, wlacznie z "*", "#" i Redial, a w drugim tylko
    cyfry. Obydwa bufory maja miejsce na 32 znaki. W zwiazku z tym
    klawisz Redial nie dziala, gdy wprowadzony numer jest dluzszy niz
    32 cyfry.

N22.INNE (NIZ 2.9) WERSJE OPROGRAMOWANIA
    Dostepne w sieci zawartosci EPROMow, choc w "SW VERSION MENU"
    wyswietlaja numery wersji tylko w postaci np. 2.9, posiadaja
    zakodowane dokladniejsze informacje na swoj temat (spis wedlug
    kolejnosci wprowadzania wersji do uzytku):

      - 1.8 -> brak   22.01.1993
      - 2.0 -> 2.01   08.04.1993
      - 2.6 -> 2.62   22.06.1995
      - 2.7 -> 2.71   13.12.1995
      - 2.8 -> 2.81   10.05.1996
      - 2.9 -> 2.90   17.07.1997
      - 5.8 -> 5.81   10.05.1996 !!?? - identycznie jak w 2.8
      - 3.0 -> 3.00   17.02.2001

    Jedyna roznica miedzy wersja 2.9 i 2.8 jest taka, ze do 2.9 wprowadzono
    liczbe automatycznie odbijanych sygnalow 12 kHz po numerze bezplatnym,
    po przekroczeniu ktorej automat zrywa polaczenie, nawet jesli teletaksa
    jest nieobecna. Polaczenie nie jest jednak zrywane, gdy automat jest
    nieczynny (a mozna przeciez wtedy czasami dzwnic na numery bezplatne).
    W wersji 2.8 natomiast nie bylo zadnego limitu, tak wiec korzystanie
    z karty serwisowej do rozmow bylo ulatwione o tyle, ze nie trzeba
    bylo blokowac opcji "16 KHz" w "TAXATION MENU". Tu wlasnie nasuwa sie
    jedyne sensowne zastosowanie teletaksy - jezeli zablokujemy opcje
    "16 KHz", automat bedzie ignorowal sygnaly 16 kHz, a wiec nie bedzie
    odsylal centrali 12 kHz i teletaksa zerwie polaczenie. W wersji 2.8
    problem taki nie istnial, gdyz, jak juz napisalem (a wczesniej napisal
    Hrabia), blokowanie "16 KHz" nie bylo konieczne.

    Wersja 2.7 (i starsze) nie kasuje kart z podzielnikiem rownym #1 (maksy-
    malnie 200 jednostek) i pozwala sie oszukiwac na "rozmowe przychodzaca".
    Poza tym posiada blad, na ktory zwrocil mi uwage Nol, a ktory polega
    na tym, ze po zaprogramowaniu w EEPROMie wartosci domyslnych z EPROMu,
    na przyklad poprzez uzycie "DEFAULT MENU" (szerzej o tym wyzej w punkcie
    "Programowanie wartosci domyslnych w EEPROM"), jako pierwsza z pozycji
    "NATIONAL NUM." programuje sie cyfra "8" zamiast "0". Blad ten wystepuje
    takze we wszystkich wersjach starszych niz 2.7.

    Wersja 5.8 jest oparta na 2.8 (do tego stopnia, ze nawet daty w naglowku
    nie zmieniono...). Jak wszyscy wiedza, kasuje ona karty serwisowe ze
    starszych wersji. Pojawila sie nowa karta serwisowa Check58, a inne karty
    serwisowe nie istnieja. Poza tym, poniewaz w wersji 2.8, na ktorej oparta
    jest 5.8, nie istnieje ograniczenie liczby 12 kHz odsylanych do centrali
    po 16 kHz dla numeru bezplatnego i automat w zwiazku z tym nie zrywa po-
    laczenia, teoretycznie mozliwe jest wybranie numeru bezplatnego zanim po-
    jawi sie dialtone i pozniej, po pojawieniu sie dialtone, wybranie wlas-
    ciwego numeru za pomoca tone-dialera. Jednak obecnie, na cyfrowych cent-
    ralach, opoznienie dialtone po podniesieniu sluchawki jest malo realne,
    a jesli juz sie zdarzy, po chwili pojawia sie nie dialtone, a sygnal za-
    jetosci. Centrala analogowa z kolei czesto nie przyjmuje DTMF, tak wiec
    w praktyce metoda ta ma nikle szanse zastosowania. Charakterystyczna rze-
    cza jest odziedziczony po wersji 2.8 napis "USZKODZONY" (w miejsce napisu
    "NIECZYNNY" z wersji 2.9), co mozna w prosty sposob wykorzystac do roz-
    roznienia najpopularniejszych obecnie wersji oprogramowania: 2.9 od 5.8,
    szerzej o tym mozna przeczytac na stronie phreak.hack.pl. Poza tym nie
    zdradzilem jak dotad pewnej istotnej i interesujacej rzeczy, ale wielu
    ludzi juz dawno na to wpadlo (niektorzy nie calkiem swiadomie, naczytali
    sie bardzo starych tekstow i nie wiedzieli, ze pewne rzeczy sa dawno nie-
    aktualne :)). Mianowicie w wersji 5.8 z powrotem dziala metoda darmowego
    dzwonienia na "rozmowe przychodzaca"! Chcialbym tu zaznaczyc, ze wersja
    5.8 jest bezposrednia przerobka wersji 2.8, a w wersji 2.8 metoda ta nie
    dzialala!!! Wniosek jest taki, ze osoba przerabiajaca soft celowo przyw-
    rocila ta metode do lask zmieniajac jeden z bajtow konfiguracyjnych!
    Wlasnie to rzucilo mi sie w oczy podczas porownania softu 5.8 i 2.8 i nie
    musze chyba opisywac mojego zdumienia, gdy pierwszy spotkany automat
    z softem 5.8 przypomnial mi bardzo dawne czasy :)) Cala wiec kosztowna
    operacja wymiany oprogramowania stracila sens zanim sie jeszcze zaczela
    i spowodowala tylko ulatwienie w dzwonieniu za darmo, bo o telefon komor-
    kowy znacznie latwiej dzis niz o karte serwisowa... I byc moze dlatego do
    najnowszej wersji (3.0) przylozono sie naprawde solidnie i dopilnowano,
    aby nie miala juz zadnych takich pulapek...

    Wersja 3.0 to najnowszy wynalazek, jest ona najlepiej zabezpieczona przed
    naduzyciami. Jest to zupelnie nowa kompilacja, a nie przerobka ktorejs
    z poprzednich wersji. Zmiany i zabezpieczenia dotyczace kart serwisowych
    (bardzo daleko idace) opisalem w rozdziale "Karty serwisowe w wersji
    3.0". Druga bardzo wazna zmiana miala na celu uniemozliwienie korzystania
    z kart o nominalach 50 i 100 jednostek, w praktyce jednak uniemozliwila
    korzystanie z kart, ktore posiadaja wiecej niz 25 jednostek, niezaleznie
    od ich rodzaju. Innymi slowy mozliwe jest uzywanie karty 100-jednostkowej,
    na ktorej pozostalo mniej lub dokladnie 25 jednostek, natomiast niemozliwe
    jest uzywanie karty nagranej z podzielnikiem odpowiadajacym karcie 25-jed-
    nostkowej, ale posiadajacej 26 jednostek (zwiekszona liczba magnetycznych
    jedynek w trzeciej czesci karty - metoda opracowana przez Shadowa :)).
    Gdy karta posiada wiecej niz 25 jednostek, zatrzymuje sie na chwile tak
    jak karty serwisowe, po czym jest wyrzucana bez zadnego napisu na wyswiet-
    laczu. Karty z podzielnikiem odpowiadajacym karcie 200-jednostkowej (ale
    posiadajace np. 8 jednostek, czyli mniej niz 25) zostaja zaakceptowane,
    ale sa cale kasowane przy probie skasowania pierwszej jednostki (zupelnie
    jak w wersji 2.8, 2.9 i 5.8). Nie da sie tez dzwonic metoda na "rozmowe
    przychodzaca". Poza tym poprawiona zostala nieco obsluga ukladu zegara
    RTC (Philips) i czesciowo usuniety zostal kod odpowiadajacy za obsluge
    usunietych opcji menu. Dwie z procedur (w tym jedna zwiazana z kasowaniem
    jednostek) zupelnie zmienily miejsce w kodzie, moze dla utrudnienia ana-
    lizy porownawczej? Powrocil tez stary i nieistotny zbytnio blad polegajacy
    na tym, ze po zaprogramowaniu wartosci domyslnych w EEPROMie jako pierwsza
    z pozycji "NATIONAL NUM." w "DIAL MENU" programuje sie cyfra "8" zamiast
    "0" (o programowaniu wartosci domyslnych jest w ktoryms z powyzszych punk-
    tow). W wersji tej wystepuje tez napis "USZKODZONY", dlatego najlatwiej
    mozna ja odroznic od wersji 5.8 posiadajac karte z liczba jednostek wiek-
    sza niz 25. Ostatnia interesujaca rzecz to napis "OPEN/CLOSE DOOR", ktory
    pojawil sie przed standardowymi napisami "DEFAULT MENU", ale nie jest
    nigdzie wykorzystywany. Byc moze mial on sluzyc do dodatkowego zabezpie-
    czenia przed programowaniem wartosci domyslnych, a byc moze mial byc wys-
    wietlany po uzyciu kart serwisowych wymagajacych otwarcia i zamkniecia
    automatu... Na koniec mala uwaga praktyczna: jesli mamy karte np. 100-jed-
    nostkowa z wieksza niz 25 liczba pozostalych jednostek, to aby moc ja
    jeszcze wykorzystac, nalezy przeciac pasek magnetyczny w miejscu odpowia-
    dajacym 25 jednostkom, wtedy automat nie wezmie pod uwage zapisu poza
    przecieciem i zaakceptuje karte (za pierwszym razem karta zostanie wyrzu-
    cona jako nieczytelna, trzeba ponowic probe).

N23.NOWY CZYTNIK I OPROGRAMOWANIE DO NIEGO (3.0?)
    Ostatnimi czasy pojawila sie nowa konstrukcja czytnika wraz z nowym opro-
    gramowaniem, poki co rzadko spotykana. Nowy czytnik posiada mozliwosc
    przesuwania karty zarowno do przodu jak i do tylu - dzieki temu posiadl on
    mozliwosc fizycznego kasowania jednostek z karty na biezaco podczas roz-
    mowy (zamiast kasowac je dopiero przy wyrzucaniu karty). Dzwiek wydawany
    przez nowy czytnik rozni sie nieco od standardowego. Zgodnie z tym, co
    powiedzial mi Shadow, mozliwosc przesuwania karty w obu kierunkach musia-
    la wymusic zmiany w elektronice czytnika oraz oczywiscie w programie
    strujacym jego praca.

    Do zmian czysto software'owych nalezy zaliczyc sprawdzanie podzielnika
    karty i nieakceptowanie kart z podzielnikami odpowiadajacymi liczbie
    jednostek wiekszej od 25. Dzieki temu karty nagrane z podzielnikiem odpo-
    wiadajacym maksymalnej liczbie np. 100 jednostek, na ktorych pozostalo
    25 jednostek lub mniej, nie sa juz akceptowane (tak jak mialo to miejsce
    przy starym czytniku i programie plyty glownej 3.0) - dzialanie to zostalo
    wymierzone w osoby nagrywajace karty na czesciowo zniszczonych nosnikach.
    Druga wazna zmiana to wprowadzenie dodatkowego algorytmu sprawdzania pra-
    widlowosci zapisu kart - dzieki temu wiekszosc kart nagrywanych prywatnie
    przestala byc akceptowana, dotyczy to nawet kart zielonych prawidlowo
    dzialajacych na automatach srebrnych (o kartach zielonych jest napisane
    w dziale o srebrnym Urmecie). Nalezy dodac, ze mimo wprowadzonych zmian
    mozliwe jest korzystanie nie tylko z kart zielonych, ale i czerwonych -
    oczywiscie tych, ktorych zapis jest zgodny w wprowadzonym nowym algoryt-
    mem. Byc moze wspomniany nowy algorytm to nic innego jak wbudowana w czyt-
    nik aktualna biala lista, zawierajaca dozwolone zakresy numerow kart -
    choc to akurat jest malo realne, gdyz biala lista powinna byc jednakowa
    zarowno dla automatow niebieskich, jak i dla srebrnych.

N24.NAPISY
    Jest jeszcze kilka napisow (oprocz znanych powszechnie), ktore nie
    zostaly omowione ani powyzej, ani u Hrabiego w menu.txt:
      - "W NAPRAWIE"/"MAINTENANCE" - takie dwa napisy pojawiaja sie na
        zmiane po otwarciu automatu, a po nacisnieciu "#" wyswietla sie
        menu takie, jak po uzyciu karty "Maintenance".
      - "O.S.: KO RAM" - taki napis pojawia sie, gdy pamiec RAM jest
        niesprawna lub po prostu jej ukladu nie ma w automacie.
      - "x       " - napis ten, a dokladnie 5 pikseli ulozonych w krzyzyk
        w lewym gornym rogu wyswietlacza, przestal byc zagadka! Kiedy po
        przekroczeniu liczby rozmow okreslonej w "CALLS NUM." lub zajsciu
        zdarzenia wymagajacego natychmiastowego poinformowania automat
        probuje nawiazac polaczenie z centrum nadzoru i mu sie to nie
        uda, np. z powodu zajetej linii centrum nadzoru, zapamietuje ten
        fakt i po uplynieciu pewnego czasu ponownie probuje nawiazac
        polaczenie. Wlasnie wtedy, podczas nawiazywania polaczenia,
        wyswietlany jest ten napis.
      - "DISABLED CARD" - ten napis tez jest dziwny; nie jest on w ogole
        wykorzystywany i wystepuje w zupelnie w innym miejscu programu
        niz wszystkie inne napisy. Byc moze mial byc uzywany w przypadku
        proby uzycia karty o niewlasciwym (zablokowanym) numerze serii.
      - "REMOVE CARD", "THANK YOU" - te napisy mozna obejrzec przy
        uruchamianiu pelnego menu serwisowego metoda opisana przez
        Slammera (slammer.faq) - normalnie po wyswietleniu ich polskich
        odpowiednikow automat zmienia napis lub wylacza wyswietlacz
        i wersje angieskie nie zdazaja sie wyswietlic.
      - "OPEN/CLOSE DOOR" - napis ten pojawil sie w sofcie 3.0, byc moze
        mial on sluzyc do dodatkowego zabezpieczenia przed uzyciem "DEFAULT
        MENU", a byc moze mial byc wyswietlany po uzyciu wiekszosci z kart
        serwisowych jako informacja o koniecznosci podjecia dodatkowych
        dzialan :) W efekcie koncowym nie sluzy on do niczego (nie jest
        wykorzystywany).

N25.INSTRUKCJA WYMIANY EPROMU
    Ponizsze informacje sa sprawdzone praktycznie i czesciowo oparte na dos-
    wiadczeniach Nola. Przy prawidlowym wykonaniu gwarantuja 100% niezauwa-
    zalnosci wymiany EPROMu z poziomu centrali. Otoz aby wymienic pamiec
    EPROM, nalezy przede wszystkim otworzyc automat. Dobra wiadomoscia jest
    to, ze mozemy uniknac ustawienia kodu diagnostycznego 13 oznaczajacego
    otwarcie automatu. Czujnik otwarcia znajduje sie u dolu po lewej stronie.
    Jezeli po przekreceniu zamka lekko uchylimy drzwiczki z prawej strony tak,
    zeby ich lewa krawedz dalej byla docisnieta do obudowy, mozemy przez pow-
    stala szpare wlozyc reke i odlaczyc kabelek czujnika. Jest on wpiety
    gdzies w srodku plyty glownej i jego znalezienie nie stanowi problemu.
    Po odlaczeniu czujnika automat caly czas mysli, ze jest zamkniety. W po-
    dobny sposob mozemy pozniej podlaczyc czujnik przy zamykaniu automatu.
    Nastepnie PRZY ODLOZONEJ SLUCHAWCE otwieramy drzwiczki do konca i dla
    pewnosci resetujemy automat. Teraz juz mozemy spokojnie wymienic EPROM.
    Sens tej metody jest nastepujacy: Nol dokonal slusznego spostrzezenia,
    ze przy odwieszonej sluchawce i zamknietych drzwiczkach (lub odpietym
    czujniku otwarcia :) procesor nie pracuje i automat jest uspiony. Budzi
    sie dopiero po wlaczeniu sie czujnika otwarcia drzwiczek lub podniesieniu
    sluchawki. Raz na jakis czas (rzedu godziny) budzi sie tez zeby sprawdzic,
    czy nie ma czegos do przekazania do centrum nadzoru w przypadku, gdyby
    wczesniej polaczenie z centrum nadzoru sie nie powiodlo. A wiec gdy auto-
    mat spi, mozna bez zadnych negatywnych konsekwencji wyjac EPROM i wlozyc
    nowy. Nastepnie dla pewnosci resetujemy automat, przymykamy drzwiczki tak,
    aby oszukac czujnik otwarcia, podpinamy kabelek tegoz czujnika i zamykamy
    automat. Nalezy tylko pamietac o tym, zeby sluchawka byla caly czas od-
    wieszona. I to cala filozofia :)

    Jeszcze pare rad praktycznych:

      -  Do otwierania automatow w zimie dobrze jest wziac sobie
         odmrazacz do zamka... (no i klucze :)

      -  Jezeli wymieniamy EPROM tylko na probe i chcemy pozniej
         przywrocic oryginalny, duzym ulatwieniem jest wlozenie naszego
         probnego EPROMu w podstawke do ukladow scalonych i dopiero z ta
         podstawka na plyte glowna. Kazdy, kto choc raz wymienial EPROM
         wie, ze wlozenie wszystkich nozek naraz moze byc problemem -
         podane rozwiazanie jest duzym ulatwieniem.

      -  Jezeli chcemy wymienic uklad na stale, dobrze jest pomyslec nad
         naklejka na uklad taka jak oryginalna albo przynajmniej zakleic
         okienko kwarcowe zwykla nalepka celem zapobiezenia rozprogramo-
         waniu sie EPROMu.

      -  Dobrze jest pamietac, ze przy zmianie wersji EPROMu programowane
         sa domyslne ustawienia konfiguracyjne. Co z tego wynika i jak
         z tym walczyc opisalem gdzies wyzej w rozdziale "Programowanie
         wartosci domyslnych w EEPROM".

      -  Jezeli z jakichs wzgledow potrzebujemy wlaczyc pelne menu
         serwisowe w uszkodzonym automacie (wtedy czytnik nie przyjmuje
         kart i nie da sie wlozyc Programminga), mozna do uruchomienia
         menu wykorzystac metode opisana w slammer.faq przez Slammera :)

      -  Zamiast meczyc sie z odlaczaniem kabelka czujnika otwarcia,
         mozna otworzyc automat nie zwazajac na czujnik, nastepnie dopiero
         wtedy odlaczyc czujnik, wykonac reset, wymienic EPROM, powtornie
         zresetowac automat dla pewnosci, podlaczyc kabelek czujnika
         i zamknac automat. Pozostaje tylko jeden problem - automat zechce
         zadzwonic do centrum nadzoru. Aby mu to wyperswadowac, nalezy uzyc
         metody opisanej we wczesniejszym rozdziale "Sposob na uniemozliwie-
         nie komunikacji z centrum nadzoru". Nalezy sie tylko pospieszyc, aby
         po zamknieciu automatu nie zdazyl on rozpoczac komunikacji... Dobrze
         jest wtedy wymazac tez kody diagnostyczne, zeby do centrum nadzoru
         nie trafil kod 13 (otwarcie automatu) - TPSA pomysli wtedy najwyzej,
         ze ktos bawil sie karta serwisowa. Gorzej, gdy wymieniany EPROM to
         5.8, wtedy wymazanie kodow diagnostycznych jednoznacznie sugeruje,
         ze nie zrobiono tego karta serwisowa...

N26.ZAKLOCANIE AUTOMATU TELEFONEM KOMORKOWYM
    Kiedys potrzebowalem numer automatu, wiec zadzwonilem z niego na swoja
    komorke, ktora lezala na automacie po prawej stronie nad czytnikiem.
    Kiedy komorka zaczela sie laczyc, karta nagle wypadla i automat stwier-
    dzil, ze jest zepsuty. Po dluzszym nacisnieciu widelek wszystko wrocilo
    do normy, popatrzylem wiec do kodow diagnostycznych, a tam ustawiony
    kod 84 "Proba oszustwa wykryta magnetycznie; glowica magnetyczna wykryla
    probe wyjecia karty przed zakonczeniem rozmowy". Okazalo sie, ze laczaca
    sie z siecia komorka skutecznie oglupila automat, ktory myslal, ze chce
    go oszukac. Moje szczescie polegalo na tym, ze wczesniej nigdzie z tej
    karty nie dzwonilem. Gdybym dzwonil, procesor czytnika, wiedzac, ze
    z karty nalezy przy wyrzucaniu skasowac jakies jednostki, po wystapieniu
    "proby oszustwa" skasowalby cala karte... A tak po prostu ja wyrzucil bez
    kasowania czegokolwiek. Wniosek jest stad taki, ze gdy dzwonimy uzywajac
    karty, nie powinnismy klasc swojej komorki na automacie, a zwlaszcza nad
    czytnikiem, gdyz jesli podczas naszej rozmowy ktos zadzwoni do nas na
    komorke, automat rozlaczy nas i skasuje nam przy tym cala karte. Dotyczy
    to oczywiscie tylko automatow niebieskich i zdarza sie gdzies w jednej
    piatej z nich.

N27.DOSWIADCZENIE
    Kiedys podobno dzialalo cos takiego, ze gdy kredyt dobiegal do zera
    i wlozylo sie w ramach wymiany pusta karte, to automat dawal sie oszukac.
    Nie sprawdzalem tego w starych wersjach oprogramowania, ale postanowilem
    sprawdzic cos innego: co sie stanie, gdy przy wymianie wlozy sie karte
    serwisowa? Okazalo sie, ze nie stalo sie nic specjalnego: automat zerwal
    polaczenie i wyswietlil menu...

N28.PODSUMOWANIE
    Odnosnie niebieskich automatow chyba wszystko juz zostalo wymyslone,
    a ich zywot powoli dobiega konca, choc pojedyncze egzemplarze, zwlaszcza
    w budynkach roznych firm i instytucji, pewnie jeszcze dlugo beda dawaly
    spore mozliwosci dzwonienia za darmo... :)




============ CZESC II - Urmet srebrny TPE 97/U ===============================

S1. WSTEP
    Opisane ponizej zagadnienia sa wynikiem moich prac nad softem srebrnego
    Urmeta wspieranych pomoca kolegow po fachu. Zadziwiajace, jak wiele mozna
    osiagnac w ciagu kilkunastu tygodni przy wspolpracy z paroma znajacymi sie
    na rzeczy osobami i uzywajac dobrego deasemblera, a od czasu do czasu zer-
    kajac tez do instrukcji automatu i centrum nadzoru. Jesli masz dokladniej-
    sze informacje na tematy opisane ponizej lub znalazles jakies bledy lub
    niescislosci, chetnie zamieszcze uaktualnienie.

S2. OGOLNA BUDOWA PROGRAMU
    Program plyty glownej napisany jest w jezyku wysokiego poziomu i podzielo-
    ny jest na bloki, z ktorych pierwszy blok to tzw. program bootujacy, ktory
    sprawdza integralnosc bloku glownego programu i w razie jego uszkodzenia
    moze sciagnac go z centrum nadzoru (STG97). Drugi blok to program glowny,
    jest on chroniony suma kontrolna, zawiera miedzy innymi tablice dekodujace
    dla algorytmu DES, napisy w szesciu jezykach uzywane przez automat (choc
    teoretycznie na napisy przewidziany jest osobny blok w pamieci FLASH/plik
    w centrum nadzoru) i oczywiscie wszystkie procedury do obslugi automatu.
    Uproszczone wersje wielu procedur z bloku glownego znajduja sie w bloku
    bootujacym, w zakresie pozwalajacym na komunikacje z centrum nadzoru
    i zaprogramowanie sciagnietych danych w pamieci FLASH, a takze kodowanie
    danych algorytmem DES. Pozostale bloki to dane konfiguracyjne. Kazdy blok
    moze byc osobno sciagniety z centrum nadzoru, gdzie znajduje sie w osobnym
    pliku. Dane znajdujace sie w pamieci FLASH nie sa w zaden sposob kodowane
    i nadaja sie wprost do deasemblacji. Najlepszym do tego celu narzedziem
    jest IDA - The Interactive Disassembler, a dzien wlozony w nauke tego
    narzedzia zwroci sie dnia nastepnego :) Prawde mowiac, nie wyobrazam sobie
    deasemblowania takiej ilosci kodu jakims innym prostszym deasemblerem. IDA
    mozna sciagnac ze strony Hrabiego - phreak.hack.pl. Do obslugi automatu
    uzywany jest mikrokontroler Hitachi H8-3003, posiada on przestrzen adre-
    sowa 16MB. Budowa programu jest dosc elastyczna, w pamieci RAM istnieje
    tablica adresow najwazniejszych funkcji wraz z miejscem na parametry ich
    wywolania. Tablica ta inicjalizowana jest przez program bootujacy, pozniej
    niektore funkcje sa podmieniane na bardziej rozbudowane przez program
    glowny, a pozniej uzywane sa tylko odwolania do tej tablicy (troche mi to
    przypomina tabele metod wirtualnych w programowaniu obiektowym). Tak wiec
    przejecie inicjalizacji tablicy pozwala na zamiane wywolania danej funkcji
    na inna funkcje od razu w calosci programu :) Przy rozpoczynaniu deasem-
    blacji powstaje problem od czego zaczac. Dobrym punktem zaczepienia w na-
    szym przypadku moga byc napisy wyswietlane przez automat. Niestety, proby
    wyszukania w kodzie bezwzglednych adresow napisow nie daly zadnego rezul-
    tatu, zastosowalem wiec inne podejscie. Napisy kolejnych wersji jezykowych
    przesuniete sa wzgledem siebie o staly offset, ktorego wartosc musi byc
    uzywana przez procedure zmieniajaca biezacy jezyk napisow. No i nie pomy-
    lilem sie :) W ten sposob doszedlem do procedury wyswietlajacej zadany
    napis, a wiedzac, gdzie i pod jakim warunkiem co sie wyswietla, mozna juz
    zrobic wszystko. I jeszcze jedna bardzo wazna uwaga: mikrokontroler Hita-
    chi H8-3003 posiada architekture i liste instrukcji oparte na uP Motorola
    68000, a z tego wynika bardzo wazna rzecz: kazda instrukcja ma dlugosc
    wyrazona przez parzysta liczbe bajtow i kazda instrukcja musi sie zaczynac
    pod parzystym adresem! Rowniez odczyt lub zapis zmiennej o dlugosci slowa
    lub podwojnego slowa musi nastepowac pod parzyste adresy. Zmienne o roz-
    miarze bajtu moga byc umieszczane pod adresami nieparzystymi. Jesli nie
    spelnimy tych warunkow, spowodujemy blad adresowania i prawdopodobnie
    rowniez crash systemu czytaj automatu.

S3. WYJATKI
    Ponizej znajduje sie krotki wykaz wyjatkow uzywanych przez oprogramowanie.
    Pozostale w mniej lub bardziej skomplikowany sposob nie robia dokladnie
    nic. Na poczatku wiersza znajduje sie adres wektora wyjatku, pozniej numer
    wyjatku wraz z adresem wskazywanym przez wektor wyjatku (w nawiasach kwad-
    ratowych), a na koncu krociutki opis.

      0x000000: Exception 0x00 [0x001000] - RESET

      0x000034: Exception 0x0D [0x001D22] - IRQ 1 - Przerwanie zewnetrzne 1

      0x000038: Exception 0x0E [0x001D5A] - IRQ 2 - Przerwanie zewnetrzne 2

      0x00003C: Exception 0x0F [0x001D92] - IRQ 3 - Przerwanie zewnetrzne 3

      0x000090: Exception 0x24 [0x001E84] - IMIA 3 - Przerwanie zegarowe
                                            wywolywane co 5 milisekund

      0x0000B0: Exception 0x2C [0x002020] - DEND 0A - Kontroler DMA: koniec
                                            przesylania danych kanalem 0A

      0x0000D0: Exception 0x34 [0x001F80] - RECEIVE ERROR 0 - Interfejs SCI
                                            kanal 0: komunikacja z czytnikiem:
                                            blad odczytu bajtu

      0x0000D4: Exception 0x35 [0x001F8C] - RECEIVE DATA FULL 0 - Interfejs
                                            SCI kanal 0: komunikacja z czytni-
                                            kiem: otrzymano bajt

      0x0000E0: Exception 0x38 [0x001F9C] - RECEIVE ERROR 1 - Interfejs SCI
                                            kanal 1: komunikacja z modemem:
                                            blad odczytu bajtu

      0x0000E4: Exception 0x39 [0x001FD2] - RECEIVE DATA FULL 1 - Interfejs
                                            SCI kanal 1: komunikacja z mode-
                                            mem: otrzymano bajt

      0x0000E8: Exception 0x3A [0x002000] - TRANSMIT DATA EMPTY 1 - Interfejs
                                            SCI kanal 1: komunikacja z mode-
                                            mem: pusty rejestr danych wysyla-
                                            nych do modemu

      0x0000F0: Exception 0x3C [0x0020F4] - A/D CONVERSION COMPLETE - Zakon-
                                            czono przetwarzanie A/D (np. od-
                                            czyt temperatury zewnetrznej).

S4. REJESTRY UKLADOW PERYFERYJNYCH
    Mikrokontroler, jak sama nazwa wskazuje, zawiera w swojej obudowie oprocz
    mikroprocesora rowniez zintegrowane uklady peryferyjne. Ponizej umiescilem
    odwzorowanie rejestrow ukladow peryferyjnych w przestrzen adresowa mikro-
    kontrolera Hitachi - tak jak jest to w automacie (zebranie tych informacji
    w jedna calosc wcale nie bylo takie proste). Po dokladniejsze informacje
    na temat rejestrow i ukladow peryferyjnych odsylam do danych producenta.
    Na poczatku znajduje sie adres, pod jakim widoczny jest rejestr, pozniej
    nazwa rejestru, a na koncu nazwa ukladu peryferyjnego, do ktorego nalezy
    dany rejestr.

      @0xFFFFFF27:     Rejestr ?
      @0xFFFFFF2F:     Rejestr ?

      @0xFFFFFF60:     Rejestr TSTR        - ITU (all channels)
      @0xFFFFFF61:     Rejestr TSNC        - ITU (all channels)
      @0xFFFFFF62:     Rejestr TMDR        - ITU (all channels)
      @0xFFFFFF63:     Rejestr TFCR        - ITU (all channels)
      @0xFFFFFF64:     Rejestr TCR0        - ITU channel 0
      @0xFFFFFF65:     Rejestr TIOR0       - ITU channel 0
      @0xFFFFFF66:     Rejestr TIER0       - ITU channel 0
      @0xFFFFFF6E:     Rejestr TCR1        - ITU channel 1
      @0xFFFFFF6F:     Rejestr TIOR1       - ITU channel 1

      @0xFFFFFF70:     Rejestr TIER1       - ITU channel 1
      @0xFFFFFF78:     Rejestr TCR2        - ITU channel 2
      @0xFFFFFF79:     Rejestr TIOR2       - ITU channel 2
      @0xFFFFFF7A:     Rejestr TIER2       - ITU channel 2

      @0xFFFFFF82:     Rejestr TCR3        - ITU channel 3
      @0xFFFFFF83:     Rejestr TIOR3       - ITU channel 3
      @0xFFFFFF84:     Rejestr TIER3       - ITU channel 3
      @0xFFFFFF85:     Rejestr TSR3        - ITU channel 3
      @0xFFFFFF87:     Rejestr TCNT3L      - ITU channel 3

      @0xFFFFFF90:     Rejestr TOER        - ITU (all channels)
      @0xFFFFFF91:     Rejestr TOCR        - ITU (all channels)
      @0xFFFFFF92:     Rejestr TCR4        - ITU channel 4
      @0xFFFFFF93:     Rejestr TIOR4       - ITU channel 4
      @0xFFFFFF94:     Rejestr TIER4       - ITU channel 4
      @0xFFFFFF97:     Rejestr TCNT4L      - ITU channel 4

      @0xFFFFFFAB:     Rejestr RSTCSR      - WDT

      @0xFFFFFFB0:     Rejestr SMR         - SCI channel 0
      @0xFFFFFFB1:     Rejestr BRR         - SCI channel 0
      @0xFFFFFFB2:     Rejestr SCR         - SCI channel 0
      @0xFFFFFFB3:     Rejestr TDR         - SCI channel 0
      @0xFFFFFFB4:     Rejestr SSR0        - SCI channel 0
      @0xFFFFFFB5:     Rejestr RDR0        - SCI channel
      @0xFFFFFFB8:     Rejestr ?
      @0xFFFFFFB9:     Rejestr ?
      @0xFFFFFFBA:     Rejestr ?
      @0xFFFFFFBB:     Rejestr ?
      @0xFFFFFFBC:     Rejestr SSR1        - SCI channel 0
      @0xFFFFFFBD:     Rejestr RDR1        - SCI channel 0

      @0xFFFFFFC5:     Rejestr P4DR/P4DDR  - port 4
      @0xFFFFFFC7:     Rejestr ?
      @0xFFFFFFC8:     Rejestr P5DR/P5DDR  - port 5
      @0xFFFFFFC9:     Rejestr P6DR        - port 6
      @0xFFFFFFCA:     Rejestr ?           - port 6
      @0xFFFFFFCB:     Rejestr P6DR        - port 6
      @0xFFFFFFCD:     Rejestr P8DDR       - port 8
      @0xFFFFFFCE:     Rejestr P7DR        - port 7
      @0xFFFFFFCF:     Rejestr P8DR        - port 8

      @0xFFFFFFD0:     Rejestr P9DDR       - port 9
      @0xFFFFFFD1:     Rejestr PADDR       - port A
      @0xFFFFFFD2:     Rejestr P9DR        - port 9
      @0xFFFFFFD3:     Rejestr PADR        - port A
      @0xFFFFFFD4:     Rejestr PBDDR       - port B
      @0xFFFFFFD5:     Rejestr PCDDR       - port C
      @0xFFFFFFD6:     Rejestr PBDR        - port B
      @0xFFFFFFD7:     Rejestr PCDR        - port C

      @0xFFFFFFE0:     Rejestr ADDRAH      - A/D converter
      @0xFFFFFFE2:     Rejestr ADDRBH      - A/D converter
      @0xFFFFFFE4:     Rejestr ADDRCH      - A/D converter
      @0xFFFFFFE6:     Rejestr ADDRDH      - A/D converter
      @0xFFFFFFE8:     Rejestr ADCSR       - A/D converter
      @0xFFFFFFEC:     Rejestr ?           - bus controller
      @0xFFFFFFED:     Rejestr ASTCR       - bus controller
      @0xFFFFFFEE:     Rejestr WCR         - bus controller
      @0xFFFFFFEF:     Rejestr WCER        - bus controller

      @0xFFFFFFF2:     Rejestr SYSCR       - system control
      @0xFFFFFFF3:     Rejestr ?           - system control
      @0xFFFFFFF4:     Rejestr ISCR        - interrupt controller
      @0xFFFFFFF5:     Rejestr IER         - interrupt controller
      @0xFFFFFFF6:     Rejestr ISR         - interrupt controller
      @0xFFFFFFF8:     Rejestr IPRA        - interrupt controller
      @0xFFFFFFF9:     Rejestr IPRB        - interrupt controller

S5. KODY KLAWIATURY
    Ponizej przedstawilem kody klawiatury automatu:

      0x0023:     #
      0x002A:     *
      0x0030:     0
      ...
      0x0039:     9
      0x3B00:     A
      0x3C00:     B
      0x3D00:     C
      0x3E00:     D
      0x3F00:     TRL - FC (Nastepne polaczenie)
      0x4000:     RP  - RD (Redial)
      0x4100:     LIN - Zmiana jezyka
      0x4200:     VOL - Zmiana glosnosci
      0x4300:     TC  - Wymiana karty

S6. PAMIECI ZNAMIONOWE (BOLLINO) I METRYCZKA APARATU
    W automacie znajduje sie 5 pamieci znamionowych tzw. bollino w 5 najwaz-
    niejszych modulach automatu. Sa to male (256 bajtow) pamieci szeregowe
    EEPROM 24C02 z interfejsem I2C ("I kwadrat C"), kazda z tych pamieci
    zawiera 11 bajtow danych, ktore jednoznacznie identyfikuja dany modul.
    Teoretycznie program plyty glownej ma mozliwosc zmieniania zawartosci
    tych pamieci, w praktyce ogranicza sie tylko do ich odczytu (co jest
    zrozumiale). Obok kazdej z pamieci podany jest adres, pod jakim pamiec
    jest widziana na szynie I2C:

      I2C 0xFF:     Bollino CZYTNIK       - 11 bajtow danych
      I2C 0x01:     Bollino KLAWIATURA    - 11 bajtow danych
      I2C 0x02:     Bollino MIKROTELEFON  - 11 bajtow danych
      I2C 0x03:     Bollino WYSWIETLACZ   - 11 bajtow danych
      I2C 0x04:     Bollino PLYTA GLOWNA  - 11 bajtow danych

    Oprocz wymienionych wyzej pamieci znamionowych na plycie glownej znajduje
    sie rowniez pamiec szeregowa EEPROM I2C (prawdopodobnie 24C08 - 1024 baj-
    ty) zawierajaca najwazniejsze ustawienia automatu, ktore umozliwiaja na-
    wiazanie polaczenia z centrum nadzoru nawet w przypadku utraty danych
    konfiguracyjnych zapisanych w pamieci FLASH automatu:

      I2C 0x05:     Metryczka aparatu     - 43 bajty danych

    Dane w metryczce wygladaja nastepujaco:

      0x00..0x01 - prefiks aparatu w kodzie BCD
      0x02..0x07 - numer aparatu w kodzie BCD
      0x08..0x09 - nieuzywane
      0x0A       - aktywnosc STG: 0x00 = STG aktywne, inne = STG nieaktywne
                   (tak, 0 oznacza aktywnosc)
      0x0B       - offset cyfry 0x0D w prefiksie STG. Normalnie cyfry
                   zawieraja sie w przedziale 0x01..0x0A (0x0A odpowiada
                   cyfrze "0"). Cyfra 0x0D ma specjalne znaczenie i prawdo-
                   podobnie oznacza, ze w miejscu jej wystapienia automat
                   powinien zrobic krotka przerwe w wybieraniu numeru
                   (oczekiwanie na sygnal centrali miedzymiastowej)
      0x0C..0x0D - prefiks STG1 (pierwszego STG) w kodzie BCD
      0x0E..0x15 - numer STG1 (pierwszego STG) w kodzie BCD
      0x16..0x17 - prefiks STG2 (drugiego STG) w kodzie BCD
      0x18..0x1F - numer STG2 (drugiego STG) w kodzie BCD
      0x20..0x28 - nieuzywane
      0x29       - rodzaj wybierania: 0x00 = Pulse, 0x80 = DTMF
      0x2A       - predkosc modemu: 0x00 = 1200 bps, inne = 2400 bps

    Dane w metryczce sa aktualizowane podczas sciagania z STG pliku z kon-
    figuracja oraz podczas zmiany odpowiednich ustawien w menu automatu.

S7. KARTY ZWYKLE
    Srebrny automat porzadkuje sobie karty w 64 emisje po 256 serii z 65536
    kartami w serii (wyciagniete z softu przez Nola). Rodzaj karty jest roz-
    poznawany przez modul czytnika, plyta glowna otrzymuje tylko gotowe dane
    odczytane z karty wraz z informacja o jej rodzaju. Karty zagranicznych
    operatorow sa odrzucane, przy czym jezeli na karcie takiej znajduja sie
    jednostki, automat wypisuje "KARTA NIEWAZNA", a jesli jednostek nie ma -
    "KARTA ZUZYTA". Jest siedem rodzajow kart zwyklych (z jednostkami) roz-
    poznawanych przez srebrne automaty:

    a) Karta magnetyczna czerwona

       Jest to zwykla najstarsza karta magnetyczna, mozliwe sa 4 emisje po
       256 serii z 65536 kartami w serii. Dokladniejszy ich opis znajduje sie
       w rozdziale "Karty Zwykle" w Czesci I. Automat srebrny nie rozroznia
       kart w jendostkach taryfikacyjnych i w jednostkach Tax Value, takie
       rozroznienie nie jest mu zreszta do niczego potrzebne, gdyz nie posiada
       on odpowiednika wartosci Tax Value z niebieskiego Urmeta. Karta czerwo-
       na jest od pewnego juz czasu zablokowana na srebrnych automatach.

    b) Karta magnetyczna zielona

       Jest to nowszy rodzaj karty magnetycznej, mozliwe sa 64 emisje po 256
       serii z 65536 kartami w serii. Poza tym karty te roznia sie od kart
       zielonych innym sposobem nagrania niektorych jedynek, o czym bolesnie
       przekonali sie ostatnio (po zablokowaniu przez TPSA kart czerwonych na
       srebrnych automatach) wszyscy ci, ktorzy produkuja sobie karty. Odpo-
       wiedni algorytm zostal juz jednak zlamany :) (nie przeze mnie!).
       UWAGA! Algorytm ten miesci sie w programie czytnika, a nie plyty
       glownej.

     c) Karta elektroniczna niebieska

        Jest to karta elektroniczna o niestandardowym formacie zapisanych na
        niej danych. Kart tych nie ma w obiegu i sa zablokowane. Istnieje moz-
        liwosc wlaczenia nastepujacego zapezpieczenia dla tych kart: niektore
        bajty z karty zostaja zakodowane odpowiednim kluczem DES i wynik kodo-
        wania zostaje porownany znowu z odpowiednimi bajtami na karcie. Jezeli
        wartosci beda identyczne, karta jest akceptowana. W sofcie istnieje
        tablica, w ktorej sa zawarte wspomniane klucze DES, osobny klucz dla
        kazdej serii kart. Obecnie tablica ta jest cala pusta, czyli zabezpie-
        czenie to jest wylaczone.

     d) Karta magnetyczna niebieska

        Jest to karta magnetyczna o zupelnie nietypowym jak na karte magne-
        tyczna formacie danych - zawiera ona 16 bajtow danych identycznych,
        jak w opisanej podpunkt wyzej karcie elektronicznej! Bez zadnych
        sum kontrolnych i algorytmow zabezpieczajacych!!! Istnieje mozliwosc
        zabezpieczenia tych kart dodatkowym algorytmem (tym z DES-em), takim
        samym jak dla karty elektronicznej niebieskiej. Karty te sa wylaczone
        z obiegu.

     e) Karta elektroniczna OTO Lublin

        Jest to karta elektroniczna o standardowym formacie zapisanych na niej
        danych. Karty te sa uzywane coraz powszechniej w Polsce. Posiadaja one
        wlasciwosc, o ktorej malo kto slyszal. Mianowicie na karcie moze byc
        zapisany maksymalnie 12-cyfrowy numer telefoniczny! Jezeli numer ten
 *      nie jest pusty i nie znajduje sie na liscie numerow zablokowanych, po
        wlozeniu karty do automatu zostanie on automatycznie wybrany. Nie ma
        mozliwosci wybrania innego numeru. Teoretycznie moze byc to przydatne
        np. dla firmy, ktora daje karte pracownikowi, zeby jej nie zuzyl na
 *      niecne cele :) Nie stosuje sie jednak tego rozwiazania, gdyz polskie
 *      karty zawieraja drugi klucz kryptograficzny i w zwiazku z tym nie ma
 *      juz na nich miejsca na numer telefoniczny (patrz nizej do rozdzialu
 *      "Format danych kart elektronicznych" - opis bajtow 22..27).

     f) Karta elektroniczna RUCH 1

 *      Jest to karta elektroniczna o standardowym formacie zapisanych na niej
 *      danych. Karty te sa uzywane za granica. Jako karty RUCH 1 (wzglednie
 *      RUCH 2) kwalifikowane sa karty nie rozpoznane jako karty elektroniczne
 *      niebieskie, serwisowe lub OTO Lublin (patrz nizej do rozdzialu "Algo-
 *      rytm rozpoznawania rodzaju karty elektronicznej").

     g) Karta elektroniczna RUCH 2

 *      Analogicznie jak karta RUCH 1 - patrz wyzej.

S8. ALGORYTM ROZPOZNAWANIA RODZAJU KARTY ELEKTRONICZNEJ
 *  Rodzaj karty jest rozpoznawany przez modul czytnika, tak wiec softem czyt-
 *  nikow (automatow srebrnego i jajka) wspomagalem sie przy pisaniu tego roz-
 *  dzialu. Rodzaje kart sa opisane w rozdzialach "Karty zwykle" oraz "Karty
 *  serwisowe". Algorytm rozpoznawania rodzaju karty wyglada nastepujaco:
 *
 *  1) Czy DaneZKarty[0,1] = 0x97,0x74 albo 0x05,0xF4 albo 0x97,0xCC
 *     NIE - 2)
 *     TAK - Karta elektroniczna OTO Lublin
 *
 *  2) Czy DaneZKarty[0,1] = 0x17,0x04 (porownania tego dokonuje wylacznie
 *     program czytnika w automacie srebrnym, tak wiec jajko nie rozpoznaje
 *     kart elektronicznych niebieskich)
 *     NIE - 3)
 *     TAK - Karta elektroniczna niebieska
 *
 *  3) Czy DaneZKarty[0,1] = 0x19,0xC4
 *     NIE - Karta RUCH 2
 *     TAK - 4)
 *
 *  4) Czy DaneZKarty[3] xor DaneZKarty[4] xor DaneZKarty[5] xor
 *     DaneZKarty[6] xor DaneZKarty[7] = 0
 *     NIE - Karta serwisowa, typ karty = (DaneZKarty[5] and #0x0F)
 *     TAK - Karta RUCH 1
 *
 *  Oczywiscie jest to sprawdzenie wstepne, karty elektroniczne niebieskie,
 *  serwisowe i OTO Lublin (czyli te, ktore sa przewidziane do uzytku w Pols-
 *  ce) musza spelnic jeszcze dodatkowe warunki przed ich ostatecznym zaakcep-
 *  towaniem - patrz rozdzialy "Zabezpieczenia kart zwyklych", "Zabezpieczenia
 *  kart serwisowych" oraz "Format danych kart elektronicznych".

S9. LISTY KART
    Automat posiada dwie listy kart, ladowane zdalnie z centrum nadzoru:

    a) Biala lista kart
       Zawiera ona dopuszczone do obiegu numery emisji kart oraz dla kazdej
       emisji dozwolone w niej numery serii.

    b) Czarna lista kart
       Zawiera ona dane wylaczonych z obiegu kart. Opis kazdej karty zawiera
       jej numer emisji, numer serii oraz numer kolejny w serii.

    Na powyzsze listy wpisywane sa tylko karty zwykle (z jednostkami). Karta
    moze byc zaakceptowana tylko wtedy, gdy jej numer emisji i serii znajduje
    sie na bialej liscie i jej dane nie figuruja na czarnej liscie kart.

S10.ZABEZPIECZENIA KART ZWYKLYCH
    Zapis kart magnetycznych chroniony jest odpowiednimi sumami kontrolnymi
    i (w kartach zielonych) innym sposobem zapisu niektorych jedynek wedlug
    dodatkowego algorytmu. Jak powszechnie wiadomo, zabezpieczenia te nie sa
    wystarczajace :) Ostatnio nawet pojawily sie karty od poczatku do konca
    robione poza TPSA, lacznie z plastikiem i paskiem magnetycznym...

    Natomiast karty elektroniczne z jednostkami to uklady dostarczane przez
 *  Siemensa SLE 4436 (inaczej Eurochip), posiadajace wbudowany uklad genero-
    wania odpowiedzi na pytania zadawane przez automat. W czytniku automatu
    znajduje sie do pieciu kart mikroprocesorowych SAM (inaczej SiCrypt), wyg-
    ladajacych jak mala karta SIM telefonu komorkowego. Kazda karta SAM zawie-
 *  ra pelny klucz kryptograficzny oraz algorytm kryptograficzny do obslugi
 *  kart jednego operatora, istnieje mozliwosc zdalnego ladowania klucza kryp-
 *  tograficznego do modulu SAM. Algorytm kryptograficzny stosowany w module
 *  SAM i karcie telefonicznej jest tajny (nie jest to DES). Istnieje ponad
 *  20000 wariantow tego algorytmu, operator moze wybrac sobie dowolny sposrod
 *  tych wariantow. Po wlozeniu karty do automatu odczytuje on najpierw 16
    bajtow z karty (m.in. numer karty, liczbe jednostek). Dane te trafiaja do
    modulu SAM. Nastepnie modul SAM losuje 48-bitowe pytanie i na podstawie
    danych z karty, wylosowanego pytania, posiadanego klucza kryptograficznego
    i algorytmu wylicza 16-bitowa odpowiedz, ktora trafia do procesora czytni-
    ka. Wylosowane przez SAM pytanie trafia rowniez do karty. Karta na podsta-
    wie swoich danych, otrzymanego pytania, zapisanego w niej klucza krypto-
    graficznego i odpowiedniego algorytmu wylicza swoja odpowiedz, ktora tra-
    fia rowniez do procesora czytnika. To wlasnie procesor w czytniku porownu-
    je obydwie odpowiedzi i decyduje o zaakceptowaniu karty lub nie. Tak wiec,
    jak widac, oprogramowanie procesora czytnika jest najlatwiejszym punktem
    ataku na system :). Caly powyzej opisany proces zostal potwierdzony dos-
    wiadczalnie przez Shadowa i mnie poprzez podsluchiwanie transmisji miedzy
    czytnikiem i karta telefoniczna oraz czytnikiem i modulem SiCrypt srebrne-
    go automatu. Nalezy dodac, ze kazda karta telefoniczna posiada klucz kryp-
    tograficzny wstepnie przetworzony, w ktorym uwzgledniono juz jej numery
    seryjne (dzieki czemu wyliczanie odpowiedzi jest szybsze). Z tego wynika,
    ze klucz w karcie jest inny dla kazdej karty, czyli wyciagniecie tego klu-
    cza pozwoli co najwyzej zrobic druga karte o takich samych numerach, co
    bardzo ogranicza mozliwosci wykorzystania takiej sklonowanej karty. Pelny
    klucz kryptograficzny jest tylko w module SAM. Proby odczytania odpowiedzi
    na wszystkie mozliwe pytania sa z gory skazane na niepowodzenie. Po pierw-
    sze modul SAM taktowany jest czestotliwoscia zaledwie ok. 3,57 MHz, czyli
    odczytanie wszystkich odpowiedzi zajeloby tysiace albo raczej miliony lat.
    Po drugie odczytane odpowiedzi, przy sensownym stopniu kompresji, zajelyby
    co najmniej kilkaset gigabajtow. Po trzecie to modul SAM, a nie my, losuje
    pytanie, a wiec im wiecej rozniacych sie od siebie pytan juz wylosowal,
    tym mniejsze prawdopodobienstwo, ze wylosuje pytanie, ktorego jeszcze nie
    bylo. Proby odczytania wszystkich mozliwych kombinacji mialyby sens tylko
    wtedy, gdyby losowane przez modul SAM pytania nalezaly do sztucznie zawe-
    zonego zbioru (byc moze tak jest, ale tego nie wiem). Pozostaje jeszcze
    dekompozycja struktury modulu SAM w celu odczytania klucza i algorytmu
    kryptograficznego, ale modul SAM jest przed tym doskonale zabezpieczony,
    pomijajac juz fakt, ze trzeba do tego celu dysponowac sprzetem wartym
    dziesiatki tysiecy dolarow i sztabem specjalistow. Moduly SAM produkuje
    sie w stosunkowo malych ilosciach, dlatego nie ma koniecznosci oszczedza-
    nia na ich zabezpieczniach. Pojedyncze karty telefoniczne moga byc gorzej
    (co nie znaczy ze slabo) zabezpieczone (czyli tansze), gdyz zawieraja tyl-
    ko klucz przetworzony, z ktorego nie da sie odzyskac pelnego klucza. Pod-
    sumowujac, jak juz wspomnialem, atak na oprogramowanie czytnika (lub ewen-
    tualnie plyty glownej) jest najlatwiejszym rozwiazaniem.

    Istnieje mozliwosc stosowania kart elektronicznych z jednostkami nie
    posiadajacych zabezpieczenia typu pytanie-odpowiedz (uklady SLE 4406).
    Wyprodukowanie takiej karty w warunkach domowych nie przedstawia najmniej-
    szych trudnosci, dlatego karty te, choc TPSA ich nie produkuje, na wszelki
    wypadek zostaly w konfiguracji automatu zablokowane. Posiadajac program
    centrum nadzoru mozna jednak zmienic w konfiguracji automatu jeden bit
    i juz mozna uzywac takich kart do woli :) Jesli kiedys zobaczycie na
    phreak.hack.pl filmik przedstawiajacy faceta uzywajacego karty chip
    z kredytem rzedu powiedzmy 2000 jednostek, to bedziecie juz wiedziec,
    co sobie o tym myslec :)

    Istnieje takze mozliwosc stosowania kart elektronicznych z jednostkami
    posiadajacych rozszerzone zabezpieczenie typu pytanie-odpowiedz (uklady
    SLE 5536 - inaczej Eurochip II). W karcie takiej odpowiedz na pytanie
    zalezy nie tylko od biezacego pytania, ale rowniez od pytan poprzednich.
 *  W Polsce karty takie nie sa (jeszcze) stosowane.

 *  Nie od rzeczy byloby dodac, ze uklady kart elektronicznych chronione sa
 *  rowniez zanim zostana zaprogramowane przez dostawce kart (w Polsce - OTO
 *  Lublin). Chodzi o to, ze w czasie podrozy ukladow scalonych sluzacych do
 *  produkcji kart od producenta (Siemens) do dostawcy (ktory wkleja uklady
 *  scalone w karty, przykleja styki, programuje na karcie np. poczatkowa war-
 *  tosc licznika) uklady moglyby zostac skradzione i zaprogramowane przez
 *  zlodzieja (na duza liczbe jednostek)... Mechanizm zabezpieczenia nie jest
 *  skomplikowany: przed rozpoczeciem programowania ulkadu trzeba podac
 *  mu odpowiednie 32-bitowe haslo, a jesli zostanie ono podane blednie piec
    razy, uklad staje sie bezuzyteczny.

    Po sprawdzeniu i zaakceptowaniu karty w automacie na podstawie sum kont-
    rolnych (karta magnetyczna) lub odczytanej odpowiedzi (karta elektronicz-
    na) sprawdzana jest zawartosc bialej i czarnej listy kart (patrz rozdzial
    "Listy kart"). Jesli karta jest zawarta na bialej liscie i nie figuruje na
    czarnej, zostaje dopuszczona do uzytku. Wada przyjetego rozwiazania jest
    to, ze dane o ruchu kart gromadzone przez automat (w celu pozniejszego
    przeslania ich do centrum nadzoru i pozniejszej ich tam analizy) nie sa
    wykorzystywane na biezaco do decydowania o zaakceptowaniu karty lub nie.
    Innymi slowy mozna po kolei wkladac do automatu jedna za druga karty-klony
    z identycznymi numerami seryjnymi, a automat bez problemu je zaakceptuje!
    Dopiero gdy automat przesle te dane do centrum nadzoru, a tam wyjdzie na
    jaw, ze dana karta byla wykorzystywana wielokrotnie, centrum nadzoru
    wciagnie ta karte (a scislej te karty :)) na czarna liste i po rozeslaniu
    czarnej listy do automatow nie bedzie mozna wiecej korzystac z kart o da-
    nym numerze. Wciagniecie karty na czarna liste trwa srednio kilka dni, co
    daje pewne (choc moze nie za wielkie) mozliwosci. Jezeli karta nie zosta-
    nie zaakceptowana, pojawi sie napis "KARTA NIEWAZNA". Centrum nadzoru jest
    informowane o kazdej probie uzycia karty niewaznej wraz z jej numerami.
 *  Oczywiscie odpowiednie poprawki w oprogramowaniu automatu moglyby wyelimi-
 *  nowac mozliwosc stosowania kart-klonow w tym samym automacie juz przed
 *  uaktualnieniem czarnej listy.

    Podczas rozmowy jednostki z karty kasowane sa na biezaco. Wyjecie karty
    podczas rozmowy (np. w celu jej zamiany na falszywa) powoduje natychmias-
    towe przerwanie polaczenia, oczywiscie z wyjatkiem przypadku wyczerpania
    sie kredytu na wymienianej karcie. W przypadku, gdy automat podczas rozmo-
    wy nie moze odczytac karty albo skasowac z niej jednostki, rozmowa rowniez
    jest przerywana. W przypadku karty magnetycznej, jezeli jednostki sa kaso-
    wane bardzo szybko (np. polaczenie miedzynarodowe), to wyjatkowo automat
    nie kasuje fizycznie jednostek na biezaco, tylko co kilka jednostek
    (np. 4).

    W oprogramowaniu plyty glownej, podobnie jak w niebieskim Urmecie, zapisa-
    na jest tablica podzielnikow dla kart magnetycznych (patrz rozdzial "Karty
    zwykle" w Czesci I). Na karcie zapisany jest indeks do tablicy podzielni-
    kow. W przypadku niebieskiego automatu indeks 0 byl zabroniony i karta
    byla wyrzucana z automatu (dla indeksu 0 nie bylo odpowiadajacej mu pozyc-
    ji w tablicy podzielnikow). Automat srebrny posiada w tabeli pozycje row-
    niez dla indeksu 0 i podzielnik wynosi wtedy... 0! Czyli liczba magnetycz-
    nych jedynek z trzeciej czesci karty jest dzielona przez 0 i otrzymujemy
    65535 jednostek!!! Niestety modul czytnika odrzuca takie karty, wiec nie
    mozna tego wykorzystac, a szkoda... :)

S11.KARTY KREDYTOWE
    Choc z instrukcji centrum nadzoru STG97 wynika, ze automat obsluguje karty
    kredytowe, to w calym sofcie w wersji 2.60 nie znalazlem prawie zadnego
    fragmentu kodu zwiazanego z obsluga tych kart. Choc mozna np. zaprogra-
    mowac z STG97 numery telefoniczne do centrum walidacji kart kredytowych,
    to nie sa one do niczego wykorzystywane. Teoretycznie istnieja dwa rodzaje
    obslugiwanych kart kredytowych: operatora (czyli u nas TPSA) oraz bankowe.
    Automat ma nawet w czytniku osobna glowice do odczytu kart kredytowych,
    szkoda, ze nie jest ona do niczego wykorzystywana, moze kiedys... We Wlo-
    szech karty kredytowe operatora sa w powszechnym uzyciu, pewnie polega to
    na posiadaniu konta u operatora telekomunikacyjnego (BTW we Wloszech opla-
    ta naliczana jest juz od momentu wybrania numeru, czyli mozemy sie nie
    dodzwonic, a i tak zaplacimy. Faktycznie placimy wiec za zajecie lacza.
    Taki sposob naliczania oplaty jest stosowany rowniez w sieciach komorko-
    wych. Swoja droga we Wloszech uzywane sa zupelnie inne modele automatow
    (tez firmy Urmet), nie akceptuja one polskich kart magnetycznych ani elek-
    tronicznych, nawet kart serwisowych: ani magnetycznych, ani chipowych).

S12.MENU GLOWNE AUTOMATU
    Zasady poruszania sie po menu sa analogiczne jak w niebieskim Urmecie.
    Na poczatek objasnienie skrotow uzywanych w menu: OTP = BOOT PROGRAM
    (One Time Programming), KO = ERROR, SW = SOFTWARE. Mozna sobie zmienic
    jezyk wyswietlania menu za pomoca przycisku zmiany jezyka. Od razu nad-
    mienie, ze numer uzywanej karty serwisowej jest wysylany do centrum nad-
    zoru - ale nie dla kazdego typu karty, o czym bedzie nizej. W zalez-
    nosci od typu karty niektore menu sie nie pojawiaja lub nie daja sie
    zmieniac - patrz rozdzial "Karty serwisowe". Po wlozeniu karty serwi-
    sowej pojawia sie menu powitalne:

       ------------------
       |    PIN  KOD    |
       |      ****      |
       ------------------

       ------------------   ------------------
       |   PIN KOD OK   |   | BLEDNY PIN KOD |
       |OTWORZ DRZWICZKI|   |ODWIES SLUCHAWKE|
       ------------------   ------------------

       Niezaleznie od prawidlowosci podanego PIN-u karta jest wyrzucana.
       Po prawidlowym podaniu PIN-u wyswietla sie napis proszacy o otwarcie
       drzwiczek (ale nie zawsze, o tym bedzie potem :)), co nalezy uczynic,
       a wtedy naszym oczom ukaze sie:

       ------------------
       |SW BOOT Ver.0.00|
       |SW TPE  Ver.0.00|
       ------------------

       Oczywiscie zera zastapione sa odpowiednimi numerami wersji. Po nacis-
       nieciu "*" wchodzimy do menu glownego:

       ------------------
    1. | KOD  OPERATORA |
       |      238       |
       ------------------

       W sofcie automatu istnieje pewna tablica sluzaca do dekodowania kart
       magnetycznych (taka sama zreszta jak w niebieskim Urmecie), a wyswiet-
       lana w tym menu liczba jest pierwszym elementem tej tablicy (0xEE).
       Czyli innymi slowy kazdy operator ma swoj kod i na jego podstawie deko-
       dowane sa karty magnetyczne, co moze tlumaczyc fakt, ze polskie karty
       sa nieczytelne we Wloszech (choc mozliwe ze zapis na wloskich kartach
       jest zupelnie inny). W menu tym nic nie da sie zmieniac.

       ------------------
    2. |  USTAW ZEGAR   |
       |                |
       ------------------
          ------------------   ------------------
    2.1.  |dd/mm/rrrr gg:mm|   | USZKODZ  ZEGAR |
          |                |   |                |
          ------------------   ------------------

          Jezeli mamy uprawnienia, po nacisnieciu "*" mozna zmienic ustawie-
          nia zegara. Automat obsluguje lata 1997..2096. Dwukropek mruga sobie
          slicznie pojawiajac sie dla kazdej parzystej liczby sekund :).

       ------------------
    3. |PREFIKS  APARATU|
       |0000            |
       ------------------

       Maksymalnie 4 cyfry numeru kierunkowego automatu. Jezeli mamy upraw-
       nienia, mozemy wpisac nowy numer, ktory zatwierdzamy klawiszem "*".
       W przypadku rezygnacji z zapisania zmiany mozemy po prostu przejsc do
       nastepnej pozycji menu klawiszem "#" albo... zmienic jezyk wyswietlania
       menu, wtedy wraz z ze zmiana jezyka pojawi sie pierwotnie zaprogramowa-
       ny numer.

       ------------------
    4. | NUMER  APARATU |
       |000000000000    |
       ------------------

       Maksymalnie 12 cyfr numeru automatu. Po tym numerze STG97 rozpoznaje
       m.in. rodzaj automatu i prawdopodobnie wpisanie tu numeru "jajka"
       spowoduje, ze automat bedzie probowal sciagnac oprogramowanie przezna-
       czone nie dla niego, co spowoduje oczywiscie jego awarie. Zasady edycji
       numeru jak wyzej.

       ------------------
    5. |  PREFIKS  STG  |
       |0000            |
       ------------------

       Maksymalnie 4 cyfry numeru kierunkowego do centrum nadzoru STG97.
       Automat posiada w konfiguracji dwa numery do STG97 (oraz oczywiscie
       dwa numery kierunkowe). Po uzyciu tego menu przeprogramowane zostaja
       obydwa prefiksy na nowy wprowadzony z klawiatury. Zasady edycji
       numeru jak wyzej.

       ------------------
    6. |   NUMER  STG   |
       |0000000000000000|
       ------------------

       Maksymalnie 16 cyfr numeru do STG97. Po uzyciu tego menu zostaja
       przeprogramowane obydwa numery STG97 na podany nowy numer. Zasady
       edycji numeru jak wyzej.

       Nalezy zauwazyc, ze numer aparatu w menu 4. moze miec maksymalnie 12
       cyfr, a numery STG 16 cyfr. Zarowno numer aparatu, jak i obydwa numery
       STG przechowywane sa w metryczce aparatu (w malej pamieci szeregowej
       I2C). Awaria glownej pamieci FLASH nie spowoduje zatem zniszczenia nu-
       meru aparatu i STG, a wiec STG poprawnie zidentyfikuje aparat, zapisze
       w bazie danych fakt jego uszkodzenia i ewentualnie przesle konfiguracje
       stosowna dla danego aparatu. Numery STG przechowywane sa oprocz tego
       w pamieci FLASH zawierajacej cala konfiguracje automatu.

       ------------------   ------------------
    7. |TYP WYBIERANIA  |   |TYP WYBIERANIA  |
       |WYBIERANIE: DTMF|   |WYBIERANIE: DEK |
       ------------------   ------------------

       W menu tym mozna recznie zmienic typ wybierania numeru (ale to usta-
       wienie jest prawdopodobnie brane pod uwage tylko podczas wybierania
       numeru do STG!) naciskajac klawisz "*". Menu to jest o tyle ciekawe,
       ze jego wyswietlenie mozliwe jest tylko wtedy, gdy wersja programu
       bootujacego jest rowna co najmniej 3.00. Poniewaz obecnie stosowana
       wersja to 2.06, wiec prawdopodobnie nikt jeszcze nigdy tego menu na
       oczy nie widzial.

       ------------------   ------------------
    8. |PREDKOSC TRANS  |   |PREDKOSC TRANS  |
       |PREDKOSC: 1200  |   |PREDKOSC: 2400  |
       ------------------   ------------------

       Tutaj mozna (naciskajac "*") zmienic predkosc wymiany danych z STG.
       Podobnie jak poprzednio, menu to wyswietla sie tylko dla wersji prog-
       ramu bootujacego co najmniej 3.00. Dla wersji nizszych predkosc trans-
       misji jest ustalana zawsze na 1200 bps, niezaleznie od tego, czy modem
       potrafi obslugiwac predkosc 2400 bps! Jak juz napisalem wyzej, obecna
       wersja bootprogramu to 2.06, tak wiec modem zawsze pracuje z predkos-
       cia 1200 bps. No coz...

       ------------------
    9. |  MENU ALARMOW  |
       |                |
       ------------------
          ------------------   ------------------
    9.1.  |KOD ALARMOW  01 |   |KOD ALARMOW  -- |
          |                |   |                |
          ------------------   ------------------
          ...
          ------------------
    9.56. |KOD ALARMOW  56 |
          |                |
          ------------------

       Po wejsciu do tego menu mozna ogladac kody aktywnych alarmow. Kolejne
       kody wyswietlaja sie przy naciskaniu "#". Liczba wyswietlanych kodow
       zalezy od liczby aktywnych alarmow, jesli nie ma zadnych aktywnych
       alarmow wyswietlane sa dwie pauzy. Kody numerowane sa od 1 do 56
       i opisane beda w nastepnym punkcie. Nie wszystkie kody alarmow sa
       wyswietlane w menu, niektore sa jedynie wysylane do STG. Istnieje
       jednak specjalny typ karty serwisowej, ktory potrafi wyswietlic
       ukryte kody.

       ------------------
    10.|    AUTOTEST    |
       |                |
       ------------------

       To menu jest bardzo rozbudowane. Jego pozycje zostana opisane w jednym
       z nastepnych punktow, jesli ktos jest zainteresowany, to niech tam
       zajrzy.

       ------------------   ------------------
    11.|WSPOLPRACA Z STG|   |WSPOLPRACA Z STG|
       |  STG AKTYWNE   |   | STG NIEAKTYWNE |
       ------------------   ------------------

       W tym menu mozna wlaczyc lub wylaczyc komunikacje z STG! Zmiana nas-
       tepuje po uzyciu klawisza "*". To menu jest wyswietlane tylko po
       uzyciu specjalnego rodzaju karty serwisowej.

S13.KODY ALARMOW
    Tutaj umiescilem troche dokladniejszy niz w instrukcji opis kodow. Chcial-
    bym zwrocic uwage na Kod 23 - interesujacy pomysl... Poza tym mimo ze Kod
    4 (otwarcie aparatu) nigdy nie jest ustawiany, to istnieje jeszcze Kod
    25 - nieupowaznione otwarcie aparatu. Otwarcie jest upowaznione tylko wte-
    dy, gdy najpierw wlozymy karte serwisowa i podamy prawidlowy PIN, w prze-
    ciwnym razie ustawiany jest Kod 25. Natomiast po uzyciu karty serwisowej
    do STG wysylane sa dane o wszystkich metryczkach (celem zidentyfikowania
 *  ewentualnie wymienionych czesci) oraz numer karty serwisowej (nie jest
 *  wysylany numer dla kart serwisowych typu VIII - o tym bedzie w rozdziale
 *  "Karty serwisowe").

    Legenda:
    [x]  = po tej liczbie powtorzen danego zdarzenia ustawiana jest flaga
           alarmu
    [n]  = kod nie jest ustawiany -> nie jest wysylany do STG
    !    = kody widoczne w menu tylko po uzyciu karty serwisowej typu X
           (o tym bedzie pozniej)

    ====================

    [3]   Kod 01 - Utrata danych FLASH bialej lub czarnej listy
    [3]   Kod 02 - Utrata danych metryczki aparatu - patrz rozdzial
                   "Pamieci znamionowe (bollino) i metryczka aparatu"
    [1]   Kod 03 - Utrata danych RAM - wyzerowany zostal chociaz jeden numer
                   wersji sposrod plikow (numery wersji przechowywane sa
                   w RAM) - automat wyswietla "NIEDOSTEPNY" (az do czasu
                   sciagniecia brakujacych plikow z STG):
                               - biala lista,
                               - konfiguracja,
                               - parametry centrali
    [n]   Kod 04 - Otwarcie aparatu
    [100] Kod 05 - 100 kolejnych zdjec mikrotelefonu bez uiszczenia oplaty
    [1]   Kod 06 - Odlaczona linia
    [5]   Kod 07 - Niewystarczajacy prad zasilania
    [255] Kod 08 - 255 kolejnych zdjec mikrotelefonu bez uiszczenia oplaty
                   (licznik zerowany przy wybraniu numeru A,B lub C (jesli
                   numery te sa dozwolone))
    [1]   Kod 09 - 2 godziny ciaglego zajmowania aparatu
    [1]   Kod 10 - Zaciecie klawiatury (ustawiane razem z kodem 38)
    [5]   Kod 11 - Zaciecie ktoregos z klawiszy funkcyjnych
    [1]   Kod 12 - Uszkodzenie odbiornika impulsow 16 kHz
    [1]   Kod 13 - Rozladowany akumulator
    [1]   Kod 14 - Uszkodzenie toru odbiorczego mikrotelefonu
    [1]   Kod 15 - Uszkodzenie toru nadawczego mikrotelefonu
    [1]   Kod 17 - Nieprawidlowa praca zegara
    [1]   Kod 19 - Uszkodzenie szyny I2C Bollino
    [1]   Kod 20 - Przepelnienie bufora zdarzen dla STG (300 lub wiecej
                   zdarzen) - automat wyswietla "NIECZYNNY"
    [1]   Kod 21 - Nieobecnosc/uszkodzenie DRO
    [100] Kod 23 - Statystyka klawiatury - licznik zdarzen jest zmniejszany,
                   gdy wybrany numer zawieral choc jedna cyfre 5,6 lub 7,
                   zwiekszany w przeciwnym przypadku. Albo ja sie myle,
                   albo to jakis kolejny chory pomysl firmy Urmet
    [1]   Kod 24 - Blad zdalnego ladowania danych z STG97
    [1]   Kod 25 - Nieupowaznione otwarcie aparatu
    [3]   Kod 26 - Blad zdalnego ladowania z STG97 nastepujacych plikow:
                   reklam, komunikatow glosowych, komunikatow wyswietlacza,
                   profili oprogramowania
    [1]  !Kod 27 - Zaciecie ktoregos z glownych klawiszy funkcyjnych i kla-
                   wisza funkcyjnego wymiany karty (ustawiane razem z kodem
                   11 i 38). Kod moze nie byc ustawiany w zaleznosci od
                   konfiguracji
    [1]  !Kod 33 - Zablokowanie czytnika kart magnetycznych
    [1]   Kod 34 - Zablokowanie czytnika kart kredytowych
    [1]   Kod 35 - Zablokowanie czytnika kart elektronicznych
    [1]   Kod 36 - Zablokowanie czytnika kart magnetycznych
    [1]   Kod 37 - Calkowite zaciecie czytnika
    [5]   Kod 38 - Zaciecie klawisza funkcyjnego wymiany karty
    [1]   Kod 39 - Brak czytnika
    [1]   Kod 40 - Blad lub brak wymiany danych plyta glowna - czytnik
    [1]   Kod 41 - Blad w zdalnym ladowaniu programu czytnika
    [1]  !Kod 49 - Wadliwe dzialanie glowic magnetycznych - nieczytelne
                   30% kart lub wiecej
    [30]  Kod 50 - 30 kolejno nieodczytanych kart magnetycznych:
                   CZERWONYCH, ZIELONYCH, NIEBIESKICH
    [30]  Kod 51 - 30 kolejno nieodczytanych kart kredytowych:
                   operatora, bankowych
    [30]  Kod 52 - 30 kolejno nieodczytanych kart elektronicznych:
                   OTO LUBLIN, NIEBIESKICH, RUCH 1, RUCH 2

S14.MENU AUTOTEST
    Ponizej umiescilem dokladny opis tego menu. Nie wszedzie rzeczywistosc
    pokrywa sie z tym, co umieszczono w instrukcji.

          ------------------
    10.1. |TEST  KLAWIATURY|
          |                |
          ------------------
             ------------------
    10.1.1   | PRZYCISK: ???  |
             |                |
             ------------------

             ??? = 0..9                      -> 0..9
                   A..D                      -> A..D
                   *                         -> wyjscie z podmenu
                   #                         -> #
                   FC (Nastepne polaczenie)  -> TRL
                   RD (Redial)               -> RP
                      (Zmiana jezyka)        -> LIN
                      (Zmiana glosnosci)     -> VOL
                      (Wymiana karty)        -> TC

          ------------------
    10.2. | TEST  WYSWIETL |
          |                |
          ------------------
             ------------------
    10.2.1.  |????????????    |
             |????????????    |
             ------------------

             W miejsce pytajnikow wyswietlane sa najpierw znaki zlozone
             z samych czarnych punktow, a pozniej co sekunde kolejne cyfry:
             same "0", same "1" i tak az do "9", pozniej znowu czarne znaki,
             cyfry i tak w kolo. Wyjscie klawiszem "*".

          ------------------
    10.3. |    TEST DRO    |
          |                |
          ------------------
             ------------------   ------------------
    10.3.1   |    DRO:  OK    |   |    DRO:  KO    |
             |                |   |                |
             ------------------   ------------------

             DRO to urzadzenie na centrali sprawdzajace, czy na kazdy impuls
             taryfikacyjny 16 kHz automat odpowiada impulsem 12 kHz. Spraw-
             dzanie takie moze odbywac sie podczas trwania rozmowy, ale row-
             niez podczas wybierania numeru. Zapewne kazdy slyszal (co jest
             latwo zauwazalne, gdy wybieranie numeru jest ustawione na DTMF)
             po pierwszej wybieranej cyfrze sygnal 16 (lub 12) kHz. Wyjscie
             z podmenu klawiszem "*".

          ------------------
    10.4. |   TEST  DTMF   |
          |                |
          ------------------
             ------------------
    10.4.1   |    DTMF: ?     |
             |                |
             ------------------

             Przy naciskaniu cyfr 0..9 generowane sa tony DTMF i w miejscu
             pytajnika wyswietlana jest odpowiednia cyfra. Wyjscie - "*".

          ------------------
    10.5. |TEST MIKROTELEF.|
          |                |
          ------------------
             ------------------   ------------------
    10.5.1.  |  SLUCHAWKA OK  |   |USZKODZ  SLUCHAW|
             |  MIKROFON  OK  |   |USZKODZ MIKROFON|
             ------------------   ------------------

             Pokazane sa tutaj dwa skrajne przypadki. Oczywiscie mozliwe
             tez sa kombinacje posrednie. Wyjscie klawiszem "*".

          ------------------
    10.6. | TEST  CZYTNIKA |
          |                |
          ------------------
             ------------------   ------------------   ------------------
    10.6.1.  | STAN  CZYTNIKA |   | STAN  CZYTNIKA |   | STAN  CZYTNIKA |
             |   CZYTNIK OK   |   |CZYTNIK NIESPRAW|   |CZYTNIK  USZKODZ|
             ------------------   ------------------   ------------------
             ------------------
    10.6.2.  |  ODCZYT KARTY  |
             |                |
             ------------------
                ------------------
    10.6.2.1.   |   WLOZ KARTE   |
                |                |
                ------------------
                ------------------   ------------------   ------------------
    10.6.2.2.   | KARTA  NIECZYT |   | KARTA NIEWAZNA |   |  KARTA ZUZYTA  |
                |                |   |                |   |                |
                ------------------   ------------------   ------------------
                ------------------   ------------------   ------------------
                |KARTA MAGN CZERW|   |KARTA MAGN ZIEL |   |KARTA MAGN NIEB |
                |                |   |                |   |                |
                ------------------   ------------------   ------------------
                ------------------   ------------------   ------------------
                |KARTA KREDY OPER|   |KARTA CHIP RUCH1|   |KARTA CHIP RUCH2|
                |                |   |                |   |                |
                ------------------   ------------------   ------------------
                ------------------   ------------------   ------------------
                |KARTA CHIP KONSE|   |KARTA CHIP NIEB |   |KARTA OTO       |
                |                |   |                |   |                |
                ------------------   ------------------   ------------------
             ------------------
    10.6.3.  |WERSJE  CZYTNIKA|
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.6.4.  |    WYJSCIE     |
             |                |
             ------------------

             Powyzsze menu nie wymaga chyba zadnych komentarzy...

          ------------------
    10.7. |  TEST BOLLINO  |
          |                |
          ------------------
             ------------------   ------------------   ------------------
    10.7.1.  |CZYTNIK:        |   |CZYTNIK:        |   |CZYTNIK:        |
             | BOLLINO OBECNE |   |USZK I2C BOLLINO|   |  BRAK BOLLINO  |
             ------------------   ------------------   ------------------
             ------------------   ------------------   ------------------
    10.7.2.  |KLAWIATURA:     |   |KLAWIATURA:     |   |KLAWIATURA:     |
             | BOLLINO OBECNE |   |USZK I2C BOLLINO|   |  BRAK BOLLINO  |
             ------------------   ------------------   ------------------
             ------------------   ------------------   ------------------
    10.7.3.  |MIKROTELEFON:   |   |MIKROTELEFON:   |   |MIKROTELEFON:   |
             | BOLLINO OBECNE |   |USZK I2C BOLLINO|   |  BRAK BOLLINO  |
             ------------------   ------------------   ------------------
             ------------------   ------------------   ------------------
    10.7.4.  |WYSWIETLACZ:    |   |WYSWIETLACZ:    |   |WYSWIETLACZ:    |
             | BOLLINO OBECNE |   |USZK I2C BOLLINO|   |  BRAK BOLLINO  |
             ------------------   ------------------   ------------------
             ------------------   ------------------   ------------------
    10.7.5.  |PLYTA GLOWNA:   |   |PLYTA GLOWNA:   |   |PLYTA GLOWNA:   |
             | BOLLINO OBECNE |   |USZK I2C BOLLINO|   |  BRAK BOLLINO  |
             ------------------   ------------------   ------------------

             Powyzsze menu pozwala sprawdzic stan pamieci znamionowych
             aparatu. Kazda pamiec znamionowa zawiera 11 bajtow danych
             i jednoznacznie charakteryzuje dana czesc.

          ------------------
    10.8. |  TEST  ZEGARA  |
          |                |
          ------------------
             ------------------   ------------------
    10.8.1.  |dd/mm/rrrr gg:mm|   | USZKODZ  ZEGAR |
             |                |   |                |
             ------------------   ------------------

             Tu tez nie potrzeba komentarzy... :)

          ------------------
    10.9. |  TEST BATERII  |
          |                |
          ------------------
             ------------------
    10.9.1.  |BATERIA: 0.00 V |
             |                |
             ------------------

             Tu pokazane jest napiecie akumulatorka, powinno wynosic
             5.31..7.38V.

          ------------------
    10.10.|   TEST LINII   |
          |                |
          ------------------
             ------------------   ------------------
    10.10.1. |  LINIA:  00mA  |   |  LINIA: >30mA  |
             |                |   |                |
             ------------------   ------------------

             A tu wartosc pradu linii, do programowania pamieci FLASH
             (czyli do programowania plikow przysylanych z STG) powinna
             wynosic > 23.33mA.

          ------------------
    10.11.|TEST SYGN CENTR |
          |                |
          ------------------
             ------------------   ------------------
    10.11.1. |TEST SYGN CENTR |   |TEST SYGN CENTR |
             |  SYGNAL: ON    |   |  SYGNAL: OFF   |
             ------------------   ------------------

             Sprawdza obecnosc dialtone'a.

          ------------------
    10.12.|POM  TEMPERATURY|
          |                |
          ------------------
             ------------------   ------------------
    10.12.1. |  TEMP:  00*C   |   |  TEMP: -00*C   |
             |                |   |                |
             ------------------   ------------------

             Tu wiadomo... :)
             Temperatura otoczenia uzywana jest przez procesor DSP
             (czyli sygnalowy) w module czytnika do korekcji odczytu
             sygnalu z karty magnetycznej.

          ------------------
    10.13.| WERSJE  PLIKOW |
          |                |
          ------------------
             ------------------
    10.13.1. |OTP             |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.2. |OPROGRAMOWANIE  |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.3. |OPROG CZYTNIKA  |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.4. |BIALA LISTA     |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.5. |PELN CZARNA LIST|
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.6. |NR BEZPLATNE    |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.7. |NR ZABLOKOWANE  |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.8. |AUTOTARYFIKACJA |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.9. |KONFIGURACJA    |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.10.|PARAM CENTRALI  |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.11.|KOMUNIK GLOSOWE |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.12.|REKLAMY         |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.13.|KOMUNIKATY WYSW |
             |  WERSJA: 00.00 |
             ------------------
             ------------------
    10.13.14.|PROFILE OPROG   |
             |  WERSJA: 00.00 |
             ------------------

             Wyjscie z podmenu mozliwe w kazdym momencie klawiszem "*".
             Odnosnie czarnej listy - wyswietlany jest numer wersji PELNEJ
             czarnej listy. Wyroznienie to wynika stad, ze podczas projekto-
             wania systemu przewidziano mozliwosc wysylania do automatu sa-
             mego uaktualnienia juz istniejacej czarnej listy. Najwyrazniej
             jednak rozmyslono sie, gdyz w komunikacji automat - STG nie sa
             przesylane numery wersji pliku uaktualnienia czarnej listy,
             a w programie automatu pozostaly tylko szczatkowe fragmenty
             swiadczace o takim pomysle - automat nigdy nie sciaga pliku
             uaktualnienia czarnej listy, nie posiada tez procedur progra-
             mowania takich danych w pamieci FLASH. Poniewaz "jajka" korzys-
             taja z tego samego STG i tego samego schematu komunikacji, wiec
             one tez zapewne nie korzystaja z pliku uaktualnienia i za kazdym
             razem sciagaja pelna czarna liste.

          ------------------
    10.14.|    WYJSCIE     |
          |                |
          ------------------

          Nareszcie koniec :)

S15.KARTY SERWISOWE
    Zaczne od tego, ze srebrny Urmet uznaje za niewazne wszystkie karty ser-
    wisowe z niebieskiego Urmeta, w tym rowniez Check58. Przyjmuje tylko karty
    elektroniczne, ktore dzialaja rowniez na "jajkach". W chwili obecnej po-
    siadamy juz napisany (dodam skromnie, ze przeze przeze mnie :)) generator
    tych kart, wiec wszystkie opisywane tu rodzaje kart zostaly przetestowane
    praktycznie - przez Shadowa na zrobionym przez niego emulatorze (dzieki,
    dzieki). Tak wiec wszystko, co jest tu napisane, powinno zgadzac sie
    z rzeczywistoscia. Od rodzaju karty zalezy, co mozemy zmieniac w menu.
    TPSA posiada na pewno karty typu I i II, prawdopodobnie rowniez VIII i IX.
    Karta typu VIII jest o tyle ciekawa, ze do wyswietlenia menu nie jest po-
    trzebne otwarcie automatu, a przy tym daje ona mozliwsc zmiany praktycznie
    wszystkich ustawien. Karta typu X pozwala obejrzec w Menu Alarmow dodatko-
    we kody alarmow, oznaczone w umieszczonym gdzies wyzej w spisie wykrzykni-
    kiem. Centrum nadzoru otrzymuje numer uzytej karty - ale nie zawsze! Dla
    karty typu VIII w miejsce bajtow z numerem karty wstawiana jest wartosc
    0x99. Widoczny jest wiec fakt uzycia karty, ale niemozliwe jest jej ziden-
    tyfikowanie. Ponizej wymienilem wszystkie mozliwe typy kart serwisowych:

    a) Typ 0             -bez mozliwosci zmiany numerow aparatu i STG
                         -bez mozliwosci zmiany ustawien zegara

    b) Typ I             -z mozliwoscia zmiany numerow aparatu i STG
                         -z mozliwoscia zmiany ustawien zegara

    c) Typ II            -bez mozliwosci zmiany numerow aparatu i STG
                         -z mozliwoscia zmiany ustawien zegara

    d) Typ VIII          -z mozliwoscia zmiany numerow aparatu i STG
                         -z mozliwoscia zmiany ustawien zegara
                         -wyswietla menu "WSPOLPRACA Z STG"
                         -NIE WYMAGA OTWARCIA DRZWI APARATU
                         -NUMER KARTY NIE JEST LOGOWANY DO STG
 *                        (nie wiadomo czy rowniez w "jajku" CTP-I)

    e) Typ IX            -z mozliwoscia zmiany numerow aparatu i STG
                         -z mozliwoscia zmiany ustawien zegara
                         -wyswietla menu "WSPOLPRACA Z STG"

    f) Typ X             -z mozliwoscia zmiany numerow aparatu i STG
                         -z mozliwoscia zmiany ustawien zegara
                         -wyswietla menu "WSPOLPRACA Z STG"
                         -z mozliwoscia ogladania dodatkowych kodow
                          alarmow, normalnie nie wyswietlanych

S16.ZABEZPIECZENIA KART SERWISOWYCH
    Hm, poniewaz rozpisywalem sie juz o emulatorze takich kart, wiec wniosek
    jest prosty: zabezpieczenia sa mozliwe do zlamania w sensownym czasie.
    W praktyce sa to karty z ukladem Siemensa SLE 4406, czyli zwykle karty
    pamieciowe. Problem polega na tym, ze pierwsze dwa bajty takiej karty sa
    pamiecia ROM programowana w trakcie produkcji, a po tych wlasnie bajtach
    rozpoznawany jest rodzaj karty i operator. Watpliwe jest, zeby Siemens ze-
    chcial sprzedac komus karty z naglowkiem takim, jakiego uzywa TPSA. Po-
    niewaz trudno znalezc zamiennik (dostepne w sprzedazy karty z mikrokontro-
    lerami PIC i Atmel sa taktowane z nozki Clock karty - nie maja wewnetrz-
    nego kwarcu, na dodatek niektore z nich, o ile nie wszystkie, maja Reset
    sterowany przeciwnym stanem logicznym niz karty SLE 44x6/SLE 5536), pozos-
    taje sobie zrobic emulator na plytce drukowanej z zewnetrznym mikrokon-
    trolerem (np. Atmel AT89C1051). Jezeli posiadamy zczytana oryginalna karte
    serwisowa, mozemy po odpowiednim zaprogramowaniu rzeczonego mikrokontrole-
    ra ja zaemulowac. Jezeli zas chcemy zrobic sobie karte bez posiadania
    zapisu karty oryginalnej, musimy jeszcze poznac algorytm chroniacy inte-
    gralnosc zapisu takiej karty. Wymaga to dosc duzo zabawy z softem automa-
    tu, ale daje nastepujace korzysci: mozemy sobie wygenerowac dowolny typ
    karty oraz mozemy jej nadac wymyslony przez nas PIN. W celu sprawdzenia
    poprawnosci dane z karty sa kodowane DES-em z kluczem zaleznym czesciowo
    od danych karty, a czesciowo zawartym w kodzie automatu (odwolanie do
    niego wystepuje w dosc niezwykly sposob, wiec trudno go znalezc). Jezeli
    otrzymany rezultat kodowania DES-em pokrywa sie z odpowiednimi bajtami
    na karcie, karta jest akceptowana. I to wszystko :)

 *  Nalezaloby jeszcze dodac, ze karty serwisowe nie moga zostac fizycznie
 *  skasowane w przypadku jajek, gdyz pierwsze 8 bajtow karty (bajty te za-
 *  wieraja istotne dane karty) nie moze byc zapisywane, a kolejne 8 bajtow
 *  (m.in. licznik) nie jest w przypadku jajka istotne. Natomiast w przypadku
 *  srebrnych automatow co najmniej jeden z bajtow 8..15 jest istotny, tak
 *  wiec mozliwe jest, ze karte da sie "unieszkodliwic" np. poprzez zmiane
 *  stanu licznika. Nawet w takim jednak wypadku karta ta dalej bedzie pop-
 *  rawna z punktu widzenia jajka (format danych na karcie elektronicznej
 *  opisany jest nizej w rozdziale "Format danych kart elektronicznych").
 *  Oczywiscie zmiana oprogramowania jajka moze wymusic analogiczne jak
 *  w srebrnym automacie traktowanie bajtow 8..15.

    W obecnej wersji oprogramowania nie ma tez mozliwosci wciagania kart
    serwisowych na czarna liste, ale to moze sie kiedys zmienic.

 *  Podczas komunikacji z centrum nadzoru wysylany jest do niego numer uzy-
 *  tej karty serwisowej (z wyjatkiem karty typu VIII - patrz rozdzial "Karty
 *  serwisowe" wyzej), ale obecnie (tj. przy obecnym oprogramowaniu automatow)
 *  nielegalne uzywanie takich kart nie wiaze sie z ryzykiem ich skasowania
 *  lub zablokowania.

S17.PRZYCISK "TEST"
    Na plycie glownej znajduja sie dwa przyciski: pierwszy z nich to Reset,
    a drugi nazywa sie Test. Jezeli automat jest uszkodzony, to jego nacis-
    niecie powoduje wyswietlenie menu identycznego jak dla karty serwisowej
 *  typu 0. Jezeli automat jest sprawny, uzycie tego przycisku nie wlacza
    zadnego menu.

S18.FORMAT DANYCH KART ELEKTRONICZNYCH
 *  Ponizej przedstawilem standardowy format zapisu na kartach elektronicznych
    SLE 4406/SLE 4436/SLE 5536. Nazwy angielskie to oznaczenia zaczerpniete
    z dokumentacji. Przy odczycie karty licznik danych karty zeruje sie dla
    512 bitu, innymi slowy przy odczycie dane powtarzaja sie cyklicznie co 64
 *  bajty. Przy odczycie bajtow o adresach wiekszych od 29 karta zwraca war-
 *  tosc 0xFF. Czym jest karta OTO Lublin wyjasnilem w rozdziale "Karty zwyk-
 *  le".

    Przykladowa karta OTO Lublin:

    97 74  26  FC 04 CD 35 2B  00 00 00 FC 80  7F  FF FF  FF FF FF FF FF FF
    -----  --  --------------  --------------  --  -----  -----------------
    0. 1.  2.  3. 4. 5. 6. 7.  8. 9. 10.11.12. 13. 14.15. 16.17.18.19.20.21.


    FF FF FF FF FF FF  FF FF
    -----------------  -----
    22.23.24.25.26.27. 28.29.


    0,1    - Manufacturer Code
             Kod nadawany przez producenta charakteryzujacy odbiorce karty
             i jej rodzaj. Programowany trwale przez producenta kart (Siemen-
             sa), jest to pamiec typu ROM. Czasami (np. w niektorych kartach
             OTO Lublin) mozna wyzerowac bit #0x08 bajtu 0, co oznacza, ze
 *           z karty zostaly juz skasowane jakies jednostki (karta nie jest
 *           pelna). Po ewentualnym wyzerowaniu wspomnianego bitu:
 *
 *           W przypadku kart serwisowych:
 *
 *             DaneZKarty[0,1]         - 0x19,0xC4
 *
 *           W przypadku kart OTO Lublin:
 *
 *             DaneZKarty[0,1]         - 0x97,0x74 - Sempac [Se]
 *                                       0x05,0xF4 - Sempac [Se1]
 *                                       0x97,0xCC - Schlumberger [S] -
 *                                                   najnowszy rodzaj
 *
 *             Nazwy i skroty w opisach oznaczaja rodzaj stykow ukladu scalo-
 *             nego karty i zaczerpniete sa z katalogow kart telefonicznych.
 *
 *           Producentem ukladow scalonych do kart jest Siemens, ale wklejania
 *           ukladow w karty i ich programowania dokonuje dostawca kart, stad
 *           nazwy typu Sempac czy Schlumberger oznaczaja nazwe linii produk-
 *           cyjnej uzywanej przez dostawce kart lub samego dostawce. Od linii
 *           produkcyjnej i dostawcy zalezy wyglad stykow ukladu scalonego.
 *           Polski dostawca kart (OTO Lublin) uzywa linii produkcyjnej firmy
 *           Sempac.
 *
 *           Przedstawicielem najnowszego rodzaju kart (Schlumberger) jest ta-
 *           ka fajna polprzezroczysta karta z rybka (nie ma na niej napisu
 *           OTO Lublin, wyglada na to, ze jest w calosci produkowana za gra-
 *           nica), a poniewaz jest ona przepuszczalna dla podczerwieni (co
 *           latwo mozna sprawdzic pilotem TV), a czujnik w automacie dziala
 *           wlasnie na podczerwien, to czesc automatow glupieje i nie przyj-
 *           muje tych kart, podczas gdy nieprzezroczyste karty chipowe sa
 *           przez nie przyjmowane. Nie pomaga nawet (co osobiscie sprawdzi-
 *           lem) naklejenie w odpowiednim miejscu ciemnej folii samoprzylep-
 *           nej, bo ona tez jest przepuszczalna dla podczerwieni...
 *
 *           Wprowadzenie do obiegu kart z nowymi naglowkami pociaga za soba
 *           koniecznosc wymiany oprogramowania czytnikow w automatach.


    2      - Manufacturer Data
             Bajt ustawiany przez dostawce kart, tego, ktory dokonuje progra-
             mowania numeru seryjnego i poczatkowej liczby jednostek (w spec-
             jalnym trybie pracy karty, trybu tego nie da sie wlaczyc ponow-
             nie). U nas takim dostawca jest OTO Lublin.

 *           W przypadku kart serwisowych:
 *
 *             DaneZKarty[2]           - 0xFF
 *
 *           W przypadku kart OTO Lublin:
 *
 *             DaneZKarty[2]           - 0x26


    3..7   - Personalization Data
 *           Numer karty, programowany jest u dostawcy, po zakonczeniu progra-
 *           mowania nie da sie zmieniac.
 *
 *           W przypadku kart serwisowych:
 *
 *             DaneZKarty[3],
 *             DaneZKarty[4],
 *             DaneZKarty[5] and #0xF0,
 *             DaneZKarty[6],
 *             DaneZKarty[7]           - zakodowany numer karty i PIN
 *
 *             DaneZKarty[5] and #0x0F - typ karty serwisowej
 *
 *             Musi byc spelniony warunek: DaneZKarty[3] xor DaneZKarty[4] xor
 *             DaneZKarty[5] xor DaneZKarty[6] xor DaneZKarty[7] <> 0.
 *
 *           W przypadku kart OTO Lublin:
 *
 *             Odwracamy kolejnosc bitow w bajcie DaneZKarty[3] i teraz:
 *
 *             DaneZKarty[3] and #0x3F - numer emisji (dla kart z naglowkiem
 *                                       0x97,0xCC numer emisji kodowany jest
 *                                       w inny sposob, dopoki nie dorwe aktu-
 *                                       alnego softu czytnika, nie dowiem sie
 *                                       jak - w kazdym razie emisji 50 odpo-
 *                                       wiada bajt 0xC9 na karcie)

               DaneZKarty[4]           - numer serii

               DaneZKarty[5] + 256 * DaneZKarty[6]
                                       - numer karty w serii

 *             DaneZKarty[7]           - jesli bit #0x80 jest ustawiony, karta
 *                                       posiada zapisany maksymalnie 12-cyf-
 *                                       rowy numer telefoniczny, patrz opis
 *                                       bajtow 22..27 (w polskich kartach
 *                                       mozliwosc ta nie jest wykorzystywana,
 *                                       gdyz zamiast numeru posiadaja one
 *                                       drugi klucz kryptograficzny). Pozos-
 *                                       tale 7 mlodszych bitow oznacza rodzaj
 *                                       karty (jej maksymalna pojemnosc)
 *                                       i tak:

                                         0x17 - karta 25
                                         0x2B - karta 50
                                         0x53 - karta 100

 *             Program plyty glownej sprawdza tylko bit #0x80, natomiast prog-
 *             ram czytnika dekoduje sobie z calego 7 bajtu (wlacznie z bitem
 *             #0x80, co dla wartosci wiekszych od 0x7F powoduje kolizje...)
 *             maksymalna liczbe jednostek, porownuje ja ze stanem licznika
 *             i w przypadku, gdy licznik jest za duzy, nie akceptuje karty
 *             (automat srebrny) lub przerywa polaczenie przy kasowaniu pierw-
 *             szej jednostki z karty i kasuje karte (jajko). Maksymalna licz-
 *             be jednostek wyznacza sie ze wzoru:
 *
 *             (DaneZKarty[7] shr 2) * 5
 *
 *             Z tego wzoru wynika, ze maksymalna liczba jednostek na karcie
 *             moze wynosic (0xFF shr 2) * 5 = 315. Jednak bajty o wartosciach
 *             z zakresu 0xF4..0xFF maja specjalne znaczenie, wobec czego dla
 *             wartosci:
 *
 *             0x00..0x7F - karta nie ma zapisanego numeru telefonicznego,
 *                          maksymalna liczba jednostek to 0..155
 *
 *             0x80..0xF3 - karta ma zapisany numer telefoniczny,
 *                          maksymalna liczba jednostek to 160..300
 *
 *             0xF4..0xF7 - wartosc specjalna, karta ma zapisany numer tel.,
 *                          maksymalna liczba jednostek to 5000 (jajko)
 *                          lub 1160 (srebrny)
 *
 *             0xF8..0xFB - wartosc specjalna, karta ma zapisany numer tel.,
 *                          maksymalna liczba jednostek to 4000 (jajko)
 *                          lub 160 (srebrny)
 *
 *             0xFC..0xFF - wartosc specjalna, karta ma zapisany numer tel.,
 *                          maksymalna liczba jednostek to 3500 (jajko)
 *                          lub 940 (srebrny)
 *
 *             Jak widac wystepuja istotne roznice w implementacji wartosci
 *             specjalnych w sofcie czytnikow srebrnego automatu i jajka. Na
 *             dodatek wartosci specjalne w srebrnym Urmecie wygladaja cokol-
 *             wiek dziwnie i w dodatku nie sa ulozone malejaco, no ale to
 *             nie ja tak wymyslilem :)
 *
 *             Karty polskie posiadaja drugi klucz kryptograficzny (co wynika
 *             z softu czytnika jajka - karta bez drugiego klucza nie jest ak-
 *             ceptowana), tak wiec nie posiadaja numeru telefonicznego, teo-
 *             retycznie wiec dozwolone wartosci opisywanego bajtu to 0x00..
 *             0x7F (czyli te, w ktorych bit #0x80 jest wyzerowany). Dla war-
 *             tosci 0x80..0xFF automat bedzie probowal wybrac numer telefo-
 *             niczny zapisany na karcie. Poniewaz jednak w miejscu numeru
 *             znajduje sie drugi klucz kryptograficzny, to jego odczyt zwraca
 *             same wartosci 0xFF, co daje numer pusty, czyli o zerowej dlu-
 *             gosci. Karta z numerem pustym jest traktowana tak jak karta bez
 *             zapisanego numeru, a wiec nie jest on automatycznie wybierany
 *             i mozna z karty normalnie korzystac dzwoniac z niej na dowolny
 *             numer (patrz opis bajtow 22..27 i opis kart OTO Lublin w roz-
 *             dziale "Karty zwykle"). Wniosek z tego jest taki, ze dopoki
 *             na karcie jest zapisany drugi klucz kryptograficzny (tak jak
 *             w kartach polskich) albo pusty numer telefoniczny, dopoty bajt
 *             7 karty moze przyjmowac dowolne wartosci, a wtedy maksymalna
 *             liczba jednostek wynosi 1160 (srebrny) lub 5000 (jajko).


    8..12  - Counter Area
 *           Licznik jednostek, mozna zerowac dowolne bity oraz zerowac bit
             z przeniesieniem (ustawieniem wszystkich bitow nastepnego bajtu
             na jedynki - tylko w obrebie licznika). Innymi slowy mozliwe jest
             tylko zmniejszanie licznika. Najmlodszy bit najstarszego bajtu
             licznika (bajtu 8) jest znacznikiem wskazujacym czy karta jest
             przed czy po fazie programowania (przez dotawce kart). Po zapro-
 *           gramowaniu karty bit ten jest zerowany, tak wiec w funkcji licz-
 *           nika pozostaje tylko siedem mlodszych bitow najstarszego bajtu
 *           licznika, wobec czego maksymalna wartosc licznika teoretycznie
 *           wynosi 33352 jednostki. Jednak producenci zastrzegaja sobie tro-
 *           che jednostek dla celow testowych, tak wiec maksymalna wartosc
 *           licznika, jaka jest mozliwa do wykorzystania, to 21064 (roznica
 *           miedzy 33352 i 21064 odpowiada skasowaniu 3 bitow w najstarszym
 *           bajcie licznika, wiec w sumie do praktycznego wykorzystania po-
 *           zostaje polowa najstarszego bajtu, bo jeszcze jeden bit jest
 *           znacznikiem fazy programowania, jak juz napisalem troche wyzej).
 *           Gdyby udalo sie pomyslnie zaemulowac karte, to po wykorzystaniu
 *           wszystkich bitow najstarszego bajtu licznika maksymalna pojemnosc
 *           karty wynioslaby 37448 jednostki. Nalezy jednak zauwazyc, ze
 *           w polskich kartach w bajcie 7 karty zakodowana jest maksymalna
 *           liczba jednostek, tak wiec licznik polskich kart nie moze przek-
 *           roczyc pewnych wartosci (patrz opis bajtu 7 karty).
 *
 *           W przypadku kart serwisowych:
 *
 *             DaneZKarty[8,9,10,11,12]   - 0x7E,0x7E,0xE7,0xFF,0xC3 (w jaj-
 *                                          kach nieistotne, w srebrnych naj-
 *                                          prawdopodobniej tak - co najmniej
 *                                          jeden z bajtow z zakresu 8..15
 *                                          jest istotny), odpowiada to war-
 *                                          tosci licznika rownej 28100, jest
 *                                          to wartosc wieksza od maksymalnej
 *                                          wartosci deklarowanej do uzytku
 *                                          przez producentow, czyli 21064
 *
 *           W przypadku kart OTO Lublin:
 *
 *             DaneZKarty[8,9,10,11,12]   - licznik


    13     - Counter Backup / Authentication Key 2 Init Flag
             Bajt pomocniczy, nie da sie zmieniac. Zawiera 4 bity tzw. backupu
             licznika (anti-tearing flags) zabezpieczajace przed utrata jed-
             nostek w przypadku naglego wyjecia karty podczas kasowania. Za-
 *           wiera tez flage #0x40 umozliwiajaca rozpoznanie czy karta zawiera
 *           drugi klucz kryptograficzny.
 *
 *           W przypadku kart serwisowych:
 *
 *             DaneZKarty[13]             - 0xFF (w jajkach nieistotne,
 *                                          w srebrnych najprawdopodobniej
 *                                          tak - co najmniej jeden z bajtow
 *                                          z zakresu 8..15 jest istotny)
 *
 *           W przypadku kart OTO Lublin:
 *
 *             DaneZKarty[13]             - 0x7F


    14,15  - Data Area 1
             Miejsce na dane uzytkownika. W polsce sa to 2 bajty sluzace do
             porzadkowania bitow w liczniku, jesli bity licznika w wyniku
             bledow byly kasowane nie po kolei (normalnie w obrebie bajtu
             licznika bity kasowane sa od LSB do MSB). Kazde porzadkowanie
             powoduje zuzycie jednego bajtu, mozliwe jest wiec dwukrotne po-
             rzadkowanie licznika, przy trzecim wystapieniu nieuporzadkowania
             karta przestaje byc akceptowana (Urmet srebrny) lub zostaje cala
             skasowana przy probie skasowania jednostki (jajko). Bajty te
             moga byc zablokowane i wtedy nie daja sie modyfikowac, w przeciw-
             nym razie mozna kasowac wszystkie bity obydwu bajtow (oczywiscie
             zuzywajac tym samym odpowiedni bajt/bajty).

 *           W przypadku kart serwisowych:
 *
 *             DaneZKarty[14,15]          - 0xFF,0xFF (w jajkach nieistotne,
 *                                          w srebrnych najprawdopodobniej
 *                                          tak - co najmniej jeden z bajtow
 *                                          z zakresu 8..15 jest istotny)
 *
 *           W przypadku kart OTO Lublin:
 *
 *             DaneZKarty[14,15]          - 0xFF,0xFF (gdy licznik nie byl
 *                                          nigdy porzadkowany, po porzadko-
 *                                          waniu licznika wystepuja tu inne
 *                                          wartosci)


    16..21 - Authentication Key 1
             Pierwszy klucz kryptograficzny uzywany przez karte do obliczania
             odpowiedzi na zadawane pytania. Nie da sie go odczytac ani zmie-
             niac, karta zawsze zwraca bajty 0xFF.


    22..27 - Authentication Key 2 / Data Area 2
             Drugi klucz kryptograficzny (jesli karta jest przeznaczona do
             uzywania w automatach dwoch operatorow) lub dane uzytkownika.
             Jesli jest tu zapisany klucz kryptograficzny, nie da sie go od-
             czytac (karta zwraca 0xFF). Karta OTO Lublin moze miec tu zapi-
             sany 12-cyfrowy numer telefoniczny (w kodzie BCD), ktory zostaje
             wybrany automatycznie po wlozeniu karty do automatu, o czym juz
 *           napisalem przy opisie kart OTO Lublin w rozdziale "Karty zwykle".
 *           jednak mozliwosc ta nie jest wykorzystywana, gdyz polskie karty
 *           posiadaja drugi klucz kryptograficzny. Standardowo wszedzie 0xFF,
             nie da sie zmieniac.


    28,29  - Data Area 3
             Miejsce na dane uzytkownika. Zwykle nieuzywane, zawiera bajty
             0xFF i nie da sie zmieniac.

 *  Na stronie Hrabiego (http://phreak.hack.pl) mozna znalezc program Konwer-
    ter.exe sluzacy do przetwarzania danych z polskich kart elektronicznych
    (z jednostkami). Mozna tam tez znalezc Chip.exe - prosty program do odczy-
    tu i kasowania (nie napelniania!!! nawet o to prosze nie pytac!!!) jednos-
    tek z kart telefonicznych, nie wymaga on zadnej dodatkowej elektroniki,
    ale trzeba sie niekiedy pomeczyc z odpowiednimi ustawieniami portu LPT
 *  w BIOS-ie, wszystko jest napisane w pomocy (zeby uniknac pytan: wywolanie
 *  pomocy "Chip.exe /?" - co jest zreszta napisane).

S19.PRYWATNE STG :)
    Obecnie mam napisane dwa programiki pod Windows: jeden nazywa sie "Symu-
    lacja automatu" i zawiera przepisane na Intela procedury odpowiadajace za
    logike komunikacji (formaty danych itp.), natomiast drugi nazywa sie
    "Symulacja STG" :)) Oba programiki bardzo ladnie sie ze soba komunikuja,
    cala logika STG jest juz gotowa. Obsluga modemu dzieki wielkiej pomocy
    kolegi (dla ktorego wielkie tutaj podziekowania) rowniez jest juz gotowa.
    Pozostaje jeszcze zrobienie ladnego interfejsu. Wiecej nic na razie nie
    powiem :)

S20.INNE (NIZ 2.60) WERSJE OPROGRAMOWANIA
    Chwile juz temu pojawila sie nowa wersja oprogramowania plyty glownej -
    2.70. Jedyna chyba nowosc w tej wersji to mozliwosc blokowania kart
    magnetycznych poprzez ich dzielnik - dzieki temu w srebrnych automatach
    wylaczono mozliwosc korzystania z kart z podzielnikiem odpowiadajacym
    maksymalnej pojemnosci karty wiekszej niz 25 jednostek. Krok ten niewat-
    pliwie zostal podyktowany masowym zalewem nielegalnie produkowanych kart.
    Wciaz mozliwe jest jednak zawyzanie liczby jednostek i nagrywanie na kar-
    tach 25 kilku jednostek wiecej poprzez wydluzenie zapisu w trzeciej czesci
    karty, jak to wymyslil Shadow.

    Posiadam tez dosc pokazny zbior plikow z oprogramowaniem w wersjach star-
    szych niz 2.60, ale raczej nie bede juz do nich zagladal...




============ WSPOLNE =========================================================

W1. GDY TPSA MA PODEJRZENIA
    Jesli cos dziwnego dzieje sie z automatem, tzn. statystyki przestaja sie
    zgadzac, TPSA odlacza automat od linii (co objawia sie brakiem jakiejkol-
    wiek reakcji po podniesieniu sluchawki). Wtedy, jesli rozmowy z linii da-
    lej sa wykonywane, oznacza to, ze ktos wpial sie w linie automatu. Jesli
    nie, to prawdopodobnie znaleziono jakis nowy blad w sofcie :) Takie
    odlaczenie automatu trwa czasem dwa tygodnie, a czasem i miesiac...

W2. LINKI
    Ponizej umiescilem kilka linkow, ktore moga okazac sie przydatne:

    http://phreak.hack.pl - warto zobaczyc :)))
 *  http://www.underground.org.pl - polecam PhreakBoard, czasem mozna nawet
 *                                       dowiedziec sie tam czegos ciekawego,
 *                                       a poza tym kto kogo nie lubi itp. ;))
    http://www.telefonica.com.pl
    http://www.urmet.it
    http://www.geocities.com/ResearchTriangle/Lab/1578/smart.htm -
                                strona o bezpieczenstwie kart elektronicznych
    http://gsho.thur.de - German Smartcard Hackers Organisation -
                                                                po niemiecku!

W3. ZAKONCZENIE
    Na zakonczenie chcialbym powiedziec, ze, niestety, nie rozdaje kodow
    zrodlowych, chyba ze ktos mialby cos naprawde ciekawego do wymiany,
    choc w zasadzie nie wiem, co jeszcze mogloby mi byc potrzebne... ;)
    Wszysko, co mam do rozdawania, mozna znalezc na stronie phreak.hack.pl,
    a jesli czegos tam nie ma, to znaczy ze tego nie mam albo nie chce dac.

    I uwaga: NICZEGO NIE SPRZEDAJE!!! Powtarzam: NICZEGO NIE SPRZEDAJE!!!

    Chcialbym tez dodac, ze podczas swoich doswiadczen nigdy nie zrobilem
    krzywdy zadnemu automatowi, za to udalo mi sie wiele automatow przywro-
    cic do stanu uzywalnosci...

    Prosze tez o troche cierpliwosci w oczekiwaniu odpowiedzi na listy,
    a zwlaszcza w wakacje...

    Teraz nadszedl czas na to co zwykle:

    Podziekowania i pozdrowienia:
     - Aga - tu sie nic nie zmienilo: dzieki za wszystko 
     - Aldi, Madzia - :)
     - Przemek - dzieki za baaaardzo mila wspolprace, genialne pomysly,
       wspolne wyprawy i w ogole za wszystko :)))
     - Diodak - :)
     - Zabka - :)
     - Shroom Inc. - podziekowania za napisanie Shroom FAQ
     - Nol, Shadow, Robercik - dzieki za pomoc przy rozpracowywaniu softu
     - Xzbir - czlowiek, ktoremu sie chce cos robic i nie czeka na gotowe :)
     - Diceman - jeden z nielicznych, ktory wie, co tu sie dzieje ;)

    Pozdrowienia dla wszystkich z Urmet Developers :)

    I to juz tyle. Na razie... :)

             ===================>    Koniec    <===================


============ Obetnij ===========================================
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use

mQGiBDgBAVYRBAD4gtSMwwA3ePUhkwUAZitgL3gFc5Z+sTgz+7CACF5WiGmfoVt6
vI3a9AtCPKaWiUXFltt/DVkVvSvmdLMvOJI+06/cSUjFN3tUGBxHOsH6OMqJOzEd
Wn2XJf5QLUyBupfqtJoPe4tqyqC9F65Xqzk6EsPWf8EREmMcWft4nHeDDQCg/33m
yng1QTKq/66EmEpSlcblXbMEALweldeHgtsPF+MBS8JX2bFJp8zjJyPSPWPTeWSu
f0f3E6J/yaCUqfyCfX7KgklU+blBlUYlyjyorsK1VQa1lUIdWcaMbgSLIEyyzu49
Z/euRE0sI4E46bHDQVVCZX2OA7w1HgYnOtx6DUnPc7NJLqcvyd7EfStYigJIYNJl
Bpj1A/9JnXqC18WJSmqDYNbJrAMdVarGm93rRfd1Yccenm9wGWZtJORMGHaTp4qy
HTWckL3aN0ZEoVtBz+LUcsczBFMk8AhjXP/eDF9O0+7ZwOT3rMHLonlWK2YRGd9P
0vhvVhH/QllAZnijHwYZLJenSuOC4YCcuJ/osuypJj1VCeeuELQgS29sbmllcnp5
ayA8a29sbkBmcmlrbzYub25ldC5wbD6JAEsEEBECAAsFAjgBAVYECwMBAgAKCRBV
jKGUK7+FsnShAKDrjLzbzAgPSeVwazBpu0h0S+F3wwCbBMb95KoGAKWFHATebDgm
8YiYJdG0IEtvbG5pZXJ6eWsgPGtvbG5AcG9jenRhLm9uZXQucGw+iQBLBBARAgAL
BQI4NKNzBAsDAQIACgkQVYyhlCu/hbKvXgCg8HzqGh4cqitX1teJDHQJpA+JIcMA
njnAd+lP3VKxVJAJhTlT+zACQT6auQINBDgBAVcQCAD2Qle3CH8IF3KiutapQvMF
6PlTETlPtvFuuUs4INoBp1ajFOmPQFXz0AfGy0OplK33TGSGSfgMg71l6RfUodNQ
+PVZX9x2Uk89PY3bzpnhV5JZzf24rnRPxfx2vIPFRzBhznzJZv8V+bv9kV7HAarT
W56NoKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd5JEHNmszbDgNRR0PfIizHHxbLY72
88kjwEPwpVsYjY67VYy4XTjTNP18F1dDox0YbN4zISy1Kv884bEpQBgRjXyEpwpy
1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWakXUGfnHy9iUsiGSa6q6Jew1XpMgs7
AAICB/9kshefIzvExw89rTprhSINGlASU99itEYQlhBKu2FhHtVBw0RaW1h2OO7D
9hi21EOx2xe2OZMq9SHNnPW43tM3nKCd4wnZXNgPYZfyRH/+HJdJ2ms+bHXwhNcm
lANPeSejZkU/sUc9VMnZILyB91f9WtOfCIUUn8J+aR9GG16yShCeyVavoypuSLAz
gTTVdDADVRMxRrX7Xr+vKQn9V1I/6VRJOiBSY5xwMnxL2tDy9w2d64EBOHo7Js9f
Q4BaUs6yo/nwU8mnUVmNvF3m7JK6OWrTMlEBsAtSTJNUXnXGbwV4QE8esBk79/7M
jLwsiakyLrgfn2oH0CTpRx6kKGYqiQA/AwUYOAEBV1WMoZQrv4WyEQKB4ACfaGvY
gDEFYqOiVIYPLrjIyOu09xQAoNDeNmaveOGj0Wu04Dv+i4JxjUmj
=wWaL
-----END PGP PUBLIC KEY BLOCK-----
============ Obetnij ===========================================