Domofono raktų kopijavimo aparatas pic12f675. Kaip pasidaryti domofono rakto kopiją namuose

Telefono ryšio įranga naujuose pastatuose dabar yra būtina sąlyga, o senuose namuose – būtina. Tai labai padidina gyventojų saugumą ir padeda palaikyti tvarką prie įėjimo. Bet ką daryti, jei pamestas domofono raktas arba sulaužytas? Anksčiau montuotojų įmonės buvo monopolistės ir pakeldavo atsarginių įrenginių kainą, dabar yra daug įmonių ir dirbtuvių, kurios gali perrašyti domofono raktą už palyginti nedidelę sumą. Tačiau tuos pačius veiksmus galima atlikti savarankiškai.

Yra du pagrindiniai būdai gauti naują raktą, priklausomai nuo naudojamų įrenginių tipo - tai kodo įvedimas į domofono sistemą.

prisilietimo atmintis

Jutiklinė atmintis yra nepastovus identifikatorius, kurį sudaro atminties įrenginys, realaus laiko laikrodis ir įkraunama baterija. Informacija nuskaitoma arba rašoma tiesiog palietus įrenginio korpusą. Yra daugybė jutiklinės atminties rūšių. Jie skiriasi ne tik, bet ir modeliais atminties dydžiu. Perkant ruošinius kodams rašyti reikia atsižvelgti į suderinamumą su įdiegta įranga.

Liečiamos atminties modeliai

  1. Dalaso modelis yra labiausiai paplitęs modelis. Ant plastikinio laikiklio gali būti domofono įrangos gamintojo emblema arba užrašas: Sean, Eltis, Vizit arba Dalaso logotipas. Norint nukopijuoti kodą, naudojami TM2004 ruošiniai.

    Kai kurios Vizit domofono sistemos nepalaiko darbo su TM2004 ruošiniais, tokiu atveju galite naudoti brangesnį universalų modelį TM08.

  2. Metacom modelis. Vidaus gamyba yra visiškas Dalaso modelio analogas. Visiškai atitinka elektrines charakteristikas. Jie turi būti pažymėti tiek ant plastikinio laikiklio, tiek ant paties įrenginio metalinio korpuso – užrašas Metakom arba MT. Tinka ruošiniai TM2004 ir TM08.
  3. Modelis "Cyfral". Ant jų laikiklio yra panašus užrašas. Senesniems modeliams tinka TM2004 ruošiniai, naujiems – TM7. Rezistoriaus modelis "Skaitmeninis". Pasenusi įranga, kuri yra gana reta. Tokie įrenginiai neturi lusto su įrašytu kodu. Jie naudoja rezistorių, kurio reitingas atitinka tam tikrą domofoną. Tokį įrenginį galite atskirti pagal įdubą, esančią centrinėje korpuso dalyje. Kopijavimas atliekamas lituojant atitinkamą rezistorių prie bet kurio Touch atminties ruošinio. Jo talpa nustatoma omometru, naudojant darbinį raktą.

Bekontaktis RFID

Pastaruoju metu plačiai paplito bekontakčio skaitymo sistemos, kuriose naudojami RFID raktai arba artumo kortelės. Išoriškai jie primena įprastą plastikinį raktų pakabuką arba banko kortelę. Įrenginiai neturi savo maitinimo šaltinio. Kodo perdavimas į priimantį įrenginį atliekamas gavus radijo signalą, bangos spinduliuotės energiją ir veikia kaip energijos tiekimas. Todėl aktyvavimas vyksta tik 10-15 cm atstumu nuo spynos. Priešingu atveju įrenginys ir žymos veiksmas nesiskiria nuo panašios Touch atminties.

Patys raktai atrodo kaip raktų pakabukai, ne didesni nei penkių rublių moneta ir 5 mm storio. Bekontaktės kortelės yra panašaus formato į banko korteles ir yra kiek storesnės – iki 3 mm. Kortelių ir raktų pakabukų sukeičiamumas, nepaisant tos pačios veikiančios technologijos, ne visada įmanomas, nes galimas perduodamo signalo intensyvumo pažeidimas. Šiuo metu skirtas RFID raktų kopijavimui įvairių gamintojų tinka beveik bet koks ruošinys: HID Prox II, EM-Marin, Indala ir kt.

Įrašymas ant ruošinio

laikmenose atliekamas naudojant specialius įrenginius, programuotojus. Pavyzdžiui, Keymaster PRO 4 RF įrenginys yra universalus programuotojas tiek Touch atminties standarto, tiek bekontakčiams RFID įrenginiams. Leidžia kopijuoti raktus į tuščias vietas:
  • RW/TM 2004;
  • CS 1, 3;
  • TM - 01, 07, 08;
  • RW 1990, 2007, 125RF.

Palaiko labiausiai paplitusių gamintojų standartus:

Lietimui skirta atmintis:

  • Cyfralis;
    • Dalasas;
  • RFID:
    • HID ProxII;
    • EM Marin;
    • Indala ir kai kurie kiti.

Ruošinio įrašymas atliekamas vienu prisilietimu. Rakto kopijavimo algoritmas yra toks:

  1. Skaitytojui atnešamas raktas, kurį reikia nukopijuoti.
  2. Prietaisas savarankiškai nustato rekomenduojamo ruošinio tipą, gamintoją ir modelį.
  3. Tuščias atnešamas skaitytojui. Ir paspaudžiamas įrašymo mygtukas.
  4. Raktas rašomas.

Be to, įrenginys gali įrašyti be šaltinio rakto, jei žinomas atmintyje saugomas kodas. Dauginimo aparatas yra prijungtas prie kompiuterio per USB jungtis ir turi savo programinę įrangą, kuri atmintyje saugo paskutinius 500 įrašų ir valdo Touch atminties bei RFID įrašų paskirstymą. Tai nepasiekiama daugumai paprastų vartotojų, tačiau yra paprastesnių modelių, kurių funkcionalumas yra ribotas:

  • Key Master 3;
  • KeyMaster 3 RF - palaiko bekontaktes žymas;
  • TMD-5 RFID;
  • TM Pro.

Intercom programavimas

Informaciją apie naujus raktus taip pat galima įvesti tiesiai į domofono įrangą. Natūralu, kad skirtingi gamintojai sukūrė skirtingas domofonų programavimo instrukcijas.

