Tutorial decodari casetofoane

Category: tutoriale Published: Friday, 24 March 2017 Written by Liviu Dan

Istoria aparatelor de radio auto este lunga si dateaza din prima jumatate a sec XIX.Inventia apartine lui Paul Galvin,cel care a transformat Galvin Manufacturing Corporation in binecunoscutul brand Motorola.In 1952,Blaupunkt a lansat primul aparat cu banda FM,desi la vremea aceea,regele de necontestat al undelor radio era AM-ul. Apoi,in urmatorul an,1953, Becker a lansat modelul Becker Mexico care avea ambele benzi de radio AM-FM si sistem de cautare automata a posturilor.Toate aceste aparate foloseau tuburi electronice miniatura pt functionare,cunoscute de noi sub denumirea de “lampi”.Au fost multe firme care au inceput sa introduca pe la sfarsitul anilor ‘60 tranzistoarele in locul tuburilor electronice,dar primul aparat complet tranzistorizat a fost Becker Monte Carlo.O data exacta a primei aparitii a aparatelor de radio cu cod nu o cunosc,totusi,din cate imi aduc aminte,am vazut intr-un film cu James Bond de prin 1987 cred,un aparat facut de Philips care avea cod.Personal,primul aparat cu cod care mi-a intrat in mana a fost un Becker(nu retin modelul si nici de pe ce masina provenea),prin 1992 sau 1993 care avea cod de 3 cifre.Singura informatie pe care am obtinut-o de la un fost profesor de electronica era “codul ar trebui sa fie stocat intr-o memorie de tip Eeprom”.Mai mult nu stia nimeni sa spuna.Pentru vremea aceea a fost o provocare pentru mine.In acei ani,nu exista internetul sub forma de astazi,accesul era foarte costisitor si greoi.Asa ca,dupa desfacerea aparatului,am gasit o memorie de tip I2C,cred ca era echivalenta cu 24C01,undeva chiar langa procesorul aparatului.Hmmm...Imi trebuia un dispozitiv(interfata),prin intermediul careia sa pot sa scriu si sa citesc aceasta memorie.Si am gasit o placa care facea parte dintr-un sistem de calcul dezafectat,bazata pe procesorul P-80C32,pe 8 biti.Acest procesor avea implementat un sistem de comunicare seriala,printr-un terminal simplu in ferestra Dos,prin care se puteau trimite comenzi si scrie bucatele de cod in limbaj de asamblare.Poza este mai jos,interfata am pastrat-o ca piesa de muzeu

 

Si am reusit sa o fac sa functioneze!Realizarea a fost facuta in bucataria proprie dar nu in cea in care se prepara mancarea,asa cum spun “gurile rele” ,ci in bucataria electronica de la firma pe care o infiintasem la vremea aceea.Din pacate,aceste “guri rele” sunt diverse persoane dornice de afirmare(acesta e un lucru bun!),dar care, la acea vreme inca mai bateau maidanele cu mingea.Si tot din pacate,isi asuma lucruri care nu le apartin,culese de pe internet,postate de oameni dornici sa ii invete si pe altii tainele electronicii si softului.Plus o multitudine de informatii false postate pe diverse forumuri sau pe Youtube,numai din dorinta de a arata lumii ca sunt ceea ce nu sunt de fapt!.

Mai tarziu,deoarece aceasta interfata era cam limitata,am realizat o interfata proprie,pe LPT,foarte simpla,numai cateva piese,si softul aferent realizat cu Delphi,mult mai flexibil si mai usor de folosit ,in care puteam sa selectez tipul de eeprom,sa vizualizez bufferul,sa fac modificari direct,etc.(poza de mai jos).

