Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Edytor kart SLE 5528 / SLE 4428

vayo 04 Kwi 2013 11:49 16437 11
  • Edytor kart SLE 5528 / SLE 4428
    Witam,
    Przedstawiam projekt autorskiego edytora do kart SLE 5528, lub ich starszego odpowiednika SLE 4428 –„SLE 5528 / SLE 4428 Card Editor by vayo”. Na wstępie parę słów o samych kartach. Karty te to 1kB EEPROM z dwu bajtowym kodem zabezpieczającym przed zapisem. Posiadają możliwość zablokowania edycji każdego z 1024 bajtów. W kartach tych stosowany jest synchroniczny protokół transmisji.
    Teraz o samym edytorze… edytorem nazywam całe urządzenie, ponieważ nie posiada ono żadnego specjalistycznego oprogramowania do swojej obsługi, tj. edycji karty. Komunikacja między kartą a użytkowaniem odbywa się za pośrednictwem terminala –w moim przypadku jest to HyperTerminal z Windows XP obecnie przeniesiony na Windows 7. Sercem edytora jest Atmega32, a całość konstrukcji zmontowana jest na wykonanym w domu metodą fotochemiczną PCB. Budowa edytora nie jest skomplikowana, a ciekawi jego działania mogą go do testów zmontować nawet na tzw. „pająka”.
    Teraz o obsłudze. Jak już wcześniej wspomniałem, do komunikacji z kartą wykorzystywany jest terminal. Prawidłowe jego ustawienia to:
    -Liczba bitów na sekundę: 38400
    -Bity danych: 8
    -Parzystość: Brak
    -Bity stopu: 1
    -Sterowanie przepływem: Brak
    Jeżeli nic nie było zmieniane w konfiguracji samego terminala, to powyższe ustawienia powinny wystarczyć. W przeciwnym razie należy zadbać, aby czcionka była ustawiona na „Terminal/Regularne/14”, a emulacja na „Autowykrywanie” lub „ANSIW”.

    Jeżeli udało się nawiązanie połączenia z edytorem, to czas na parę słów o jego obsłudze. Ponowne wyrysowanie całego okna programu następuje po wciśnięciu przycisku na PCB lub {F4} –takie odświeżenie. Do czasu wsadzenia karty w gniazdo wyświetlany jest skrócony opis poleceń. Po włożeniu karty sprawdzany jest jej ATR i gdy jest zgodny [92 23 10 91] program czyta 272 bajty z karty (17 linii po 16 bajtów) i wyświetla je w oknie edycji. Na czerwono zaznaczone są bajty z aktywnym bitem blokady –edycja takiego bajtu nie jest możliwa nawet po poprawnym zalogowaniu do karty. Na zielono wyświetlane są bajty, które można zmienić po poprawnym zalogowaniu. Po oknie edycji poruszamy się strzałkami kursora. Edycji bajtu dokonujemy poprzez naciśnięcie klawisza {Enter} na wybranym bajcie. Jak już wcześniej wspomniałem edycji można dokonać tylko po poprawnym zalogowaniu do karty. Aby zalogować się do karty wciskamy {Ctrl}+{Enter}. Logowanie polega na podaniu 2 bajtów w formacie HEX (cztery znaki 0-9, A-F) za pomocą wirtualnej klawiatury po której poruszamy się również za pomocą strzałek kursora. Na dole widzimy pozostałą liczbę prób logowań. Po wykonaniu ośmiu nieudanych prób nigdy więcej nie będziemy mogli zalogować się do karty –sam jej odczyt będzie oczywiście nadal możliwy. Wpisując cyfry kodu wyświetlają się one do momentu „ruszenia się”, a następnie są maskowane gwiazdkami. W przypadku pomyłki przy wprowadzaniu znaku możemy cofnąć się za pomocą „przycisku” [Del]. Standardowy kod w nowych kartach to FF FF. Po udanym zalogowaniu możemy zmienić kod PSC na swój edytując bajt spod adresu 3FE (pierwszy bajt kodu) i 3FF (drugi bajt kodu). Bajtu spod adresu 3FD proponuje nigdy nie ruszać, bo jest to licznik błędnych logowań –jest on „efowany” automatycznie przez edytor po poprawnym zalogowaniu. Ustawienie bitu blokady na tym bajcie skutkować będzie niemożliwością zalogowania, bo przed każdą próbą zalogowania musi być skasowany bit z tego bajtu! Te trzy bajty (kod PSC i licznik błędów) w nagłówku okna edycji zamiast adresu mają opisy „Error Counter”, „PSC_1” i „PSC_2”. W oknie edycji bajtu poruszamy się również za pomocą strzałek kursora. Gdy nie została dokonana edycja bajtu, to wciskając wielokrotnie strzałkę w dół będziemy poruszać się między [Bajt]-[lock]-[Cancel]-[Bajt]-[lock]-[Cancel] itd. Gdy bajt został zmieniony, to poruszać będziemy się już między [Bajt]-[lock]-[Save]-[Bajt]-[lock]-[Save] itd. Zrobiłem to po to, aby niepotrzebnie nie wykonywać zapisu do karty, gdy wartość bajtu nie została zmieniona. Oczywiście stojąc na [Save] zawsze możemy przejść na [Cancel] lub odwrotnie korzystając z lewej bądź prawej strzałki. Po zmianie wartości bajtu wiemy, że „ruch obrotowy” będzie między nim, [lock] i [Save], ale zaznaczenie „lock” zmieni trasę „ruchu obrotowego” z powrotem na [Cancel] –ma to zapobiec nieumyślnemu zablokowaniu bajtu. Zamiast potwierdzenia, że jesteśmy pewni tego co robimy musimy po prostu przejść z [Cancel] na [Save] za pomocą lewej lub prawej strzałki. Aby wyedytować bajt stojąc na nim wciskamy {Enter}, a następnie strzałkami góra / dół zmieniamy jego wartość. U dołu widoczny jest podgląd znaku ASCII. Gdy już strzałkami ustawimy odpowiednią wartość tego bajtu, to wciskając ponownie {Enter} znów poruszamy się w oknie edycji między bajtem, [lock] a jednym z „przycisków”. Wszystko co tu robimy jest natychmiast wykonywane na karcie! Bezpieczniejszą metodą edycji jest praca na buforze. Przełączanie między buforem a kartą odbywa się za pomocą klawisza {Tab}. „C” w lewym górnym rogu oznacza pracę bezpośrednio na karcie, a „B” pracę na buforze. W prawym górnym rogu kolory „OK” oznaczają stan zalogowania do karty. Dualna dioda LED na PCB obrazuje dokładnie to samo. Kolor żółty (pomarańczowy dla LED) oznacza kartę niezalogowaną, a do której możemy się zalogować. Kolor czerwony oznacza kartę zablokowaną, do której nie uda nam się już nigdy zalogować, a kolor zielony oznacza poprawne zalogowanie do karty. Wylogowanie z karty następuje poprzez wciśnięcie {Ctrl}+{Enter} i potwierdzenie chęci wylogowania. Karta nie ma możliwości wylogowania się, więc zrealizowałem to poprzez odcięcie jej zasilania na kilka milisekund. Pracując na buforze mamy dostęp do menu buforu pod klawiszem {F1}. Dostępne są w nim następujące opcje:




    [Copy Card to Buffer] –kopiuje zawartość karty do buforu
    [Paste Buffer to Card] –kopiuje zawartość buforu do karty pod warunkiem, że karta jest zalogowana. Przed zapisem należy sprawdzić wartość trzech ostatnich bajtów, aby nie zablokować sobie karty!
    [Emergency Card Read] –opcja czytania karty za pomocą przeciągania odczytu ATR. Doskonale się sprawdza w przypadku uszkodzenia karty przez odwrotne podłączenie zasilania. Taki odczyt nie pozwala na odczytanie bitu blokady. Program domyślnie zaznacza na czerwono bajty, które są zablokowane już w nowych czystych kartach.
    [Clear Buffer] –czyści bufor ustawiając w nim bajty tak jak w nowej czystej karcie.
    [Read File to Buffer] –funkcja nieobsługiwana.
    [Save Buffer to file] –zapisuje bufor do pliku w formacie binarnym lub Intel Hex za pośrednictwem protokołu Zmodem –wymaga wcześniejszego skonfigurowania terminala.

    Bufor w edytorze zrealizowany jest na zewnętrznej pamięci EEPROM 24C16. Pierwsze 1024 bajty w EEPROM’ie to wartość bajtów z buforu, a kolejne 128 (1024 bity) to ustawienia blokady bajtów z buforu.

    Teraz parę słów na temat całości. Oprogramowanie Atmegi pisałem w Bascom’ie. Całość powstała przypadkiem 4 lata temu. Kupiłem kiedyś z ciekawości jedną taką kartę, która zalegała w moich zbiorach, aż w końcu postanowiłem się nią „pobawić”. Najpierw napisałem procedurę odczytu i aby móc przeglądać zawartość całej karty naraz dodałem przewijanie ekranu w terminalu. Następnie doszła procedura zapisu i wtedy pomyślałem, że można by było zrobić z tego pełnowartościowy edytor. Dodałem bufor w celu kopiowania kart i na koniec dorobiłem eksport zawartości bufora do pliku. PCB wykonałem pod koniec ubiegłego roku tylko po to, by uznać ten projekt za ukończony w 100%.
    Przy tym projekcie nauczyłem się:
    -odczytu karty SLE5528 i zapisu do tej karty,
    -rysowania kolorowymi znakami po terminalu,
    -tworzenia pliku w formacie Intel Hex,
    -transmisji Zmodem, a co za tym idzie również wyliczania CRC-16 w standardzie CCITT.

    Kilka fotek przedstawiających urządzenie:

    Edytor kart SLE 5528 / SLE 4428 Edytor kart SLE 5528 / SLE 4428 Edytor kart SLE 5528 / SLE 4428 Edytor kart SLE 5528 / SLE 4428 Edytor kart SLE 5528 / SLE 4428 Edytor kart SLE 5528 / SLE 4428

    Filmik obrazujący jak to działa:


    Link


    Opis do filmu, by było jasne co się tam dzieje:
    -wkładam kartę telefoniczną i dostaję komunikat o złym ATR
    -wyjmuje ją
    -wkładam kartę fakturową Brico Depot
    -poruszam się po karcie i próbuję modyfikować bajty
    -przemieszczam się między buforem a kartą, by pokazać różną zawartość
    -zostając na buforze kopiuję zawartość karty do buforu
    -modyfikuję licznik błędnych logowań i PIN (PSC) do karty
    -przechodzę na kartę
    -wyjmuję ją
    -wkładam inną kartę
    -loguje się do karty celowo robiąc błędy przy logowaniu
    -przemieszczam się między buforem a kartą i pozostaje na buforze
    -kopiuję zawartość bufora na kartę
    -przemieszczam się między buforem a kartą, by pokazać jednakową zawartość
    -wylogowuje się z karty
    -zmieniam kartę na uszkodzoną
    -przechodzę na bufor
    -czytam kartę
    -czytam kartę opcją ratunkową
    -przemieszczam się między buforem a kartą, by pokazać różną zawartość
    -eksportuję bufor w formacie Intel hex
    -eksportuję bufor w formacie binarnym
    -przechodzę na kartę
    -wyjmuje ją
    -wkładam kolejną kartę

    pozdrawiam

    vayo


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2 04 Kwi 2013 14:20
    szczodros
    Poziom 18  

    Interesujące urządzenie. Rozumiem, że tym można różne karty kopiować?
    Spojrzałem w Google o takich kartach i w seguro znalazłem taką z chipem jak karta sim. Dałoby się w ten sposób skopiować uszkodzoną kartę sim lub odzyskać z niej dane?

  • #3 04 Kwi 2013 14:45
    symndz
    Poziom 16  

    vayo napisał:
    Przedstawiam projekt autorskiego edytora do kart SLE 5528

    ciekawe odświeżenie widząc taki projekt :-)

    Przydałby się jednak tryb "przezroczystości" czy elastyczności w wewnętrznej konfiguracji. Właśnie do obsługi kart niezapisanych na sztywno. Jak widzisz pierwsze pytanie dotyczy "innych" kart.

  • #8 04 Kwi 2013 21:44
    symndz
    Poziom 16  

    przemkomac napisał:
    Czy takie urządzenie potrafiłoby skopiować kartę abonencką płatnej telewizji satelitarnej?
    ;) to nie to forum

    Urgon napisał:
    AVE...

    Lublin? Ciekawe wiesci .. i nie dziwne kiedy OTO TPSA Lublin kartami sie zajmowala wlasnie :)

    avatar napisał:
    byle atmel z portem szeregowym ...

    ww. to sa karty synchroniczne, port szeregowy jest asynchroniczny i na nic sie zda, wrecz przeszkodzi, taka drobna uwaga

  • #9 04 Kwi 2013 21:57
    Urgon
    Poziom 36  

    AVE...

    symndz napisał:

    Lublin? Ciekawe wiesci .. i nie dziwne kiedy OTO TPSA Lublin kartami sie zajmowala wlasnie :)

    Akurat kolesie, co to zrobili, byli gdzieś na śląsku. Kartę widziałem tylko raz, i w dodatku przez kolegę kolegów. IMHO koncept wręcz genialny w swej prostocie...
    symndz napisał:
    avatar napisał:
    byle atmel z portem szeregowym ...

    ww. to sa karty synchroniczne, port szeregowy jest asynchroniczny i na nic sie zda, wrecz przeszkodzi, taka drobna uwaga

    Każdy mikrokontroler może pracować z transmisją synchroniczną...

  • #10 04 Kwi 2013 22:05
    symndz
    Poziom 16  

    Urgon napisał:
    AVE...
    Każdy mikrokontroler może pracować z transmisją synchroniczną...

    No właśnie i to tu miałem na myśli, gdzie port szeregowy jako warunek emulacji jest zbędny.

  • #11 05 Kwi 2013 07:04
    mkpl
    Poziom 37  

    Port szeregowy w mikrokontrolerach może pracować w trybie asynchronicznym UART ale i synchronicznym też USART

  • #12 05 Kwi 2013 10:56
    symndz
    Poziom 16  

    mkpl napisał:
    Port szeregowy w mikrokontrolerach może pracować w trybie asynchronicznym UART ale i synchronicznym też USART

    szkopul w tym ze nawet synchronicznego możesz nie moc użyc. Takie karty czasem wymagają specjalnego "piku" przy przejściu z "odbierania" do "nadawania" (nie pamiętam dokładnie). Mija się więc z celem użycie trybu synchronicznego, kiedy musisz szybko skonfigurować porty by wygenerować specjalne takty i przełączyć w inny by nadać/odebrać dane..