Informacijos įvedimas į domofono atmintį galimas tik tuo atveju, jei montuotojai nepakeitė įrenginio gamyklinio prieigos kodo. Paprastai montuotojai retai keičia prieigos slaptažodį, o dauguma numatytųjų slaptažodžių yra 1234.

Gamintojas Raimann

  • Norėdami įvesti nustatymus - paspaudžiamas skaitytuvo mygtukas;
  • Prisijungimo slaptažodis nuo 9 iki 4, po (palaukite 10-15 sekundžių) surinkite nuo 1 iki 6;
  • Ekrane pasirodo simbolis „P“;
  • Meniu punktai nuo 2 iki 8. Punktas, atsakingas už naujų klavišų Nr. 2 įvedimą.

Gamintojas VIZIT

  • Nustatymų įvedimas - klaviatūra įvedamas # 99;
  • Po pyptelėjimo įvedamas slaptažodis 1234, tada vėl pypsi;
  • Naujų raktų programavimas ir išrašymas – taškas numeris 3;
  • Įvedamas buto numeris, paspaudžiamas raktas ir paspaudžiamas #;
  • Tada paspauskite *, kad perjungtumėte į darbo režimą.

Jei klaviatūroje nėra mygtukų * ir #, jie atitinkamai pakeičiami C ir K mygtukais.

Gamintojas Eltis

  • Norėdami patekti į meniu, paspauskite mygtuką B, laikykite nuspaustą 7 sekundes;
  • Sistemos slaptažodis 1234;
  • Kai meniu įkeliamas ekrane, pasirinkite elementą „Key master“;
  • Surenkame buto numerį ir spaudžiame mygtuką B;
  • Ekrane pasirodžius komandai LF, reikia atremti raktą prie skaitytuvo;
  • Įrašymas baigiamas, jei ekrane pasirodo pranešimas PRIDĖTI (jei anksčiau atmintyje nebuvo šio buto raktų) arba buto numeris.

Kiekvienas domofono klavišas turi savo numerį – būtent šis numeris naudojamas kaip rakto identifikatorius. Domofonas nusprendžia pagal rakto numerį - savo ar kažkieno kito. Todėl kopijavimo algoritmas yra toks: pirmiausia reikia išsiaiškinti leistino rakto numerį, o tada priskirti šį numerį kitam raktui – klonui. Dėl domofono nėra skirtumo, ar buvo pridėtas originalus raktas, ar jo kopija. Patikrinęs numerį su savo leidžiamų numerių duomenų baze, jis atidarys duris.

Intercom klavišai, kuriuos prijungsime prie Arduino (jie kartais vadinami iButton arba prisilietimo atmintis) yra skaitomi ir rašomi per 1 laido sąsają. Todėl prijungimo schema yra labai paprasta. Viskas, ko mums reikia, yra pora laidų ir 2,2 kΩ ištraukimo rezistorius. Sujungimo schema parodyta paveikslėlyje.

Surinkta grandinė gali atrodyti maždaug taip:


2 Skaitykite „iButton“ rakto ID naudojant Arduino

Norint dirbti su 1 laido sąsaja, yra paruoštų Arduino bibliotekų. Galite naudoti, pavyzdžiui, šį. Atsisiųskite archyvą ir išpakuokite jį į aplanką /bibliotekos/ esantis Arduino IDE kataloge. Dabar su šiuo protokolu galime dirbti labai paprastai.

Įkelkite šį eskizą į Arduino standartiniu būdu:

„iButton“ klavišų skaitymo eskizas naudojant „Arduino“.(išplečia) #įtraukti OneWire iButton (10); // sukurti 1 laido objektą ant 10 kaiščio negalioja sąranka (tuščia) ( Serial.begin(9600); ) void loop (tuščia) ( delsimas (1000); // delsimas 1 sek baitas addr; // masyvas raktų duomenims saugoti if (!iButton.search(addr)) ( // jei raktas nepridėtas Serial.println("Neprijungtas raktas..."); // praneškite apie šį grąžinimą; // ir nutraukite programa ) Serial.print("Raktas: "); for(int i=0; i )

Šiame brėžinyje parodytas domofono, kuris yra prijungtas prie grandinės, rakto numeris. Štai ko mums dabar reikia: turime sužinoti rakto, kurio kopiją norime padaryti, numerį. Prijunkite Arduino prie kompiuterio. Pradėkime nuosekliojo prievado monitorių: Įrankiai Serial Port Monitor(arba spartusis klavišas Ctrl + Shift + M).

Dabar prijunkite raktą prie grandinės. Prievado monitorius parodys rakto numerį. Prisiminkime šį skaičių.


Ir štai koks apsikeitimas vyksta vieno laido linijoje, kai nuskaitomas rakto identifikatorius (daugiau informacijos žr. žemiau):

Paveikslėlyje, žinoma, nepateiktos visos įgyvendinimo detalės. Todėl straipsnio pabaigoje pridedu laiko diagramą *.logicdata formatu, paimtą loginio analizatoriaus ir programos pagalba. „Saleae“ loginis analizatorius ir atsivėrė jai. Programa yra nemokama ir ją galima atsisiųsti iš oficialios Saleae svetainės. Norėdami atidaryti *.logicdata failą, turite paleisti programą, paspauskite Ctrl + O arba meniu Galimybės(esantis viršuje dešinėje) pasirinkite elementą atidaryti fiksavimą / sąranką.

3 Dalaso rakto identifikatoriaus įrašas naudojant Arduino

Dabar parašykime duomenų įrašymo į iButton rakto atmintį eskizą.

