===================> 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:...
xsquel