Source: http://cq.cx/prox.pl
[Există un aparat mai bun, deşi writeup pentru aceasta este mai mare. Mi-a luat o luna de seri pentru a clona Flexpass prima mea, cu practic nici un echipament. Folosind hardware-ul ultimul meu, am fost în stare să clona un VeriChip, care, la fel ca Flexpass, este o etichetă de identificare numai cu nici o securitate cu locul de muncă doar câteva ore ".] * * * * * Multe companii folosesc carduri de proximitate pentru a controla accesul fizic. Un angajat deţine cardul lor într-un cativa centimetri de cititor, cititorul primeşte un ID unic de pe cardul şi îl transmite către un calculator central care se spune sau nu pentru a deschide uşa. Acest lucru este destul de magic, având în vedere că tag-ul este cardul de credit-subţire şi nu conţine nicio baterie. Trucul este aceeaşi ca şi la etichete RFID. Cititorul transmite în mod constant un operator de transport destul de puternic; tag-ul derivă puterea şi ceasul de la acest transportator aerian, un fel de un radio de cristal. Modificările tag-ul cat de mult transportatorul se reflectă înapoi la cititor-lejer, el face pe circuitul de antena la mai mult ca o scurtă sau mai mult ca un open-pentru a transmite codul său. Cititor şi tag-ul ambele au bobine antenă acordat la frecvenţa purtătoare; lucrează ca un transformator rezonant vag-cuplate. Sau cel puţin asta e teoria. Nu am putut găsi nici o documentaţie credibile cu privire la protocolul utilizat de carduri de proximitate special, care au fost disponibile pentru mine (Flexpass Motorola). Am găsit o foaie de date care a susţinut că au lucrat cu un operator de transport 125 kHz. Am ajuns o duzină tânăr se întoarce din sârmă magnet pe un 4 "formă, lipite-l la un cititor, şi" luneta bobina. Nu a fost într-adevăr o undă sinusoidală 125 kHz, mari, câţiva volţi vârf la vârf carduri a făcut, la. cel puţin, locul de muncă la 125 kHz. Un cititor de carduriUrmătorul pas a fost să construiască un cititor. Cititorul trebuie să transmită un operator de transport destul de puternic; cifră cel puţin zeci de miliamperi printr-o bobină de aproximativ o millihenry. Acest lucru este uşor: doar explozie un val de 125 kHz pătrat în bobina cititorului. Este un circuit acordat astfel încât se va alege componenta de 125 kHz foarte frumos.Apoi, vrem să căutăm uşoară (cel puţin 40 dB în jos), modificări în bobină curent. Facem acest lucru prin prelevare de probe de tensiune pe condensator de tuning si alimentandu-l într-un circuit detector. Tag-uri pot folosi o mulţime de diferite scheme de modulaţie-PSK, FSK, neteda AM. Am decis să construiască un cititor AM, presupunând că aceasta a fost sistemul de modulare cel mai probabil, şi că, în cazul în care cardul folosit altceva, atunci am putea face, probabil, în software-ul de detectare.
Modele B1 tensiunea pe capac atunci când cititorul tag-ul este backscattering de 1 / π val pătrat kHz. D1 şi C1 formează un detector de vârf neetanşe, producând un dinte de fierăstrău 125 kHz a cărui vârf este determinat de valoarea de vârf de B1 în timpul ciclului respectiv. R2 si C2 sunt un filtru trece-jos, chiar si din calitatea de dinţi de fierăstrău amplitudine noastre măsurate. C3 şi R8 AC-matur semnalul până la pământ, altfel ar fi greu să lucreze cu ei, deoarece valoarea medie este în jurul valorii de amplitudinea undei sinusoidale, care va fi în jurul valorii de o sută de volţi (V = IZ = IjωL = (50 mA ) × J2 π × (125kHz) × (1,6 mH)). U4 tampoane de semnal şi amplifică-l un pic. U3 este un Sallen-Key low-pass etapă. U1 este un comparator, la rândul său, amplitudinea măsurată în ceva ce poate conduce o intrare digitală. R10 şi R11 hysteresis add, care mai târziu sa dovedit a fi foarte importante. Nu cred că există ceva foarte roman despre circuitul meu. Am realizat dintr-o notă app Microchip că cheia este să începeţi cu un detector de vârf. Am aflat mai târziu de design al Microchip, de referinţă pentru un cititor ASK. Este destul de aproape de a mea: detector de vârf, pasiv low-pass, AC matur-l jos, activă low-pass, comparator.
Am construit cititorul pe două circuite imprimate. Cea mai mare conţine un PIC16F877, folosit pentru a genera 125 kHz val pătrat, şi circuitul de a conduce vehicule şi de ton bobina. Bobina Cititorul este un ~ 1.6 rana mH inductor de la aproximativ 140 de transformă din 30 de sârmă ecartament magnet pe un 2,5 "formă pătrată. Bord mai mici implementează circuitul detector prezentate mai sus. Ambele sunt cu o singură faţă făcute pe placi meamaşină de frezat. Asa ca am pus un card de Flexpass pe partea de sus a bobinei cititorului meu, şi am privit de ieşire. Destul de sigur, am primit modulare; alternativ impulsurile pozitive şi negative-merge-, inegal distanţate, ca ceea ce te-ai obţine dacă aţi luat o serie bitstream şi high-pass-l filtrat. Acest lucru a fost foarte încurajatoare. Un Card SimulatorAm proiectat o etichetă care ar putea produce identice AM când l-am testat împotriva cititorul meu. Acest lucru a fost destul de plictisitor. Am folosit un micro-şi alternativ tri-a declarat sau au afirmat (joasă, înaltă pentru o singură) două GPIOs conectate la un singur terminal a bobinei tunat, cu terminalul alte antene la pământ. Tag-ul meu de produse sub formă de undă f. bine pe cititorul meu. Acesta nu a făcut, totuşi, de lucru cu Motorola cititorii-usa nu sa deschis.
Aşa că atunci am încercat o mulţime de lucruri. În cele din urmă am luat o privire mai atentă la ieşirea din detector de vârf, a fost un dinte de fierăstrău 62.5 kHz, nu, 125 kHz. Cardul a fost de emisie PSK, atenuante orice alte vârf, dar detector de vârf mea nu a renunţat suficient de repede să-l urmeze. AM pe care am văzut a fost un artefact de modulare, am aştepta (şi este intuitiv), care se poate dovedi că aceste tipuri de variaţii de amplitudine poate fi obţinut prin filtrarea bandpass-un semnal PSK.
Un pic de timp este de 256 μs. ID-ul tag-ului este periodică de peste de ori pe 64 biţi, 16384 μs. Atunci când nu există nici o schimbare de fază, este un semnal de 125 kHz sinusoid uşor modulate de o sinusoid 62.5 kHz. Modularea este mult exagerat în figură.
Pentru a indica o tranziţie pic, introduce tag-un defazaj de π. Există întotdeauna un număr par de cicluri de operator de transport între schimburi de fază, astfel încât în cazul în care trecerea de faza cea mai recentă a fost realizat sărind peste un ciclu de mică amplitudine, atunci trecerea de faza urmatoare se va realiza sărind peste un ciclu de mare amplitudine.
Din moment ce un pic de timp este de 256 μs, schimburi de fază sunt un multiplu intreg de 256 μs în afară. Astfel, în imaginea de mai sus, am fi putut t = 256, 512, 768,... μs. Un cod format de ori pe 64 de biţi. Nu există tranziţii pentru ultimele 29 de biţi pentru toate, dar una dintre cartile care le-am testat. Posibil cardul unul este într-un format mai noi, sau, eventual, e doar ciudat. Se pare ca exista unele structuri în cadrul biţi dacă am obţine unele dintre biti greşit, atunci cititorul nici nu-bip, dar dacă mă alţii greşit atunci cititorului încă beep-uri, dar uşa nu se deschide. Nu am avut nevoie sa afle care sunt care, deşi. După tag-ul meu primul dezintegrate (flywires prea multe) asa ca am construit o noua combinatie cititor / tag-ul. În modul de tag-ul am ales să ignore transportatorului cititorului: am explozie doar propria mea transportator modulate la cititor.Acest lucru funcţionează foarte bine, şi te-ai aştepta să-l; dacă nu suntem în fază cu oscilator cititorului atunci vom fi într-o câteva sute de milisecunde. (Frecvenţa beat este de ~ 1 Hz, pentru o variatie a câteva ppm, tipice pentru un cristal). O jucărie cu lumini intermitentHardware pentru a pretinde a fi un tag-ul este foarte simpla. Hardware-ul pentru a citi o etichetă nu este mult mai complicat, am putea-o face cu un micro, o opamp quad, şi o duzină de pasive. Acest lucru a însemnat că am putea construi un cititor de carduri Amestec / într-un simulator de cativa centimetri patrati de spatiu de bord. Adauga un tânăr de baterii cu litiu şi unele materiale plastice frumos şi aş avea un inteligent şi mai ales inutil buzunar jucărie. Desigur, nu am putut rezista o clădire.
Pentru un sentiment de scară, PIC16F628 (cea mai mare IC) şi opamp sunt ambele SOICs. Nu exista nici un nejustificat fin-pas componentele aflate în această bord; strânse sunt FETs SuperSOT (stanga jos), cu spaţiere de plumb 0.95 mm. Hardware-ul este foarte similar cu cititorul mai mare / simulator descris mai sus. Am decis să nu încerce PSK de demodulare; am detecta doar artefacte modulare şi de a folosi histerezis, aşa că ştiu că, dacă producţia comparator sa schimbat de stat, deoarece m-am uitat la el, apoi ultima a avut loc o schimbare de fază de atunci. Aceasta sacrificiile un pic de sensibilitate, dar gama mea mai este suficient de mic (de proiectare, pentru viata a bateriei rezonabilă) că acest lucru nu mă deranjează. Acest lucru ar putea fi, de asemenea, hardware-ul folosit pentru carduri de AM, în cazul în care l-am dat peste unul. PIC pot ucide puterea de la secţiunea detector cu o pereche de comutatoare FET. Acest lucru, plus modul de PIC de somn înseamnă că eu pot face on / off în software-ul, fără a distruge viaţa mea bateriei. Circuitul este din nou construit pe un PCB albit, cu strat de semnal, şi un plan la sol. Planul de masă este împărţit în analogic (GND = 0V) şi digital (V - =-3V) secţiuni. Acesta este alimentat de o pereche de monedă cu litiu CR2032 celule.Ele determină grosimea dispozitivului; bateriile, într-un suport, sunt 0.217 "groase.
Nu există conectori de pe placa, deoarece nu am putut gasi nici un low-profile conectori suprafaţă de montare pe care mi-a placut. În schimb, există puncte de testare pentru a programa PIC şi tonul de bobina; am construit de fapt un test de fixare / programare (cu ace de pogo). Acest lucru este destul de usor cu o maşină CNC. Oportunitati de putere şi bobina sunt lipite direct la placa. Fire albastru sunt în majoritate puncte de test, pentru depanare numai. Antet 8 pini se conecteaza la programator PIC mea.
Toate plastice au fost dirijate din tabla de pe maşina de frezat meu, folosind un 1 / 8 "de carbură de drept biţi destinate utilizării în lemn Da, piesa este ţinută la masa de banda covor,. Acest lucru este mult mai ieftin decât o mandrină vid.
De sus şi de jos a cauzei sunt fiecare 1 / 16 "Lexan (policarbonat);. Miezul sunt măcinate din tabla de 6 mm Lexan sus are gauri forate pentru servomotoare de switch-uri tact doi pe PCB am platit prea mult (. mai mult de un dolar fiecare) pentru deţinătorii bateriei! de mai jos, deoarece ele fac foarte dificil să se aplice o tensiune inversă a circuitului de mis-inserarea celulă apasa roz spumă bord. în contact cu capacul, astfel încât tact comutatorul acţionare proiect.
Ambele şurubul de sus şi de jos în miezul cu # 2 suruburi. Am pus o mulţime de efort în a găsi o sursă locală de ciment clorura de metilen cu solvent (astfel încât am putea sudură în partea de jos pe loc de răsucire), dar am renunţat după multe eşecuri. Am încercat prima suruburi de maşini, dar mici, cu diametrul de suruburi de maşini tind să aibă prea multe fire per inch pentru a lucra în materiale plastice. Data viitoare aş uita, probabil, pentru inserţii filetate.
Am plecat de la firele lungi astfel încât să pot scoate placa din material plastic, fără nimic dezlipit. Acest lucru este necesar să-l puneţi pe dispozitivul de programare, şi îi ajută atunci când am încercat să dau seama dacă am face-un circuit de-a-gresit-lucru problemă sau un 125-kHz-pickup-pe-toate problemă.
Interfaţa cu utilizatorul cuprinde patru LED-uri si cele doua switch-uri tact. Software-ul poate citi în prezent un card, magazin un ID unic, transmite faptul că ID-ul pe calea aerului la un cititor, clipire faptul că ID-ul pe LED-uri, şi să accepte o nouă ID-ul de pe switch-uri tact. Există, de asemenea, un "sniff" modul, în care detectorul este activ, dar bobina nu este alimentat, aceasta permite-mi să citesc o carte în timp ce un cititor de legitim este alimentarea. (Gama de citire a cardurilor este limitată de cerinţele de alimentare tag-ul, nu, de sensibilitate cititor;. Se urca în mod substanţial atunci când un alt cititor este alimentarea cardului) Majoritatea software-ului este destul de simplă. Pentru a transmite ID-ul, eu trebuie să aplice un val pătrat, cu, în medie, fiecare ciclu de alte lipsă. Eu fac acest lucru în întregime în software-ul, arunca o GPIO la fiecare 4 μs. Am reuşit să fac acest lucru de pe un dispozitiv MHz 4 (4 cicluri între margini); este mult mai uşor pe un dispozitiv de 20 MHz, totuşi.Antena este de rezonanţă în jurul valorii de 125 kHz, astfel încât acesta în mod eficient bandă filtre tren de impulsuri care pot genera. În figura de mai jos, linia albastră se obţine prin trecerea linia rosie printr-un filtru bandpass centrată la de două ori frecvenţa de tren de impulsuri:
Pentru funcţionalitatea cititorul am configura modulul PWM pentru a genera val nemodulate pătrat astfel încât să pot fi un pic sloppier cu calendarul meu. Am sincronizare pe cuvânt de aşteptare pentru un avantaj după o perioadă lungă inactiv (deşi acest lucru este, desigur, inutile; am nevoie doar de sincronizare biţi). Apoi am citit cuvântul în memorie. Apoi, am citit cuvântul de zece ori mai mult, comparându-l împotriva copie înregistrată de fiecare dată, în cazul în care toate se potrivesc, atunci am decide ca este potrivit, altfel pierd sincronizare şi să încercaţi din nou. Aceasta funcţionează destul de bine, dar în cazul în care cardul este loc abia în afara domeniului de citit, atunci voi în cele din urmă fals-sync. Acest lucru este rău, pentru că nu există nici o altă verificare. Cititorii legitim poate fals-sincronizare cu nr repercusiuni majore, deoarece acestea nu ar reuşi doar să deschidă uşa, ghidul de-ar sta acolo de aşteptare până la cardul a fost citit corect. Implicaţiile de securitatePot copia un card de proximitate, cel puţin la fel de uşor ca pot lua o impresie de o cheie. Acest lucru înseamnă că nu este o idee foarte bună de a reutiliza carduri de vizitator fără a schimba ID-ul (şi că nu contează cu adevărat, dacă ai carte de fizică înapoi de la tipul pe care tocmai aţi concediat). Mai mult insidios, este destul de practic pentru a citi carte cuiva fără ao scoate din portofel lor. Un pic de stângăcie în mod deliberat, un cititor de maneca mea, şi mi-ar fi carte de puţine clonarea cineva necazuri lui. Aş putea exploata, de asemenea, faptul distanta la care cartile vor fi cu reglaj electric este mai mică decât distanţa de la care acestea pot fi citite; dacă un alt cititor este interesant cardul atunci cititorul meu poate citi că card din partea cealaltă a unui zid! Acest lucru înseamnă că un sniffer ascuns undeva în apropierea unui cititor de legitim ar putea intercepta tranzactii reale, la o distanţă semnificativă. Acest tip de atac este deosebit de bun, deoarece cardul reiterează ID-ul său de peste si peste, atâta timp cât este în domeniu, astfel încât am putut să utilizeze tehnici de procesare a semnalului pentru a combina mai multe copii ale modelului pentru a îmbunătăţi în continuare gama mea citeşte. Acest lucru este uşor dacă aş proba toate cele 64 de biţi din ID-ul, atunci nu am pentru a obţine cuvântul-sincronizare, şi dacă am oversample atunci am nu au nici măcar pentru a obţine de biţi de sincronizare. Chiar dacă am capta ID-ul, cu un pic câteva erori este încă util, am putea încerca id-ul capturat, apoi fiecare id-ul cu o distanta Hamming de 1 de la id-ul capturat (un pic inversat), apoi 2, şi aşa mai departe. Unul sau două erori de biţi ar lua de secunde; trei ar dura câteva minute. Daca as fi fost dispus să cheltuiască bani pe o perioadă de patru (sau chiar două) strat de bord, atunci am putea construi un sniffer / cititor mult mai mici decât orice prezentate mai sus. Dacă am folosit negru Lexan (sau chiar acrilic) pentru cazul, atunci dispozitivul ar arata mai putin, ca ceva care un terorist imagini-constienta s-ar putea transporta. Acest lucru ar face mult mai uşor să efectueze atacuri subliniate mai sus. Toate aceste atacuri poate fi oprit cu un sistem de provocare / răspuns. Am vazut broşuri şi cărţi pentru cititorii care fac acest lucru, cred că nu este doar o gaselnita de marketing. Hardware constatăMecanicul bobina constă dintr-o pereche de N / P FET, cu FETs de lucru ca switch-uri. Pentru cititorul meu initiale, am conectat canalizare împreună, ca într-un inversor CMOS. Acest lucru a condus circuitul RLC care a fost bobina, capacul tuning, şi un rezistor limitator de curent. Acest lucru are două defecte. În primul rând, ea are un software de auto-distrugere modul, în cazul în care pluteste de intrare între şinele de pozitive şi negative, apoi ambele FETs va efectua, scurtcircuitarea V + V pentru a-şi FETs va fi foarte, foarte fierbinte. Acest lucru ma prins, deoarece PIC tri-state toate GPIOs, atunci când este programat în sistem. Nu a fost un pic de o problemă trage-prin prea; tranzitorii de comutare a intrat în tot ceea ce. FETs mai mici ar fi fost de fapt mai bine, dar am pus doar o anumita rezistenta între canalele de scurgere, pentru că am nevoie de ceva rezistenţă pentru a limita oricum actuale. Aspectul meu pare să fie destul de bună. Există sute de milivolţi de zgomot pe majoritatea semnalelor în jurul valorii de PIC, dar zgomotul pe semnalele detector este de ordinul zecilor de mV. Mai multe ocolind ar putea avea curăţate lucrurile mai departe. Nu este introducerea în circuitul din interiorul antena ar putea avea, de asemenea, ajutat.... Detectorul este destul de slabă. Când lectură (sau sniffing) de la o distanţă mare, ar fi frumos să fie capabil să transforme în jos de histerezis pentru a obţine o şansă la o citire. Acest lucru nu este posibil în prezent. Este probabil nu merita încurcãturã cu detector de plic, deşi, ar fi mai bine pentru a construi un detector de PSK corespunzătoare (prin corelarea şi apoi integrarea de ieşire detector de vârf în hardware, sau cu o gradaţie sharp filtru pentru a respinge componenta de 125 kHz, permiţându-mi să lucru numai cu benzi laterale.). Celulele monedă, probabil, nu sunt o alegere foarte bună pentru această cerere având în vedere foaia de date de vârf curenţi-Panasonic nu menţionează nici măcar ceea ce se întâmplă dacă aţi încerca să atragă mai mult decât un milliamp. Nu stiu ce ar fi mai bine, deşi, baterii subtiri sunt greu de găsit. Opamps pe care le folosesc (TLC2274s) nu sunt low-curent. Ştiam acest lucru când le-am ales, dar am presupus că ar avea nevoie doar pentru a fi alimentat atunci când bobina a fost sub tensiune. În modul sniff acest lucru nu este adevărat; bobina nu este determinată, şi aş putea chiar sa puneti PIC la somn si se trezesc pe o margine de detector. Data viitoare, cred. Am fost neatent atunci când am proiectat chestii de comutare de putere; au existat o serie de căi de scurgere a adăugat că aproape 60 microamps în afara curentului. Am fost în măsură să stabilească acest lucru prin depopulează un cuplu de componente şi falsificarea funcţionalitatea de care le-au folosit pentru a oferi în software-ul. Off actual este de aproximativ 4 μA. CR2032s poate livra aproximativ 200 mAh, pentru o viaţă de a º teptare comparabil cu termenul de valabilitate al celulelor. Prezenţa obiectelor metalice în interiorul antenei face, probabil, lucruri ciudate. Desigur, detunes bobina un pic, şi chiar şi după ce l-am optimizat înapoi la rezonanţă tensiunea pe bobina a fost mai mică (care indică faptul că o parte din viata mea bateriei este de gând să curenţi turbionari în şuruburi de montare). Am avut câteva probleme interesante legate de preluare de la 125 kHz bobina citit. Fire de la bord pentru a bobina sunt destul de vicioase; serios se întâmplă lucruri rele în cazul în care restul pe urmele analogic. Am avut o mulţime de probleme de prelucrare din policarbonat, până când am primit feed-urile mele şi viteze de dreapta.Prea lentă a unei feed pentru viteza dumneavoastră este foarte rău, din plastic se topeşte, se incarca de tăiere, creşteri de frecare şi de ejecţie cip se duce la nimic, şi veţi obţine fugar termică. Odata ce am dat seama că totul a mers destul de uşor. Finisajul suprafeţei cu un paşaport 0.015 finisare "a fost acceptată ca prelucrate aproape peste tot. Cazul în care nu am fost folosit marginea non-zimţată de o lama ferăstrău să-l cureţe. Acrylic face un caz mai frumos decât policarbonat-este mult mai rigidă şi mai puţin predispus la zgarieturi. Un caz acrilic, probabil, nu ar supravieţui o cădere de două picior pe beton, totusi. Planuri de viitorJucărie descris mai sus este frumos, dar ar putea fi mai bine. Cred că aş putea proba de ieşire direct detector de vârf (după AC-cuplare-l în jos) şi nu demodulare în software-ul. Am o idee foarte inteligent care utilizează comparatoare PIC şi modul de tensiune de referinţă împrejurimi PSK de detectare, eventual atât de deştept că aceasta funcţionează doar într-o simulare. Acest lucru mi-ar permite să-şi piardă opamp în întregime. Aş putea conduce la o bobina GPIOs câteva legat împreună, la costul de gama de citit. Acest lucru ar primi de proiectare până la micro, plus unele pasive. Aş dori, de asemenea, pentru a scăpa de aprovizionare părţi şi a alerga dintr-o unică 3 V feroviar. Cred că aş trebuie să fac un fel de truc cu bobine multiple (cum ar fi un transformator) pentru a obţine o impedanţă de intrare rezonabil fără o nejustificat de mari Q. Alternativ, am putea construi un interval lung sniffer (detector de mai bine, cu diametrul de un picior mai bobină, destul de actuale ca este doar pe marginea de topire, o baterie de motocicleta la putere lucru...). Acest lucru nu ar fi aproape la fel de cool ca o versiune mai mică a jucăriei mea, dar ar fi mai bine pentru a convinge oamenii că plăcile sunt nesigure. |