iButton klavišų rašymo eskizas su Arduino(išplečia) #įtraukti // įtraukti biblioteką const int pin = 10; // paskelbti OneWire PIN numerį iButton(pin); // deklaruoti OneWire objektą 10 kaištyje // rakto numerį, kurį norime įrašyti į iButton: byte key_to_write = ( 0x01, 0xF6, 0x75, 0xD7, 0x0F, 0x00, 0x00, 0x9A ); void setup(void) ( Serial.begin(9600); pinMode(pin, OUTPUT); ) void loop (tuščia) ( delsimas (1000); // delsimas 1 sek. iButton.reset(); // įrenginio atstatymas 1-wire delay(50); iButton.write(0x33); // siųsti "skaityti" komandos baitų duomenis; // masyvas pagrindinių duomenų saugojimui iButton.read_bytes(data, 8); // nuskaityti pridėto rakto duomenis, 8x8=64 bitai if (OneWire::crc8(data, 7) != data) ( // patikrinti pridedamo rakto kontrolinę sumą Serial. println("CRC klaida!"); // jei CRC neteisingas, praneškite apie tai grąžinimą; // ir nutraukite programą ) if (duomenys & duomenys & duomenys & duomenys & duomenys & duomenys & duomenys & duomenys == 0xFF) ( return; // jei raktas nėra prijungtas prie skaitytuvo, nutraukite programą ir palaukite, kol ) Serial.print("Pradėti programavimą..."); // duomenų įrašymo į raktą, skirto (int i = 0; i ) proceso pradžia // Duomenų rašymo į iButton klavišą-planšetę inicijavimas: void send_programing_impulse() ( digitalWrite(pin, HIGH); delsimas(60); digitalWrite(pin, LOW); delsimas(5); digitalWrite(pin, HIGH); delsimas(50); }

Nepamirškite masyve nustatyti pradinio rakto numerio raktas_rašyti kurių išmokome anksčiau.

Įkelkite šį eskizą į „Arduino“. Atidarykite nuosekliojo prievado monitorių (Ctrl + Shift + M). Prie schemos prijungkime raktą, kuris bus pradinio rakto klonas. Nuosekliojo prievado monitorius parodys atitinkamą pranešimą apie programavimo rezultatą.

Jei šis eskizas neveikė, pabandykite pakeisti kodą po to Serial.print ("Pradėti programavimą...") iki funkcijos pabaigos kilpa ()į kitą:

Papildomas eskizas iButton rakto rašymui naudojant Arduino(išplėsti) uždelsimas(200); iButton.skip(); iButton.reset(); iButton.write(0x33); // skaityti dabartinį rakto numerį Serial.print("ID prieš rašant:"); for (baitas i=0; i<8; i++){ Serial.print(" "); Serial.print(iButton.read(), HEX); } Serial.print("\n"); iButton.skip(); iButton.reset(); iButton.write(0xD1); // команда разрешения записи digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(60); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); // выведем ключ, который собираемся записать: Serial.print("Writing iButton ID: "); for (byte i=0; i<8; i++) { Serial.print(key_to_write[i], HEX); Serial.print(" "); } Serial.print("\n"); iButton.skip(); iButton.reset(); iButton.write(0xD5); // команда записи for (byte i=0; i<8; i++) { writeByte(key_to_write[i]); Serial.print("*"); } Serial.print("\n"); iButton.reset(); iButton.write(0xD1); // команда выхода из режима записи digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(10); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); Serial.println("Success!"); delay(10000);

Čia funkcija rašyti baitas () bus taip:

int writeByte(baito duomenys) ( int duomenų_bitas; for(duomenų_bitas=0; duomenų_bitas<8; data_bit++) { if (data & 1) { digitalWrite(pin, LOW); pinMode(pin, OUTPUT); delayMicroseconds(60); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); } else { digitalWrite(pin, LOW); pinMode(pin, OUTPUT); pinMode(pin, INPUT); digitalWrite(pin, HIGH); delay(10); } data = data >> 1; ) grąžinti 0; )

Nėra prasmės rodyti rakto identifikatoriaus įrašymo eskizo veikimo laiko diagramą, nes jis ilgas ir netilps nuotraukoje. Tačiau *.logicdata failas, skirtas loginio analizatoriaus programai, pridedamas straipsnio pabaigoje.

Intercom raktai būna įvairių tipų. Šis kodas tinka ne visiems raktams, o tik RW1990 arba RW1990.2. Kitų tipų raktų programavimas gali sukelti rakto gedimą!

Jei norite, galite perrašyti programą kitokio tipo raktui. Norėdami tai padaryti, naudokite savo rakto tipo techninį aprašymą (duomenų lapą) ir pakeiskite eskizą pagal aprašymą. Atsisiųskite „iButton“ raktų duomenų lapą galima pridėti prie straipsnio.

Beje, kai kurie šiuolaikiniai domofonai nuskaito ne tik rakto identifikatorių, bet ir kitą originaliame rakte įrašytą informaciją. Todėl klonuoti kopijuojant tik numerį nepavyks. Turite visiškai nukopijuoti pagrindinius duomenis.

4 Vieno laido aprašymas 1 laidų sąsaja

Pažvelkime atidžiau į vieno laido sąsają. Organizaciniu požiūriu jis panašus į I2C sąsają: joje taip pat turi būti pagrindinis įrenginys (master), kuris inicijuoja mainus, taip pat vienas ar daugiau pagalbinių įrenginių (slave). Visi įrenginiai prijungti prie vienos bendros magistralės. iButton įrenginiai visada yra vergai. Pagrindinis valdiklis paprastai yra mikrovaldiklis arba kompiuteris. Duomenų perdavimo sparta yra 16,3 kbps. Tuščiosios eigos magistralė yra logiškai „1“ (aukšta). Šis protokolas teikia tik 5 tipų signalus:

  • iš naujo nustatyti impulsą (pagrindinis)
  • buvimo impulsas (vergas)
  • rašyti bitą "0" (pagrindinis)
  • rašyti bitą "1" (pagrindinis)
  • skaityti bitą (šeimininkas)
Išskyrus buvimo impulsą, visus kitus generuoja šeimininkas. Keitimas visada vyksta pagal schemą: 1) Inicializavimas 2) Darbo su ROM komandos 3) Darbo su PROM komandos 4) Duomenų perdavimas.

1) inicijavimas

Inicijavimas susideda iš to, kad pagrindinis valdiklis nustato atstatymo sąlygą RESET (nuleidžia liniją iki "0" 480 μs ar ilgiau, o tada ją atleidžia, o dėl traukimo rezistoriaus linija pakyla į būseną „1“), o ne vėliau kaip per 60 µs po to pavaldinys turi patvirtinti buvimą, taip pat nuleisdamas liniją iki „0“ 60 ... 240 µs ir atlaisvindamas:


2) Darbo su ROM komandos