Am mai realizat diverse softulete(acestea facute de obicei in C) pt citire-scriere memorii mai deosebite(incepusem deja sa decodez si telefoane mobile,in care mai gaseam si alte modele(SPI,Microwire).Aceste softuri nu le-am pus pe Internet,in general se gasesc numai la cativa prieteni apropiati cu care am mai colaborat pe aceste teme.Ceva mai tarziu, a aparut pe internet marea salvare a celor care se ocupau de decodari, Ponyprog , un soft complex cu un sistem de interfatare simplu,pe RS232,realizat de .Personal,ii aduc mii de multumiri pt aceasta realizare,a fost revolutionara si inca se mai poate folosi cu succes.Singura modificare necesara totusi este la partea de hardware,pt a functiona fara erori.Eu am folosit un MAX232 pt interfatarea semnalelor,in loc de acele diode stabilizatoare.(Toate aceste lucruri au fost realizate tot in “bucatarie” .Si oameni ca mine au fost destui,cu acelasi tip de abordare a problemelor acestora,priceputi sau chiar mai priceputi ca mine,dedicati cercetarii in acest domeniu.Ca exemplu, Baldovica, il stiu de multi ani,nu chiar personal,dar am o parere foarte buna despre el,chiar va invit sa vizitati ,unde gasiti multe proiecte electronice si informatii.

Si acum,tutorialul dedicat pentru decodari casetofoane auto si pentru functionarea aparatelor electronice prevazute cu inteligenta artificiala slaba (numita weak AI ).

Explozia tehnologica din ultimile decenii a dus la construirea de aparate electronice cu weak AI.Pana si un simplu prajitor de paine a capatat acest tip de inteligenta,deoarece contine un sistem electronic prevazut cu procesor si software care “poate rezolva o anumita clasa de probleme intr-un mod mai mult sau mai putin inteligent”.Asta inseamna ca el poate fi programat sa execute lucrurile pentru care a fost realizat(poate porni singur la o anumita ora,prajeste painea,o scoate,se opreste singur,etc).Deci prin acest procesor si prin softul aferent acestuia,a capatat o inteligenta de tip  .Acest lucru este valabil la marea majoritate a aparatelor electronice destinate marelui public sau industriale.Cam acelasi lucru se intampla si cu aparatele de radio prevazute cu cod.In afara de functia de aparat de radio si casetofon sau cd,acesta este prevazut de asemenea cu un procesor si cu un soft,pe baza caruia acest procesor poate veghea si comanda absolut tot ce se intampla in aparat.In felul acesta,necunoasterea codului face aparatul inutilizabil.Deoarece mi-am propus ca acest tutorial sa fie cat mai complet,am sa explic mai pe larg lucruri care pot fi folositoare pentru incepatori,dar si pentru acei oameni care cred ca daca au cumparat o scula mai profesionala,aceasta i-a facut brusc mai inteligenti.Nu uitati ca noi oamenii creem uneltele,nu ele pe noi!

Dar,ce este softul ? Softul este de fapt un program care contine instructiuni specifice pt o anumita clasa de procesoare,prin care acestea,cand il ruleaza, primesc informatii despre ceea ce trebuie sa execute.Acest program este fabricat in ceea ce se numeste .Acest soft,pentru a putea fi inteles de procesor,este transformat in cod binar. Codul binar este reprezentat de o insiruire a cifrelor 0 si 1 care pot fi grupate pe 4,8,16,32 biti...etc.Daca oamenii ar fi avut numai doua degete in loc de zece,omenirea ar numarat acum in binar (baza 2),nu in zecimal.Datorita obisnuitei noastre a de numara si de a face operatii cu numere in baza 10,sistemul binar este destul de greu de folosit.Desi,sa stiti ca au fost programatori pe la inceputurile erei calculatoarelor,care programau in binar!!! Jos palaria pt acesti oameni!.Astfel a aparut sistemul hexazecimal(baza 16),mult mai inteligibil pt noi.Iata cum apar cifrele in cele trei baze :

 

B10         B2        B16

1           0001        01

2           0010        02

……………………………………………………….

10        1010        0A

Nu am sa insist asupra acestor transformari deoarece puteti gasi pe internet suficiente informatii.

Este bine sa invatati putin despre aceste baze de numeratie pentru ca vor fi de real ajutor in momentul in care veti analiza continutul unei memorii,sau a altui dispozitiv de stocare a informatiilor.

Indiferent de tipul de programator folosit,datele pe care le veti citi vor fi afisate in sistem hexazecimal in partea stanga a bufferului,iar in dreapta reprezentarea lor in caractere .Voi lua acum un prim exemplu de memorie citita de la un aparat Becker BE749,care este mai simplu si are cod format din 3 cifre(cod = 999).

 

ADDRESS                Value

 

010                         6C 1B 00 00 E8 1B 38 1F 98 1F 00 00 00 00 00 00

020                         00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

030                         00 00 00 00 77 04 76 02 40 02 00 00 00 00 00 00

040                         00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

050                         00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

060                         00 00 00 09 09 09 42 FF DF 09 00 00 00 00 00 00

070                         20 20 42 45 43 4B 45 52 41 57 47 37 34 39 43 20

080                        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

 

 

Cele trei valori scrise cu rosu reprezinta codul aparatului.Dupa cum vedeti,el se afla locat pe al doilea nibble din locatiile respective.Aceasta este o varianta simpla de criptare.De fapt,nici nu prea o putem numi criptare,codul se afla stocat dupa cum vedeti in format inteligibil.Dar totusi cum ne dam seama unde este locatia codului si de cele mai multe ori,locatia counterului(cam toate aparatele de radio auto au un sistem de contorizare a incercarilor gresite de introducere a codului si aceasta este stocata intr-o anumita locatie).Counterul simplu(pt ca exista si siteme foarte complicate de contorizare,bazate pe anumiti algoritmi,tocmai pt a nu putea fi gasite usor) il putem afla relativ repede.Este suficient sa citim in cazul nostru memoria,inainte de a introduce un cod gresit,apoi o montam inapoi in aparat(pt teste recomand un soclu,pt ca daca veti lipi si dezlipi acel integrat de multe ori,riscati sa deteriorati cablajul),introducem un cod la intamplare si apoi o citim din nou,facand comparatie cu prima citire.In functie de valoarea modificata,ne putem face idee si cum functioneaza counterul.La unele aparate,counterul functioneaza descrescator,iar la altele crescator.Sa luam un exemplu semnificativ.Car300 un aparat care este de obicei gasit pe Opel,are counterul setat pe valoarea 0A.Aparatul afiseaza la inceput,pe display 10 _ _ _ _ .Valoarea 10 de la inceput reprezinta numarul de incercari posibile ale codului.Daca vom introduce un cod gresit,urmatoarea afisare va fi asa : 9 _ _ _ _.

In locatia unde memoreaza nr de incercari gresite,procesorul va scrie urmatoarea valoare 09h.Deci,de aceea va spuneam mai sus ca trebuie sa invatati macar putin bazele de numeratie. 0Ah ,ca valoare(h inseamna valoare HEXA) in zecimal inseamna 10.urmatoarea valoare scrisa dupa introducerea gresita va fi 09h,ceea ce inseamna 9 in zecimal.Puteti folosi chiar calculatorul de windows pt asemenea transformari.Dupa ce se fac 10 incercari gresite,aparatul se blocheaza definitiv,o reintroducere a codului nu va mai fi posibila decat daca acest contor va fi resetat manual prin rescriere cu valoarea corecta.Nu numai atat,dar aceste aparate au implementat in soft si un timer,care permite introducerea unui nou cod,abia dupa o perioada de timp.Cu cat introducem mai multe coduri gresite,cu atat va creste si timpul in care se poate valida urmatorul cod.Dar o sa mai revin la aceste countere ,prezentand si sisteme de contorizare mult mai sofisticate.Lucru valabil de altfel si la coduri.Exemplul de mai sus l-am ales special,pt ca este simplu.Dar,macar la aceste variante simple,cum putem afla codul daca nu avem nici cea mai mica informatie scapata pe Internet? Din pacate,in matematica si in informatica sunt atatea lucruri care se leaga intre ele,asa ca de fiecare data ma vad nevoit sa fac tot felul de paranteze si referiri la lucruri pe care multi nu le cunosc,nefiind de specialitate,dar care probabil au curiozitatea de a citi si a invata.Inainte de a prezenta una din cele mai simple metode pe care am aplicat-o prin acei ani de inceput,trebuie sa mai explic ceva referitor la software.In cazurile simple,procesorul aparatului ,la pornire,va accesa memoria externa pentru a citi anumite date care ii sunt necesare pt initializare sau pentru functionare.Deci,acele cifre hexa pe care d-voastra le cititi dintr-o memorie,de fapt,nu sunt intotdeauna simpli parametri,ele pot fi de fapt instructiuni complexe,create de mediul de dezvoltare al programatorului si transformate in limbaj masina.Daca am dori sa stim exact ce executa un procesor cand citeste acea memorie,ne-ar trebui un program care se numeste .Dar asemenea programe sunt creeate de obicei de producatorul chipsetului(procesorului) si nu sunt puse intotdeauna la dispozitia publicului,sau daca sunt,nu sunt ieftine de loc. Procesoare specializate au in general patent cumparat de cei care produc aparatele auto,tocmai pt a nu fi folosite de altii.Si nu numai atat,de fapt,softul care duce la buna functionare a procesorului este scris in el si este protejat la citire.Incercarea de a citi un procesor protejat poate duce la stergerea softului.Cea mai simpla metoda de a afla cate ceva despre cod este metoda “eliminarii”,cum am numit-o eu.Procedura este urmatoarea:

Memoria citita o impartim prima data in doua parti egale,in care sa zicem ca prima parte,mai intai o scriem cu valoarea 00 peste tot.In exemplu de mai sus,la Becker,ar insemna ca de la adresa 00h si pana la adresa 4F vom pune in fiecare locatie 00h.Punem memoria la loc si vedem ce se intampla.Daca in acea zona sunt parametri importanti pt procesor,aparatul nu va mai porni,sau va porni cu erori (de ex,putem vedea pe display anomalii ale caracterelor,etc).Putem trage concluzia ca in acea zona ar putea fi si codul.Daca nu se intampla nimic anormal,inseamna ca ceea ce citeste din acea zona ii este de folos probabil abia dupa ce se introduce codul si intra in programul de lucru propriuzis.Bun,acum putem restrange aria.Zona care ne intereseaza o impartim din nou in doua.Si facem aceeasi operatie,stergem prima jumatate,vedem ce se intampla...Cand memoria este mica,operatia aceasta se face relativ repede.Pas cu pas,vom ajunge la locatia de cod .Avand in vedere ca cifrele se repeta,putem incerca desigur cod cu 000.Daca aparatul porneste,inseamna ca am descoperit ce ne intereseaza.Aceasta metoda,la aparatele simple,a dat rezultate in 100% din cazuri.Dar,cu cat tehnologia a avansat,au inceput sa apara si criptari in programe.Asta insemna ca acel cod care ne intereseaza,nu mai are deloc o valoare inteligibila,nici macar in Hexa.Producatorii au implementat tot felul de modele de criptare a codului,pe care am sa incerc sa le abordez pe rand,desi pentru asa ceva mi-ar trebui foarte multe pagini disponibile.O sa incerc sa prezint macar o parte din ele si in masura timpului liber am sa tot adaug informatii.O metoda de criptare mai folosita este prin operatia logica XOR,numita si SAU-EXCLUSIV. Acest tip de operatie matematica face parte din . Valorile 0 sau 1 care le poate lua un circuit logic mai au denumirile false si true(0 = fals si 1= adevarat) .Tabela de adevar arata asa:

 

A | B || A xor B

0    0        0

0    1        1

1    0        1

1    1        0

Nu intru in amanunte despre aceste operatii matematice pentru ca oricum sunt explicate pe larg in sute de pagini pe Internet.Acest tip de criptare este folosit la multe aparate din gama Philips.De exemplu,sa zicem ca in locatia de cod a unui casetofon gasim valorile acestea ,organizate pe 2 octeti: 9CA8.Fara a avea o informatie,este greu de gasit codul...dar,daca reusim sa facem rost de mai multe fisiere citite din acelasi tip de aparat,care au coduri cunoscute,putem calcula.Pai sa presupunem ca la valoarea gasita se face un XOR cu o valoare fixa(in exemplul dat,am ales valoarea fixa 8E9C. 9CA8 xor 8E9C = 1234 . Codul este 1234.Ca sa aflam valoarea folosita la criptare nu avem solutie decat gasind fisiere cu coduri cunoscute.XOR,ca operatie,este reversibil ,ne ajuta acest lucru la calcul,pt ca “valoarea gasita la locatia de cod” xor “cod real” ne va da ca rezultat valoarea folosita pt criptare.Si daca aceasta valoare se verifica la toate fisierele cunoscute pe care le avem,solutia este clara.Dar,cum putem afla locatia de cod? Putem si in acest caz sa apelam la solutia “eliminarii”,prezentata mai sus(pentru ca,indiferent daca acest cod este criptat sau nu,casetofonul nostru va avea acelasi comportament cand vom modifica memoria,sau la solutii mai “ingineresti”,care sunt accesibile acum.Un exemplu ar fi folosirea unui analizor logic.Aceste tipuri de aparate au implementat un soft care stie multiple protocoale de comunicare(bus I2C,SPI,etc,etc).Sau,daca ne pricepem,putem sa ne scriem noi propriul soft care ne intereseaza smile .Acest aparat il putem lega pe bus-ul de comunicare al procesorului cu memoria si putem gasi care sunt adresele pe care procesorul le acceseaza la initializare!.Este un punct de plecare foarte bun.Dar,ganditi-va ca totusi necesita foarte multa munca si timp pierdut.

 

------------------

   Va urma ...

 

 

 

Hits: 6400