Jei po inicijavimo impulso negaunamas patvirtinimo signalas, pagrindinis valdiklis kartoja magistralės apklausą. Jei gaunamas patvirtinimo signalas, pagrindinis vadovas supranta, kad magistralėje yra įrenginys, paruoštas mainams, ir siunčia jam vieną iš keturių 8 bitų ROM komandų:

(*) Beje, yra nemažai iButton įrenginių šeimų, kai kurios iš jų išvardytos žemiau esančioje lentelėje.

iButton šeimos kodai(atsiskleidžia)
Šeimos kodasiButton įrenginiaiapibūdinimas
0x01DS1990A, DS1990R, DS2401, DS2411Unikalus serijos numerio raktas
0x02DS1991Kelių raktų, 1152 bitų saugus EEPROM
0x04DS1994, DS24044 kb NV RAM + laikrodis, laikmatis ir žadintuvas
0x05DS2405Vienas adresuojamas raktas
0x06DS19934 KB NV RAM
0x08DS19921 KB NV RAM
0x09DS1982, DS25021 kb PROM
0x0ADS199516 KB NV RAM
0x0BDS1985, DS250516 KB EEPROM
0x0CDS199664 KB NV RAM
0x0FDS1986, DS250664 KB EEPROM
0x10DS1920, DS1820, DS18S20, DS18B20temperatūros jutiklis
0x12DS2406, DS24071 kb EEPROM + dviejų kanalų adresuojamas raktas
0x14DS1971, DS2430A256 bitų EEPROM ir 64 bitų PROM
0x1ADS1963L4 KB NV RAM + rašymo ciklo skaitiklis
0x1CDS28E04-1004 KB EEPROM + dviejų kanalų adresuojamas raktas
0x1DDS24234 KB NV RAM + išorinis skaitiklis
0x1FDS2409Dviejų kanalų adresuojamas raktas su galimybe persijungti į grįžtamąją magistralę
0x20DS2450Keturių kanalų ADC
0x21DS1921G, DS1921H, DS1921ZTermochroninis jutiklis su duomenų rinkimo funkcija
0x23DS1973, DS24334 kb EEPROM
0x24DS1904, DS2415Realaus laiko laikrodis
0x26DS2438Temperatūros jutiklis, ADC
0x27DS2417Realaus laiko laikrodis su pertraukimu
0x29DS2408Dvikryptis 8 bitų I/O prievadas
0x2CDS2890Vieno kanalo skaitmeninis potenciometras
0x2DDS1972, DS24311 kb EEPROM
0x30DS2760Temperatūros jutiklis, srovės jutiklis, ADC
0x37DS197732 KB slaptažodžiu apsaugotas EEPROM
0x3ADS2413Dviejų kanalų adresuojamas jungiklis
0x41DS1922L, DS1922T, DS1923, DS2422Didelės skiriamosios gebos termochroniniai ir higrochroniniai jutikliai su duomenų kaupimu
0x42DS28EA00Skaitmeninis termometras su programuojama skiriamąja geba, nuosekliojo ryšio galimybe ir programuojamais I/O prievadais
0x43DS28EC2020 kb EEPROM

Duomenys perduodami nuosekliai, po bitų. Kiekvieno bito perdavimą inicijuoja šeimininkas. Įrašant lyderis nuleidžia liniją iki nulio ir išlaiko ją. Jei eilutės išlaikymo laikas yra 1…15 µs, rašomas bitas „1“. Jei sulaikymo laikas yra 60 µs ar daugiau, rašomas bitas „0“.

Bitų skaitymą taip pat inicijuoja meistras. Pradedant skaityti kiekvieną bitą, meistras žemai patraukia autobusą. Jei vergas nori siųsti „0“, jis palaiko magistralę LOW būsenoje 60–120 µs, o jei nori siųsti „1“, jis palaiko magistralę LOW būsenoje maždaug 15 µs. Po to vergas atleidžia liniją, o dėl traukimo rezistoriaus grįžta į HIGH būseną.

Taip, pavyzdžiui, atrodo paieškos komandos Search ROM (0xF0) laiko diagrama. Bitų rašymo komandos diagramoje pažymėtos raudonai. Perduodant 1 laidu atkreipkite dėmesį į bitų tvarką: reikšmingiausias bitas yra dešinėje, mažiausiai reikšmingas bitas yra kairėje.


3) Darbo su PROM komandos

Prieš svarstant komandas, skirtas dirbti su iButton PROM, būtina pasakyti keletą žodžių apie dongle atminties struktūrą. Atmintis suskirstyta į 4 lygias dalis: trys iš jų skirtos trims unikaliems raktams saugoti, o ketvirtoji skirta laikinai duomenų saugojimui. Šis laikinas buferis tarnauja kaip juodraštis, kuriame duomenys paruošiami raktams įrašyti.


Norėdami dirbti su PROM, yra 6 komandos:

vardasKomandaTikslas
Rašyti į laikiną buferį (rašyti bloknotą)0x96Naudojamas duomenims įrašyti į laikiną buferį (scratchpad).
Skaityti iš laikinojo buferio (skaityti bloknotą)0x69Naudojamas duomenims iš laikinojo buferio nuskaityti.
Kopijuoti iš laikinos iškarpinės (Kopijuoti bloknotą)0x3CNaudojamas laikinajame buferyje paruoštiems duomenims perkelti į pasirinktą raktą.
Rašyti rakto slaptažodį (Rašyti slaptažodį)0x5ANaudojamas įrašyti pasirinkto rakto slaptažodį ir unikalų identifikatorių (vieną iš trijų).
Rašyti raktą (Rašyti antrinį raktą)0x99Naudojamas tiesiogiai įrašyti duomenis į pasirinktą raktą (apeinant laikinąjį buferį).
Skaitymo raktas (skaitymo antrinis raktas)0x66Naudojamas pasirinkto rakto duomenims nuskaityti.

4) Duomenų perdavimas

Tęsinys...

5 Galimos klaidos sudarant eskizą

1) Jei rengiant eskizą įvyko klaida WConstants.h: Nėra tokio failo ar katalogo #include "WConstants.h", tada, kaip parinktis, seka faile OneWire.cpp pakeisti pirmąjį bloką po komentarų į šiuos:

#įtraukti #įtraukti išorinis "C" (#įtraukti #įtraukti }

2) Jei kompiliavimo metu įvyksta klaida klasė OneWire neturi nario, pavadinto read_bytes, tada suraskite ir pabandykite naudoti kitą biblioteką, kad galėtumėte dirbti su OneWire sąsaja.

Pametėte domofono raktus ir negalite padaryti kopijos. Ar norite aplankyti draugę, bet neturite jos įėjimo raktų. Arba jums tiesiog reikia sumušti priešą, bet negalite patekti į jo namus, tada šis straipsnis skirtas jums.

Keletas žodžių apie darbo principą...
Yra nuomonė, kad tabletėse yra magnetas iš domofono ir jis atidaro duris. Ne, tai nėra. Planšetinis kompiuteris yra ROM su laidiniu raktu. Šis ROM vadinamas - Touch Memory, prekės ženklas DS1990A. DS1990A yra domofono raktų prekės ženklas. Su domofonu bendrauja per vieno laido magistralę (vieno laido sąsaja). Šią magistralę sukūrė Dalasas ir leidžia dviem įrenginiams susisiekti tik vienu laidu. Jei įrenginys yra pasyvus (kaip mūsų atveju), tada jis taip pat perduoda jam energiją per šį laidą. Taip pat reikia pažymėti, kad taip pat reikalingas bendras laidas (kad grandinė užsidarytų), tačiau paprastai visi prie šios magistralės prijungtų įrenginių įžeminimai yra sujungti kartu. Rakte yra 60 pikofaradų kondensatorius, kuris atsakymo metu suteikia raktui trumpalaikį maitinimą. Tačiau pagrindinis įrenginys turi nuolat (bent kartą per 120 mikrosekundžių) generuoti vieną signalą, kad įkrautų šį kondensatorių, kad planšetinio kompiuterio ROM ir toliau būtų maitinamas.

Planšetinio kompiuterio vidinės dalys

Vieno laido magistralės organizavimas
Vieno laido magistralė veikia taip. Yra pagrindinis įrenginys ir pagalbinis įrenginys, mūsų atveju pasyvus raktas. Pagrindinius signalus generuoja pagrindinis, loginis vienas ir nuliniai signalai. Pagalbinis įrenginys gali tik priversti nulinius signalus (t. y. tiesiog patraukti magistralę į žemę per tranzistorių). Supaprastinta pagrindinio ir pavaldinio schema parodyta paveikslėliuose.

Vedlio schema

Pažiūrėjus į grandinę nesunku pastebėti, kad pagal nutylėjimą kapitonas visada turi +5 voltus, a la loginis vienetas. Norėdami perkelti loginį nulį, meistras uždaro magistralę į žemę per tranzistorių, o norint perduoti bloką - tiesiog atidaro. Tai daroma siekiant tiekti maitinimą pagalbiniam įrenginiui. Vergas įrenginys pagamintas panašiai, tik jis negeneruoja +5 voltų. Jis gali tik nuskandinti autobusą į žemę ir taip perduoti loginį nulį. Loginis vienetas perduodamas tiesiog įrenginio „tyla“.

Darbo protokolas
Iš karto galima pastebėti, kad paradą valdo tik Meistras, pats raktas DS1990A arba laiko žemę (meistras pats nustato magistralę į nulį), arba tiesiog tyli, jei nori pervesti vienetą, tiesiog tyli. Pažiūrėkime į piešinį.

Rakto nuskaitymo domofonu pavyzdys.

Po to, kai raktas sugeneruoja PREFERENCE impulsą, pagrindinis įrenginys kurį laiką laukia ir išduoda komandą nuskaityti ROM, dažniausiai tai yra šeimos kodas, mūsų atveju 33H. Atkreipkite dėmesį į tai, kaip atliekamas nulio ir vieneto perkėlimas. Bet kokiu atveju impulsas „nukrenta“ į žemę, bet jei perduodamas vienetas, jis greitai atstatomas (apie 1 mikrosekundę), jei turėtų būti nulis, impulsas kurį laiką „kabo“ ant žemės, tada vėl grįžta į vieną. Būtina grįžti į vienybę, kad pasyvus įtaisas nuolat papildytų kondensatoriaus energiją ir jame būtų galia. Be to, domofonas tam tikrą laiką atlaiko ir pradeda generuoti impulsus informacijai priimti, iš viso 64 impulsus (tai yra, jis gauna 64 bitus informacijos). Svarbiausia tik tinkamai suderinti trukmę. Jei jis nori rodyti nulį, jis kurį laiką palaiko autobusą ant nulio, jei ne, tada jis tiesiog tyli. Visa kita už jį padaro domofonas.

DS1990A rakto turinys.
Domofonuose ir tiesiog įrenginiuose, kuriuose tokie įrenginiai naudojami durims atidaryti, naudojamas DS1990A standarto raktas. Šis įrenginys yra 8 baitų ROM, su informacija įrašyta lazeriu.


Raktų išmetimo schema.

Žemame baite yra šeimos kodas. DS1990A visada bus 01h. Kituose šešiuose baituose yra rakto serijos numeris. Pats intymiausias dalykas, identifikuojantis raktą. Paskutinis baitas vadinamas CRC, tai pariteto patikrinimas, užtikrinantis perduodamų duomenų autentiškumą. Jis skaičiuojamas iš ankstesnių septynių baitų. Beje, tai ne vienintelis standartas. Yra perrašomų ROM, kuriuose galima pernešti informaciją, taip pat yra šifravimo raktų. Tačiau visą Dalaso planšetinių kompiuterių įvairovę tiesiog nerealu apsvarstyti viename straipsnyje, apie juos galite perskaityti diske.

Fizinis rakto įrenginys.
Tikriausiai visa tai, kas išdėstyta pirmiau, atbaidė bet kokį norą susidoroti su raktų emuliatoriais, nes raktas turi būti perskaitytas, o tai yra toks kraujavimas. Pasirodo, ne! Dalaso gamintojai mumis pasirūpino ir visą mums reikalingą informaciją patalpino tiesiai ant rakto, be to, šešioliktaine sistema! Ant jo yra išgraviruotas ir visiškai įmanoma jį perskaityti, o vėliau susiūti į mūsų nuostabų emuliatorių.

Rakto snukis

Iš visos šios informacijos mus domina šie dalykai:

CC = CRC yra 7-ojo programinės įrangos baito pariteto tikrinimo baitas
SSSSSSSSSSSS = dvylika nibblių //nibbles = 1/2 baitų// serijos numerio, t.y. pats raktas šešioliktainiuose koduose.
FF = šeimos kodas, mūsų atveju tai yra 01h - mūsų rakto nulis baitas.

Pasirodo, galime tiesiog parašyti programą, įkalti į ją visą raktą, rašikliais vizualiai iš tikrojo rakto perrašyti dump ir gausime jau paruoštą emuliatorių. Pakanka tik paimti raktą į priešo rankas ir perrašyti, kas ant jo parašyta. Ką aš padariau labai sėkmingai. :)

emuliatorius.
Taigi mes pasiekėme skaniausią - domofono klavišų emuliatorių. Pirma, kažkurioje svetainėje radau paruoštą emuliatorių, susiuvau jį į savo AT89C51 ir jis neveikė (tai nenuostabu). Tačiau nėra sportiška naudoti kitų žmonių programinę įrangą ir gaudyti kitų žmonių, specialiai paliktas, klaidas kode. Todėl pradėjau kurti savo emuliatorius ir rašyti jiems savo programas. Apskritai, aš bandžiau sukurti emuliatorių ant 6 skirtingų mikrovaldiklių, skirtingų architektūrų, priklausančių dviem šeimoms AVR ir i8051, kuriuos gamina Atmel. Tai veikė ne visiems, buvo parašyta daug programų. Iš pradžių Napoleono užduotys dažniausiai buvo keliamos sukurti universalų emuliatorių su galimybe pasirinkti raktą, bet paskui palikau šią idėją dėl jos hemorojaus ir beprasmybės, tegul tuo pasirūpina kiti šiuo straipsniu susidomėję žmonės. Bet emuliatoriaus kaina, neskaitant sunaudoto darbo, yra mažesnė nei 70–80 re, galite gauti net 30 re, jei tai darysite, pavyzdžiui, ATtiny12.

Emuliatoriaus veikimo principas.
Detaliai išnagrinėjome domofono veikimo principą, todėl nebus didelių problemų aprašyti DS1990A emuliatoriaus programos algoritmą. Atidžiai žiūrime į diagramą ir galvojame, ką reikia padaryti. Ir jums reikia atlikti šiuos veiksmus. Ore kabanti mikrovaldiklio kojelė (kol prijungiama prie žemės, atstatymo impulsas) valdiklis laikys loginiu vienetu. Tai reiškia, kad padavus maitinimą valdikliui, turime palaukti, kol koja nusileis ant žemės, a la iki nulio. Išgirdę nulį, džiaugiamės, šiek tiek palaukiame ir perkeliame prievadą iš skaitymo režimo į rašymo režimą. Tada nuleidžiame magistralę iki nulio ir kurį laiką palaikome - generuojame PRESENCE impulsą (impulsų trukmę žr. duomenų lape). Tada vėl perkeliame autobusą į skaitymo režimą ir laukiame, ką mums pasakys meistras - domofonas. Jis mums pasakys skaitymo komandą, kurią sudaro 8 bitai. Neiššifruosime, nes 99,999% atvejų jis pasakys mums komandą duoti savo sąvartyną, a la 33H, tiesiog suskaičiuokite 8 impulsus ir nesijaudinkite. Laukiame toliau. Ir prasideda pats sunkiausias ir įdomiausias dalykas – reikia greitai pažiūrėti, ką mums sako domofonas, ir greitai į jį atsakyti. Turime po truputį išduoti serijos numerį, susidedantį iš 8 baitų, apie kurį minėjau aukščiau. Padariau taip (nesvarbu koks mikrovaldiklis, principas visur bus vienodas), baitą įkėliau į kažkokį laisvą registrą, ir paslinkiau į dešinę, pažiūrėjau į transfer bitą. Kai tik domofonas nukrenta magistralę iki nulio, tada, jei aš nustatysiu perdavimo vėliavėlę į vieną, aš tiesiog tyliu apie šį impulsą ir laukiu, kol bus generuojamas kitas bito skaitymo impulsas iš pagrindinio kompiuterio. Jei perdavimo vėliavėlėje yra nulis, tai po to, kai domofonas nuleidžia magistralę iki nulio, aš įjungiu mikrovaldiklio prievadą į išvesties režimą ir kurį laiką jėga laikau magistralę ties nuliu, tada atleidžiu ir vėl perjungiu valdiklio prievadą į skaitymo režimas. Pagal impulso trukmę žemėje pagrindinis įrenginys supranta, ar jam buvo perduotas vienetas, ar nulis. Iš esmės viskas, tada domofonas turėtų džiaugsmingai pypsėti ir atidaryti duris.

Praktika.

Testerio lenta. Matau užrašą Dallas.

Po nedidelio hemorojaus ir karo su derintuvu kodas pasirodė. Pateikiame kodo pavyzdį, skirtą duomenims išvesti į domofoną AT89C2051. (Apskritai AT89C2051 populiarus, bet pasenęs valdiklis. Vienas pirmųjų kurį suprogramavau. Minimalūs periferiniai įrenginiai, atmintis irgi nieko. Siūtas tik su aukštos įtampos programuotoju. Nors yra jo naujas pakaitalas AT89S2051 , jau galima flashinti in-circuit per kazkoki AVR ISP, o gal per AVRDUDE - netikrinau.. smalsiausia, kad jis suderinamas su ATTiny2313 ant kojytes, tad kodą galima pervesti į Tinka. pastaba DI HALT)

D.I. SUSTABA:
Šį pragarišką kodą su Longu rašėme dar 2006 m. jo bute. Suskubo žagsėti dėl jų bukumo. Tada pirmą kartą pajutau AVR. Aš sėdėjau ant visiškai nepažįstamo surinkėjo, skirto skaitymo iš EEPROM procedūrai, o Long rinko demonstracinę plokštę savo būsimam emuliatoriui. Ypač prisimenu savo pokštą su sarginiu šunimi, kai mano MK buvo iš naujo nustatytas rašant į EEPROM ir naudojant pjovimo diską iš lentos išpjaunant i2c atminties lustą. Ech... nieko, važiuoju į Maskvą, vėl sudeginsim!

;======================================= ; Serijos numerio išdavimas; in: R0- adresas, kuriame yra serija su planšetinio kompiuterio tipu ir CRC8; NAUDOJIMAS: A,B,R0,R1,R2 ;====================================== ================ DEMUL_SendSer: mov R2,#8 SS3: mov ACC,@R0 mov R1,#8 SS2: JB TouchFuck,$ ; nulis 1->0 RRC A ;C:=A,0; pamaina A; mov TouchFuck,C ;TouchFuck:=C; MOV B,#9 DJNZ B,$ ;Atidėti 20 us setb TouchFuck JNB TouchFuck,$ ;kilpa iki 0 DJNZ R1,SS2 inc R0 DJNZ R2,SS3 ret ;=============== =========================================

Rezultatai.
Dėl to gavau daug emuliatorių. Tiesa, kai kuriuos iš jų dar reikia priminti. Nors keli 100% veikiantys. Emuliatorių pavyzdžius galite peržiūrėti paveikslėliuose.



Emuliatorių nuotraukos

Įdomiausia yra CRC patikra, kurią atlieka domofonas. Jums to prireiks, jei, pavyzdžiui, norite įdėti Dallas užraktą savo kompiuteryje. CRC skaičiavimo pavyzdys A89C2051 (nors šis kodas veiks visuose i8051 šeimos mikrovaldikliuose.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 DO_CRC: PUSH ACC ;išsaugoti akumuliatorių PUSH B ;išsaugoti B registrą PUSH ACC ;išsaugoti bitus, kad būtų galima perkelti MOV B,#8 ;nustatyti poslinkį = 8 bitai ; CRC_LOOP: XRL A,CRC ;apskaičiuokite CRC RRC A ;perkelkite jį į nešiojamąjį MOV A,CRC ;gaukite paskutinę CRC reikšmę JNC ZERO ;praleiskite, jei duomenys = 0 XRL A,#18H ;atnaujinkite CRC reikšmę ; NULIS: RRC A ;padėkite naują CRC MOV CRC,A; išsaugokite naują CRC POP ACC; gaukite likusius bitus RR A; nustatykite kitą bitą PUSH ACC; išsaugokite likusius bitus DJNZ B, CRC_LOOP; pakartokite aštuonis bitus POP ACC ;išvalyti krūvą POP B ;atkurti B registrą POP ACC ;atkurti akumuliatorių RET

DO_CRC: PUSH ACC ;išsaugoti akumuliatorių PUSH B ;išsaugoti B registrą PUSH ACC ;išsaugoti bitus, kad būtų galima perkelti MOV B,#8 ;nustatyti poslinkį = 8 bitai ; CRC_LOOP: XRL A,CRC ;apskaičiuokite CRC RRC A ;perkelkite jį į nešiojamąjį MOV A,CRC ;gaukite paskutinę CRC reikšmę JNC ZERO ;praleiskite, jei duomenys = 0 XRL A,#18H ;atnaujinkite CRC reikšmę ; NULIS: RRC A ;padėkite naują CRC MOV CRC,A; išsaugokite naują CRC POP ACC; gaukite likusius bitus RR A; nustatykite kitą bitą PUSH ACC; išsaugokite likusius bitus DJNZ B, CRC_LOOP; pakartokite aštuonis bitus POP ACC ;išvalyti krūvą POP B ;atkurti B registrą POP ACC ;atkurti akumuliatorių RET

Išvada.
Kaip matote, domofono klavišai nėra tokie paprasti, kaip atrodo. Tačiau juos mėgdžioti gali visi, turintys programavimo ir lituoklio.

D.I. SUSTABA:
Praeitų dienų atvejai, senovės legendos gilios ... Ilgas - WDR! (tai bus aišku tik inicijuotajam ;)))))

Iš anksto redaguota straipsnio iš žurnalo „Hacker“ versija

Laba diena! Kažkaip pavargau mokėti 150 rublių už domofono rakto kopiją ir nusprendžiau surinkti paprastą, nebrangų iButton dublikatorių „Arduino“. Tokių paruoštų įrenginių kainos „įkandamos“, nors jų funkcionalumas yra platesnis, jie kopijuoja beveik viską, įskaitant belaidžius raktus. Man užtenka paprastos iButton rakto kopijos a la "mygtukas". Įdomus? Prašome po "iškirpti"!

Taigi pradėkime! Pirmiausia „techninė užduotis“, ką šis įrenginys turėtų sugebėti:
1) Paskaityk rakto turinį, įdomu kas ten prisiūta.
2) Nukopijuokite raktus, kad ir kaip keistai tai skambėtų :)
3) Paspauskite „universaliojo“ klavišą. Žodžiu „universalus“ turime omenyje bet kurį iš mūsų pačių raktų, kurie bus įrašyti pagal numatytuosius nustatymus.

UPD. Labai svarbus! Jei pirmasis baitas yra šeimos kodas 00 , pavyzdžiui 00 :12:34:56:AB:CD:EF: AA, tada po programinės įrangos raktas „mirs“, jo neskaitys šis programuotojas ir galbūt kiti. Patirties dėka, draugo dėka 16 :AB:CD:EF:E0 su natūraliai neteisinga kontroline suma E0. Kadangi kontrolinė suma neteisinga, domofonas skaitydamas ignoruoja šią seką. Šis domofonas sugadino visus perrašomus klavišus, o aš išsiaiškinau, kas yra ir kodėl raktuose esantys duomenys keičiasi „savaime“. Dėl to nebuvo įmanoma padaryti šio domofono dublikato, turėjau kreiptis į aptarnavimo organizaciją ir užsisakyti raktą už 100 rublių. :)


Dėl to už juokingus pinigus gauname naudingą buityje daiktą, parduodami „blankai“ įrašymui, nors neprisijungus galime rasti už 30 rublių už vienetą, kopijuokliams rinkoje už 100 - 150 rublių :).
UPD. Skaitome apie tai, kokių tipų raktus galima parašyti naudojant šį dauginimo įrenginį. Ačiū už pagalbą drauge.
UPD. Jei raktas neparašytas, sekite draugą. Planuoju pirkti +197 Įtraukti į adresyną Patiko apžvalga +95 +184

Visi žino, kad bet koks mechanizmas laikui bėgant blogėja, todėl jį reikia keisti, ypač dažnai patiriantiems fizinį krūvį.

Elektronika šia prasme yra patikimesnė, o jei ji gerai apsaugota elektra, gali tarnauti gana ilgai.

Raktų praradimas nuo mechaninės spynos dažnai siejamas su pastarosios pakeitimu. Pametus elektroninį lustą, pakanka padaryti jo kopiją naudojant.

Kaip yra išdėstytas ir veikia dauginimo aparatas

Kokie yra raktų dauginimo aparatų modeliai ir tipai

Visi gamtoje esantys domofono klavišų kopijavimo įrenginiai gali būti suskirstyti į tris skirtingus tipus:

  1. Programuotojai mirksi bekontakčiams klavišams tmd;
  2. Dauginimo aparatai, skirti kontaktinių domofono raktų kopijoms daryti;
  3. Universalus kopijavimo aparato tipas, galintis atnaujinti bet kokio tipo domofono lustus.

Kiekvienas iš šių įrenginių tipų turi savo modifikacijų.

Bekontakčiai dauginimo aparatai

Tarp jų yra trys įrenginių modifikacijos.

Pirmoji modifikacija apima programuotojus, kurie gamina RFID standartą EM-Marin, HID ir Indala (tmd kopijavimo aparatai), antroji modifikacija palaiko Mifare standartą, trečioji dauginimo aparatų modifikacija veikia su TECH-COM arba TKRF standarto raktais.

Kontaktinio tipo įrenginiai

Įrenginiai pateikiami dviejų tipų. Pirmasis tipas skirtas dirbti su Dallas kontaktinio tipo klavišais, antrojo tipo programuotojai dubliuoja ir tokio tipo raktus.

Dalaso lustas turi šešioliktainį kodą, o skaitmeninis – protokolo tipo kodu, kuris yra didelio dydžio.

Universalūs raktų programavimo įrenginiai

Universalūs domofono raktų dauginimo aparatai, be galimybės sukurti bet kurio skaitmeninio lusto kopiją, turi keletą papildomų funkcijų:

  • Galimybė atnaujinti;
  • Atminties bazės buvimas;
  • Kodo generavimas.

Turint omenyje pirmąją funkciją, reikia pasakyti, kad išleidus naujas raktų modifikacijas su originalia kodavimu, šiems lustams bus galima blykstyti programavimo įrenginio bazę, kuri galės daryti jų kopijas.

Antroji funkcija leidžia klonuoti raktus be originalo. Tai yra, po pirmojo mirksėjimo lusto kodas tiesiog įrašomas į įrenginio bazę ir atkuriamas pagal poreikį.

Trečioji funkcija leidžia mirksi raktus su originaliais kodais, pavyzdžiui, įmonės darbuotojams, kurių kiekvienas turi turėti savo asmeninį prieigos prie spynos kodą. Tada galite sekti konkretaus asmens apsilankymų tam tikrame objekte skaičių.

Ko reikia norint pasidaryti „pasidaryk pats“ domofono raktų dauginimo įrenginį

Savo rankomis kurdami raktų kopijavimo aparatą, galite remtis Arduino moduliu.

Elementų bazė, kuri bus reikalinga gaminant įrenginį:

  1. „Arduino Nano“ tipo mikrovaldiklis yra pagrindinės įrenginio „smegenys“, kuriose apdorojama informacija ir įrašomi duomenys;
  2. RFID RC522 plokštė, kuri veikia kaip modulis, nuskaitantis kodus ir nukreipiantis informaciją į mikrovaldiklį;
  3. pjezoelektrinis garsinis signalas;
  4. Du LED elementai monitoriui;
  5. Du 330 omų rezistoriai;
  6. Klaviatūros bloko tipas 4X4;
  7. I2C tipo skystųjų kristalų ekrano adapteris (LCM1602), kuris veikia kaip LCD konverteris į formatą, suderinamą su Arduino;
  8. Skystųjų kristalų ekranas, tipas LCD16X2BL.

Skystųjų kristalų ekranas yra prijungtas prie adapterio kontaktų grupės naudojant šešiolika kaiščių. Abiejuose moduliuose kontaktai yra sunumeruoti.

Tada maitinimo laidai prijungiami prie ekrano adapterio iš rf ID RC522 modulio: raudona - prie VCC (+) kontakto ir juoda - prie GND (bendrojo) kontakto. Valdymo laidai yra lituojami prie SDA ir SCL kaiščių. LED elementai montuojami kartu su srovę ribojančiais rezistoriais.

Mirksinčių klavišų principas

Intercom lustai, kurie yra tablečių pavidalo ir kurių paviršius turi būti padengtas domofono kontaktu, viduje neturi magnetinių elementų.

Įrenginio schema yra pagrįsta nepastoviosios atminties (kitaip tariant, ROM) naudojimu.

Tokioje atmintyje įrašoma skaitmeninio unikalaus kodo simbolių seka.

Tokių raktų perrašymo principas yra tas, kad tmd daugiklis nuskaito kodą ir atkuria jį grynoje lusto platformoje.

RFID sistema sukurta remiantis kodo perdavimu ne kontaktu, o tam tikru radijo dažniu.

Raktų grandinėje yra virpesių grandinė. Jei jis susijaudinęs, duomenys iš atminties bus perduodami skaitytuvui per erdvę.

Toks sužadinimo signalas bus signalas, sklindantis iš domofono ar dauginimo įrenginio antenos. Priešingu atveju kodas, kaip nukopijuoti kodą į atmintį, tolimesnis jo atkūrimas, nesiskiria nuo kontaktinio įrenginio veikimo principo.

Vienintelis skirtumas yra tas, kad programuotojai gali saugoti ir atkurti tik tam tikro tipo skaitmeninį signalą. Išimtis yra universalūs įrenginiai, kuriuos galima užprogramuoti dirbti su bet kokio tipo skaitmeniniais duomenimis.

Išvada

Lustų gamyba domofonui savo rankomis gali būti ne tik asmeninių raktų praradimo problemos sprendimas, bet ir galimybė ant jo kurti savo verslą.

Pirmiausia galite padaryti paprastą domofono raktų kopijavimo aparatą populiariausiems „tušiniams“.

Svarbiausia, kad toks uždarbis nereikalauja didelių pradinių investicijų, o paslaugos visada bus paklausios, ypač didžiuosiuose miestuose.

Vaizdo įrašas: „Pasidaryk pats“ domofono raktų dauginimo įrenginys

mob_info