Kopiarka kluczy domofonowych na pic12f675. Jak zrobić kopię klucza interkomu w domu?

Sprzęt domofonowy w nowych budynkach jest teraz niezbędny, aw starych domach już tak. To znacznie zwiększa bezpieczeństwo mieszkańców i pomaga utrzymać porządek na wejściu. Ale co, jeśli klucz do domofonu zostanie zgubiony lub zepsuty? Wcześniej firmy instalatorskie były monopolistami i podnosiły ceny urządzeń do backupu, teraz jest wiele firm i warsztatów, które mogą przepisać klucz do domofonu za stosunkowo niewielką kwotę. Jednak te same kroki można wykonać niezależnie.

Istnieją dwa główne sposoby uzyskania nowego klucza, w zależności od rodzaju zastosowanych urządzeń - jest to wprowadzenie kodu do systemu domofonowego.

pamięć dotykowa

Pamięć dotykowa to nieulotny identyfikator, który zawiera urządzenie pamięci, zegar czasu rzeczywistego i akumulator. Odczytywanie lub zapisywanie informacji odbywa się po prostu przez dotknięcie korpusu urządzenia. Istnieje wiele odmian pamięci dotykowej. Różnią się nie tylko, ale i modelami pod względem wielkości pamięci. Przy zakupie półfabrykatów do pisania kodów należy wziąć pod uwagę zgodność z zainstalowanym sprzętem.

Dotykowe modele pamięci

  1. Najpopularniejszym modelem jest model Dallas. Plastikowy uchwyt może być opatrzony emblematem lub napisem producenta domofonów: Sean, Eltis, Vizit lub logo Dallas. Do skopiowania kodu używane są puste miejsca TM2004.

    Niektóre systemy domofonowe Vizit nie obsługują pracy z blankami TM2004, w tym przypadku można użyć droższego uniwersalnego modelu TM08.

  2. Model Metacom. Produkcja krajowa jest kompletnym analogiem modelu Dallas. W pełni dopasuj parametry elektryczne. Muszą być oznaczone zarówno na plastikowym uchwycie, jak i na metalowej obudowie samego urządzenia - napis Metakom lub MT. Odpowiednie są detale TM2004 i TM08.
  3. Model „Cyfral”. Mają podobny napis na uchwycie. Blanki TM2004 nadają się do starszych modeli, TM7 do nowych. Model rezystora „Cyfrowy”. Przestarzały sprzęt, co jest dość rzadkie. Takie urządzenia nie posiadają chipa z nagranym kodem. Używają rezystora o wartości odpowiadającej konkretnemu domofonowi. Takie urządzenie można odróżnić po wnęce znajdującej się w centralnej części obudowy. Kopiowanie odbywa się poprzez przylutowanie odpowiedniego rezystora do dowolnego pustego miejsca pamięci Touch. Jego pojemność określa omomierz za pomocą działającego klucza.

Bezdotykowe RFID

Ostatnio rozpowszechniły się bezstykowe systemy odczytu, w których stosuje się klucze RFID lub karty zbliżeniowe. Zewnętrznie przypominają zwykły plastikowy brelok lub kartę bankową. Urządzenia nie posiadają własnego zasilania. Transmisja kodu do urządzenia odbiorczego odbywa się po odebraniu sygnału radiowego, energii promieniowania falowego i pełni rolę źródła energii. Dlatego aktywacja następuje tylko w odległości 10-15 cm od zamka. W przeciwnym razie urządzenie i działanie tagu nie różnią się od podobnej pamięci Touch.

Same klucze wyglądają jak breloki nie większe niż moneta pięciorublowa i grubości 5 mm. Karty zbliżeniowe mają format zbliżony do kart bankowych i są nieco grubsze – do 3 mm. Wymienność kart i breloków, pomimo tej samej działającej technologii, nie zawsze jest możliwa, ponieważ możliwe jest naruszenie natężenia przesyłanego sygnału. Obecnie do kopiowania kluczy RFID różnych producentów nadaje się prawie każdy przedmiot obrabiany: HID Prox II, EM-Marin, Indala itp.

Nagrywanie na obrabianym przedmiocie

na nośniku odbywa się za pomocą specjalnych urządzeń, programistów. Przykładowo urządzenie Keymaster PRO 4 RF jest uniwersalnym programatorem zarówno dla standardu pamięci Touch, jak i bezstykowych urządzeń RFID. Umożliwia kopiowanie kluczy do pustych miejsc:
  • RW/TM 2004;
  • CS 1, 3;
  • TM - 01, 07, 08;
  • RW 1990, 2007, 125RF.

Obsługuje standardy najpopularniejszych producentów:

Dla pamięci dotykowej:

  • Cyfra;
    • Dallas;
  • Dla RFID:
    • HID ProxII;
    • EM Marin;
    • Indala i kilku innych.

Rejestracja przedmiotu obrabianego odbywa się za jednym dotknięciem. Algorytm kopiowania klucza wygląda następująco:

  1. Do czytnika dostarczany jest klucz, który należy skopiować.
  2. Urządzenie samodzielnie określa rodzaj, producenta i model zalecanego przedmiotu obrabianego.
  3. Półfabrykat jest dostarczany do czytnika. I przycisk nagrywania jest wciśnięty.
  4. Klucz jest zapisywany.

Ponadto urządzenie może nagrywać bez klucza źródłowego, jeśli znany jest kod przechowywany w pamięci. Duplikator jest podłączony do komputera przez Port USB i posiada własne oprogramowanie, które przechowuje w pamięci ostatnie 500 rekordów oraz zarządza dystrybucją pamięci Touch i rekordów RFID. Jest to poza zasięgiem większości zwykłych użytkowników, ale istnieją prostsze modele o ograniczonej funkcjonalności:

  • Klucz Master 3;
  • KeyMaster 3 RF - obsługuje tagi zbliżeniowe;
  • RFID TMD-5;
  • TM Pro.

Programowanie interkomu

Wprowadzanie informacji o nowych kluczach można również przeprowadzić bezpośrednio na urządzeniu domofonowym. Oczywiście różni producenci opracowali różne instrukcje programowania domofonów.

Wprowadzanie informacji do pamięci domofonu jest możliwe tylko w przypadku, gdy instalatorzy nie zmienili fabrycznego kodu dostępu w urządzeniu. Zwykle instalatorzy rzadko zmieniają hasło dostępu, a większość domyślnych haseł to 1234.

Producent Raimann

  • Wejście do ustawień – naciśnięcie przycisku czytnika;
  • Hasło logowania od 9 do 4, po (poczekaj 10-15 sekund) wybierz od 1 do 6;
  • Na monitorze pojawia się symbol „P”;
  • Pozycje menu od 2 do 8. Pozycja odpowiedzialna za wprowadzenie nowych klawiszy nr 2.

Producent VIZIT

  • Wprowadzanie ustawień - # 99 jest wpisywane na klawiaturze;
  • Po sygnale dźwiękowym wprowadzane jest hasło 1234, a następnie ponownie sygnał dźwiękowy;
  • Programowanie i przepisywanie nowych kluczy - pkt 3;
  • Wprowadza się numer mieszkania, przycisk jest stosowany i naciśnięty #;
  • Następnie naciśnij *, aby przejść do trybu pracy.

Jeśli na klawiaturze nie ma przycisków * i #, zostaną one zastąpione odpowiednio przyciskami C i K.

Producent Eltis

  • Aby wejść do menu, naciśnij przycisk B, przytrzymaj go przez 7 sekund;
  • Hasło systemowe 1234;
  • Po załadowaniu menu na ekranie wybierz pozycję „Klucz główny”;
  • Wybieramy numer mieszkania i naciskamy przycisk B;
  • Po pojawieniu się na ekranie komendy LF należy oprzeć klucz o czytnik;
  • Nagrywanie jest zakończone, jeśli na ekranie pojawi się komunikat DODAJ (jeżeli wcześniej nie było w pamięci kluczy do tego mieszkania) lub numer lokalu.

Każdy klucz domofonu ma swój własny numer - to ten numer służy jako identyfikator klucza. To według numeru klucza decyduje domofon - własny lub cudzy. Dlatego algorytm kopiowania jest następujący: najpierw musisz znaleźć numer dozwolonego klucza, a następnie przypisać ten numer do innego klucza - klona. W przypadku domofonu nie ma znaczenia, czy dołączony został oryginalny klucz, czy jego kopia. Po sprawdzeniu numeru ze swoją bazą danych dozwolonych numerów, otworzy drzwi.

Klawisze interkomu, które połączymy z Arduino (czasami są nazywane iButton lub pamięć dotykowa) są czytane i pisane przez interfejs 1-przewodowy. Dlatego schemat połączenia jest bardzo prosty. Wszystko czego potrzebujemy to kilka przewodów i rezystor podciągający 2,2 kΩ. Schemat połączeń pokazano na rysunku.

Zmontowany obwód może wyglądać mniej więcej tak:


2 Przeczytaj identyfikator klucza iButton przy użyciu Arduino

Do współpracy z interfejsem 1-wire dostępne są gotowe biblioteki dla Arduino. Możesz użyć na przykład tego. Pobierz archiwum i rozpakuj je do folderu /biblioteki/ znajduje się w katalogu Arduino IDE. Teraz możemy po prostu pracować z tym protokołem.

Prześlij ten szkic do Arduino w standardowy sposób:

Szkic odczytu kluczy iButton z Arduino(rozwija się) #include iButton OneWire(10); // utwórz obiekt 1-wire na pinie 10 nieważne ustawienia (unieważnione) ( Serial.początek(9600); ) void loop(void) ( opóźnienie (1000); // opóźnij 1 s bajt addr; // tablica do przechowywania danych klucza if (!iButton.search(addr)) ( // jeśli klucz nie jest dołączony Serial.println("Brak klucza podłączonego..."); // zgłoś ten zwrot; // i przerwij program ) Serial.print("Klucz: "); for(int i=0; i )

Ten szkic pokazuje numer klucza do domofonu, który jest podłączony do obwodu. Właśnie tego potrzebujemy teraz: musimy znaleźć numer klucza, którego kopię chcemy wykonać. Podłączmy Arduino do komputera. Zacznijmy monitor portu szeregowego: Narzędzia Monitor portu szeregowego(lub skrót klawiaturowy Ctrl+Shift+M).

Teraz podłączmy klucz do obwodu. Monitor portu pokaże numer klucza. Zapamiętajmy ten numer.


A oto jaka wymiana odbywa się na linii jednoprzewodowej przy odczycie identyfikatora klucza (więcej szczegółów poniżej):

Rysunek oczywiście nie pokazuje wszystkich szczegółów implementacji. Dlatego na końcu artykułu załączam diagram taktowania w formacie *.logicdata, wykonany przy pomocy analizatora stanów logicznych i programu Analizator logiczny Saleae i otworzył się na nią. Program jest darmowy i można go pobrać z oficjalnej strony Saleae. Aby otworzyć plik *.logicdata, musisz uruchomić program, naciśnij Ctrl + O lub w menu Opcje(znajduje się w prawym górnym rogu) wybierz element otwórz przechwytywanie / konfigurację.

3 Rekord identyfikatora klucza Dallas przy użyciu Arduino

Napiszmy teraz szkic do zapisania danych w pamięci klucza iButton.

Szkic pisania kluczy iButton za pomocą Arduino(rozwija się) #include // dołącz bibliotekę const int pin = 10; // zadeklaruj numer pinu OneWire iButton(pin); // zadeklaruj obiekt OneWire na pinie 10 // numer klucza, który chcemy zapisać do iButton: byte key_to_write = ( 0x01, 0xF6, 0x75, 0xD7, 0x0F, 0x00, 0x00, 0x9A ); nieważne ustawienia (unieważnione) ( Serial.początek(9600); pinMode(pin, WYJŚCIE); ) void loop(void) ( opóźnienie (1000); // opóźnienie o 1 sek iButton.reset(); // reset urządzenia opóźnienie 1-przewodowe(50); iButton.write(0x33); // wyślij dane bajtu polecenia „odczyt”; // tablica do przechowywania kluczowych danych iButton.read_bytes(data, 8); // odczytaj dane dołączonego klucza, 8x8=64 bity if (OneWire::crc8(data, 7) != data) ( // sprawdź sumę kontrolną dołączonego klucza Serial. println("Błąd CRC!"); // jeśli CRC nie jest poprawne, zgłoś to return; // i przerwij program ) if (dane & dane & dane & dane & dane & dane & dane & dane == 0xFF) ( return; // jeśli klucz nie jest podłączony do czytnika, przerwij program i poczekaj ) Serial.print("Rozpocznij programowanie..."); // Rozpoczęcie procesu zapisu danych do klucza for (int i = 0; i ) // Inicjalizacja zapisu danych do klucza-tabletu iButton: void send_programming_impulse() ( digitalWrite(pin, HIGH); opóźnienie(60); digitalWrite(pin, LOW); opóźnienie(5); digitalWrite(pin, HIGH); opóźnienie(50); }

Nie zapomnij ustawić numeru swojego oryginalnego klucza w tablicy key_to_write którego dowiedzieliśmy się wcześniej.

Prześlij ten szkic do Arduino. Otwórz monitor portu szeregowego (Ctrl+Shift+M). Podłączmy do schematu klucz, który będzie klonem oryginalnego klucza. Monitor portu szeregowego wyświetli odpowiedni komunikat o wyniku programowania.

Jeśli ten szkic nie zadziałał, spróbuj zastąpić kod po Serial.print("Rozpocznij programowanie...") do końca funkcji pętla() do następnego:

Dodatkowy szkic do pisania klucza iButton za pomocą Arduino(rozwiń) opóźnienie(200); iButton.pomiń(); iButton.reset(); iButton.write(0x33); // odczytaj aktualny numer klucza Serial.print("ID przed zapisem:"); for (bajt 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);

Tutaj funkcja writeByte() będzie wyglądać następująco:

int writeByte(dane w bajtach) ( int bit_danych; for(bit_danych=0; bit_danych<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; ) zwróć 0; )

Nie ma sensu pokazywać wykresu czasowego działania szkicu zapisu identyfikatora klucza, ponieważ jest długa i nie zmieści się na zdjęciu. Natomiast plik *.logicdata dla programu analizatora stanów logicznych dołączony jest na końcu artykułu.

Klawisze interkomu występują w różnych typach. Ten kod nie jest odpowiedni dla wszystkich kluczy, ale tylko dla RW1990 lub RW1990.2. Programowanie kluczy innych typów może prowadzić do awarii klucza!

W razie potrzeby możesz przepisać program dla klucza innego typu. W tym celu skorzystaj z opisu technicznego swojego typu klucza (datasheet) i zmień szkic zgodnie z opisem. Pobierz kartę katalogową kluczy iButton można dołączyć do artykułu.

Nawiasem mówiąc, niektóre nowoczesne domofony odczytują nie tylko identyfikator klucza, ale także inne informacje zapisane na oryginalnym kluczu. Dlatego tworzenie klonu przez kopiowanie tylko numeru nie zadziała. Musisz całkowicie skopiować kluczowe dane.

4 Opis pojedynczego drutu Interfejs 1-Wire

Przyjrzyjmy się bliżej interfejsowi One-wire. W organizacji jest podobny do interfejsu I2C: musi również zawierać urządzenie master (master), które inicjuje wymianę, a także jedno lub więcej urządzeń slave (slave). Wszystkie urządzenia są podłączone do jednej wspólnej magistrali. Urządzenia iButton są zawsze urządzeniami podrzędnymi. Master jest zwykle mikrokontrolerem lub komputerem PC. Szybkość transmisji danych wynosi 16,3 kb/s. Bezczynna magistrala jest w stanie logicznym „1” (HIGH). Ten protokół zapewnia tylko 5 rodzajów sygnałów:

  • impuls resetowania (master)
  • impuls obecności (slave)
  • napisz bit "0" (master)
  • napisz bit "1" (master)
  • bit odczytu (master)
Z wyjątkiem impulsu obecności, wszystkie inne są generowane przez mastera. Wymiana zawsze odbywa się według schematu: 1) Inicjalizacja 2) Komendy do pracy z ROM 3) Komendy do pracy z PROM 4) Transfer danych.

1) Inicjalizacja

Inicjalizacja polega na tym, że master ustawia stan resetowania RESET (obniża linię na „0” na okres 480 μs lub dłużej, a następnie ją zwalnia i dzięki rezystorowi podciągającemu linia podnosi się do stanu „1”), a slave nie później niż 60 µs po tym musi potwierdzić obecność również obniżając linię do „0” na 60…240 µs i następnie ją zwalniając:


2) Polecenia do pracy z ROM

Jeżeli po impulsie inicjującym nie zostanie odebrany żaden sygnał potwierdzenia, urządzenie nadrzędne powtarza odpytywanie magistrali. Jeśli sygnał potwierdzający zostanie odebrany, master rozumie, że na magistrali znajduje się urządzenie gotowe do wymiany i wysyła mu jedno z czterech 8-bitowych poleceń ROM:

(*) Nawiasem mówiąc, istnieje wiele rodzin urządzeń iButton, niektóre z nich są wymienione w poniższej tabeli.

Kody rodziny iButton(rozwija się)
Kod rodzinnyUrządzenia iButtonOpis
0x01DS1990A, DS1990R, DS2401, DS2411Unikalny numer seryjny-klucz
0x02DS1991Wielokluczowa, 1152-bitowa bezpieczna pamięć EEPROM
0x04DS1994, DS24044 kb NV RAM + zegar, timer i alarm
0x05DS2405Pojedynczy klucz adresowalny
0x06DS19934 KB NV RAM
0x08DS19921 KB NV RAM
0x09DS1982, DS25021 kb PROM
0x0ADS199516 KB NV RAM
0x0BDS1985, DS250516 KB EEPROM
0x0CDS199664 KB pamięci NV RAM
0x0FDS1986, DS250664 KB pamięci EEPROM
0x10DS1920, DS1820, DS18S20, DS18B20czujnik temperatury
0x12DS2406, DS24071 kb EEPROM + dwukanałowy klucz adresowalny
0x14DS1971, DS2430A256-bitowa pamięć EEPROM i 64-bitowa PROM
0x1ADS1963L4 KB NV RAM + licznik cykli zapisu
0x1CDS28E04-1004 KB EEPROM + dwukanałowy klucz adresowalny
0x1DDS24234 kB NV RAM + licznik zewnętrzny
0x1FDS2409Dwukanałowy klucz adresowalny z możliwością przełączenia na magistralę powrotną
0x20DS2450Czterokanałowy ADC
0x21DS1921G, DS1921H, DS1921ZCzujnik termochroniczny z funkcją akwizycji danych
0x23DS1973, DS24334 kb EEPROM
0x24DS1904, DS2415Zegar czasu rzeczywistego
0x26DS2438Czujnik temperatury, ADC
0x27DS2417Zegar czasu rzeczywistego z przerwaniem
0x29DS2408Dwukierunkowy 8-bitowy port we/wy
0x2CDS2890Potencjometr cyfrowy jednokanałowy
0x2DDS1972, DS24311 kb EEPROM
0x30DS2760Czujnik temperatury, czujnik prądu, ADC
0x37DS197732 KB zabezpieczona hasłem pamięć EEPROM
0x3ADS2413Dwukanałowy przełącznik adresowalny
0x41DS1922L, DS1922T, DS1923, DS2422Czujniki termochroniczne i higrochroniczne o wysokiej rozdzielczości z akwizycją danych
0x42DS28EA00Termometr cyfrowy z programowalną rozdzielczością, możliwością połączenia szeregowego i programowalnymi portami I/O
0x43DS28EC2020 kb EEPROM

Dane są przesyłane sekwencyjnie, bit po bicie. Transmisja każdego bitu jest inicjowana przez mastera. Podczas nagrywania lider obniża linię do zera i trzyma ją. Jeżeli czas utrzymania linii wynosi 1…15 µs, to zapisywany jest bit „1”. Jeśli czas przetrzymania wynosi 60 µs lub więcej, zapisywany jest bit „0”.

Odczytywanie bitów jest również inicjowane przez mastera. Na początku odczytywania każdego bitu, mistrz obniża autobus. Jeśli slave chce wysłać „0”, utrzymuje magistralę w stanie LOW przez 60 do 120 µs, a jeśli chce wysłać „1”, utrzymuje magistralę w stanie LOW przez około 15 µs. Następnie slave zwalnia linię i dzięki rezystorowi podciągającemu powraca do stanu HIGH.

Tak wygląda na przykład diagram czasowy polecenia wyszukiwania Search ROM (0xF0). Polecenia zapisu bitów zaznaczono na schemacie kolorem czerwonym. Zwróć uwagę na kolejność bitów podczas transmisji przez 1-Wire: najbardziej znaczący bit znajduje się po prawej stronie, najmniej znaczący bit po lewej stronie.


3) Polecenia do pracy z PROM

Przed rozważeniem poleceń dotyczących pracy z iButton PROM należy powiedzieć kilka słów o strukturze pamięci klucza. Pamięć podzielona jest na 4 równe sekcje: trzy z nich są przeznaczone do przechowywania trzech unikalnych kluczy, a czwarta do tymczasowego przechowywania danych. Ten tymczasowy bufor służy jako rodzaj szkicu, w którym dane są przygotowywane do zapisywania kluczy.


Do pracy z PROM jest 6 poleceń:

NazwaZespółZamiar
Zapis do tymczasowego bufora (Zapisz Scratchpad)0x96Służy do zapisywania danych w tymczasowym buforze (scratchpad).
Odczyt z tymczasowego bufora (Odczyt Scratchpad)0x69Służy do odczytu danych z tymczasowego bufora.
Kopiuj ze schowka tymczasowego (Kopiuj Scratchpad)0x3CSłuży do przesyłania danych przygotowanych w buforze tymczasowym do wybranego klucza.
Wpisz hasło klucza (Zapisz hasło)0x5ASłuży do rejestrowania hasła i unikalnego identyfikatora wybranego klucza (jeden z trzech).
Napisz klucz (Write SubKey)0x99Służy do bezpośredniego zapisu danych do wybranego klucza (z pominięciem bufora tymczasowego).
Odczytaj klucz (odczytaj podklucz)0x66Służy do odczytywania danych wybranego klucza.

4) Transfer danych

Ciąg dalszy nastąpi...

5 Możliwe błędy podczas kompilacji szkicu

1) Jeśli wystąpi błąd podczas kompilacji szkicu WConstants.h: Brak takiego pliku lub katalogu #include "WConstants.h", następnie, jako opcja, następuje w pliku OneWire.cpp zastąp pierwszy blok po komentarzach następującym:

#włączać #włączać zewnętrzne „C” (#włączać #włączać }

2) Jeśli podczas kompilacji wystąpi błąd klasa OneWire nie ma członka o nazwie read_bytes, następnie znajdź i spróbuj użyć innej biblioteki do pracy z interfejsem OneWire.

Zgubiłeś klucze interkomu i nie możesz wykonać duplikatu. Chcesz odwiedzić koleżankę, ale nie masz kluczy do jej wejścia. Albo po prostu musisz załatwić swojego wroga, ale nie możesz dostać się do jego domu, to ten artykuł jest dla Ciebie.

Kilka słów o zasadzie pracy...
Panuje opinia, że ​​w tabletach od interkomu jest magnes i otwiera drzwi. Nie, nie jest. Tablet to pamięć ROM z wbudowanym kluczem przewodowym. Ta pamięć ROM nazywa się - Touch Memory, marka DS1990A. DS1990A to marka kluczy interkomowych. Komunikuje się z domofonem za pośrednictwem magistrali jednoprzewodowej (interfejs jednoprzewodowy). Ta magistrala została opracowana przez firmę Dallas i pozwala dwóm urządzeniom komunikować się tylko jednym przewodem. Jeśli urządzenie jest pasywne (jak w naszym przypadku), to również przekazuje do niego moc przez ten przewód. Należy również zauważyć, że potrzebny jest również wspólny przewód (aby obwód się zamykał), ale z reguły wszystkie masy urządzeń podłączonych do tej magistrali są ze sobą połączone. Klucz zawiera kondensator o pojemności 60 pikofaradów, który zapewnia krótkotrwałe zasilanie klucza w momencie odpowiedzi. Ale urządzenie hosta musi stale (co najmniej raz na 120 mikrosekund) generować jeden sygnał, aby naładować ten kondensator, aby pamięć ROM w tablecie była nadal zasilana.

Wewnętrzne elementy tabletu

Organizacja magistrali One-wire
Magistrala One-wire działa w następujący sposób. Istnieje urządzenie nadrzędne i urządzenie podrzędne, w naszym przypadku klucz pasywny. Główne sygnały generowane są przez sygnały master, logiczną jedynkę i zero. Urządzenie podrzędne może wymusić tylko sygnały zerowe (tj. Po prostu pociągnij magistralę do masy przez tranzystor). Na zdjęciach przedstawiono uproszczony schemat mastera i slave'a.

Schemat kreatora

Jeśli spojrzysz na obwód, łatwo zauważyć, że domyślnie master zawsze ma +5 woltów, a la logiczna jednostka. Aby przenieść logiczne zero, master zamyka magistralę do masy przez tranzystor, a aby przenieść jednostkę, po prostu ją otwiera. Odbywa się to w celu dostarczenia zasilania do urządzenia podrzędnego. Podobnie jest wykonane urządzenie slave, tyle że nie generuje +5 woltów. Może tylko zatopić magistralę do ziemi, przesyłając w ten sposób logiczne zero. Jednostka logiczna jest przekazywana po prostu przez „ciszę” urządzenia.

Protokół pracy
Widać od razu, że paradą rządzi tylko Mistrz, sam klucz DS1990A albo trzyma grunt (master sam ustawia autobus na zero), albo po prostu milczy, w przypadku gdy chce przenieść jednostkę, po prostu milczy. Spójrzmy na rysunek.

Przykład odczytania klucza przez domofon.

Po wygenerowaniu przez klawisz impulsu PREFERENCJI urządzenie nadrzędne czeka przez pewien czas i wydaje polecenie odczytu ROM, zazwyczaj jest to kod rodziny, w naszym przypadku 33H. Zwróć uwagę na to, jak odbywa się transfer zera i jedynki. W każdym razie impuls „opada” na ziemię, ale jeśli jednostka zostanie przesłana, to szybko zostanie przywrócona (około 1 mikrosekundy), jeśli ma wynosić zero, to impuls „wisi” na ziemi przez jakiś czas, potem wraca do jednego ponownie. Powrót do jedności jest konieczny, aby urządzenie pasywne stale uzupełniało energię kondensatora i było na nim moc. Ponadto domofon wytrzymuje przez pewien czas i zaczyna generować impulsy do odbierania informacji, w sumie 64 impulsy (czyli odbiera 64 bity informacji). Kluczem jest po prostu prawidłowe dopasowanie czasów trwania. Jeśli chce wyświetlić zero, to przez jakiś czas utrzymuje autobus na zero, jeśli nie, to po prostu milczy. Domofon robi za niego wszystko inne.

Zawartość klucza DS1990A.
W domofonach, a po prostu urządzeniach, w których takie urządzenia służą do otwierania drzwi, stosuje się klucz w standardzie DS1990A. To urządzenie to 8-bajtowy ROM, z informacjami zapisanymi przez laser.


Schemat zrzutu klucza.

Młodszy bajt zawiera kod rodziny. Dla DS1990A zawsze będzie to 01h. Kolejne sześć bajtów zawiera numer seryjny klucza. Najbardziej intymna rzecz, która identyfikuje klucz. Ostatni bajt nazywa się CRC, jest to kontrola parzystości, która zapewnia autentyczność przesyłanych danych. Jest obliczany z poprzednich siedmiu bajtów. Nawiasem mówiąc, to nie jedyny standard. Istnieją pamięci ROM wielokrotnego zapisu, na których można przenosić informacje, a także klucze szyfrowania. Ale cała różnorodność tabletów Dallas jest po prostu nierealistyczna do rozważenia w ramach jednego artykułu, możesz przeczytać o nich na dysku.

Fizyczne urządzenie klucza.
Zapewne wszystkie powyższe zniechęciły do ​​jakiejkolwiek chęci angażowania się w emulatory kluczy, bo klucz trzeba odczytać, a to taki hemoroid. Okazuje się, że nie! Producenci z Dallas zadbali o nas i umieścili wszystkie potrzebne nam informacje bezpośrednio na kluczu, ponadto w systemie szesnastkowym! Jest na nim wygrawerowany i całkiem da się go odczytać, a później wszyć w nasz wspaniały emulator.

Klucz kaganiec

Z wszystkich tych informacji interesują nas:

CC = CRC to bajt kontroli parzystości siódmego bajtu w oprogramowaniu układowym
SSSSSSSSSSS = dwanaście nibbles //nibbles = 1/2 bajtów// numeru seryjnego, tj. sam klucz w kodach szesnastkowych.
FF = kod rodziny, w naszym przypadku jest to 01h - bajt zerowy naszego klucza.

Okazuje się, że możemy po prostu napisać program, wbić w niego cały klucz, przepisać wizualnie zrzut z prawdziwego klucza za pomocą pisaków, a dostaniemy gotowy emulator. Wystarczy wziąć klucz w ręce wroga i przepisać to, co jest na nim napisane. Co zrobiłem z wielkim sukcesem. :)

emulator.
Doszliśmy więc do najsmaczniejszego - emulatora klawiszy od domofonu. Najpierw znalazłem na jakiejś stronie gotowy emulator, zaszyłem go do mojego AT89C51 i nie działał (co nie jest zaskakujące). Ale używanie oprogramowania innych osób i wyłapywanie błędów innych osób, specjalnie pozostawionych w kodzie, nie jest sportowe. Dlatego zacząłem tworzyć własne emulatory i pisać dla nich własne programy. Generalnie próbowałem zrobić emulator na 6 różnych mikrokontrolerach, różnych architekturach, należących do dwóch rodzin AVR i i8051, wszystkie produkowane przez Atmel. Nie działało to dla wszystkich i napisano wiele programów. Początkowo zadania napoleońskie były generalnie postawione na zrobienie uniwersalnego emulatora z możliwością wyboru klucza, ale potem zrezygnowałem z tego pomysłu ze względu na jego hemoroidy i bezsensowność, niech zajmą się nim inne osoby zainteresowane tym artykułem. Ale koszt emulatora, nie licząc włożonej pracy, to mniej niż 70-80 re, można spotkać nawet 30 re, jeśli zrobisz to np. na ATtiny12.

Zasada działania emulatora.
Szczegółowo rozważyliśmy zasadę działania interkomu, w związku z czym opisanie algorytmu programu emulatora DS1990A nie będzie dużym problemem. Przyglądamy się uważnie diagramowi i zastanawiamy się, co należy zrobić. I musisz wykonać następujące czynności. Noga mikrokontrolera zawieszona w powietrzu (dopóki nie zostanie podłączona do masy, impuls resetujący) będzie traktowana przez sterownik jako jednostka logiczna. Oznacza to, że po doprowadzeniu zasilania do sterownika musimy poczekać, aż noga opadnie na ziemię, a la do zera. Jak usłyszeliśmy zero, cieszymy się, czekamy chwilę i przenosimy port z trybu odczytu do trybu zapisu. Następnie zrzucamy szynę do zera i przytrzymujemy przez chwilę - generujemy impuls OBECNOŚCI (czas trwania impulsów patrz arkusz danych). Następnie ponownie przenosimy autobus w tryb odczytu i czekamy na to, co powie nam mistrz - domofon. Powie nam polecenie odczytu, składające się z 8 bitów. Nie odkodujemy tego, bo w 99,999% przypadków powie nam polecenie wydania swojego zrzutu, a la 33H, po prostu policz 8 impulsów i nie martw się. Czekamy dalej. I zaczyna się najtrudniejsza i najciekawsza rzecz - musisz szybko spojrzeć na to, co mówi nam domofon i szybko na to odpowiedzieć. Musimy bit po bicie wydać numer seryjny składający się z 8 bajtów, o którym wspomniałem powyżej. Zrobiłem to w następujący sposób (nie ma znaczenia który mikrokontroler, zasada będzie wszędzie taka sama), załadowałem bajt do jakiegoś wolnego rejestru, przesunąłem go w prawo i obserwowałem bit transferu. Jak tylko domofon zrzuci magistralę na zero, to jak mam flagę transferu ustawioną na jeden, to po prostu milczę na tym impulsie i czekam na generowanie kolejnego impulsu odczytu bitów od mastera. Jeśli mam zero we fladze transferu, to po tym jak domofon zrzuci magistralę do zera, przestawiam port mikrokontrolera w tryb wyjścia i przymusowo przytrzymuję przez chwilę magistralę na zero, po czym puszczam i przełączam port kontrolera z powrotem na tryb czytania. Zgodnie z czasem trwania impulsu w ziemi, urządzenie nadrzędne rozumie, czy przesłano do niego jednostkę, czy zero. W zasadzie wszystko, to domofon powinien radośnie piszczeć i otwierać drzwi.

Ćwiczyć.

Płytka testera. Widzę napis dallas.

Po kilku hemoroidach i wojnie z debuggerem kod się sprawdził. Oto przykładowy kod do wysyłania danych do domofonu w AT89C2051. (Ogólnie AT89C2051 jest popularnym, ale przestarzałym kontrolerem. Jeden z pierwszych, które zaprogramowałem. Minimalne peryferia, pamięć też nic. Szyta jest tylko programatorem wysokiego napięcia. Chociaż jest jego nowy zamiennik AT89S2051 , można już sflashować w obwodzie przez jakiś ISP AVR, a może przez AVRDUDE - nie sprawdzałem. Najciekawsze jest to, że jest kompatybilny z ATTiny2313 na nóżkach, więc kod można przeportować na Tinka. uwaga DI HALT)

D.I. ZATRZYMUJE SIĘ:
Ten piekielny kod napisaliśmy z Longiem w 2006 roku w jego mieszkaniu. Pospieszył do czkawki na ich bluntów. Wtedy po raz pierwszy poczułem AVR. Siedziałem na zupełnie nieznanym asemblerze do procedury odczytu z EEPROM, podczas gdy Long wybierał płytkę demonstracyjną do swojego przyszłego emulatora. Szczególnie pamiętam żart z watchdogiem, kiedy mój MK został zresetowany podczas zapisywania do EEPROM i wycinania chipu pamięci i2c z płyty za pomocą tarczy tnącej. Ech... nic, jadę do Moskwy, spalimy znowu!

;============================================== ; Wydanie numeru seryjnego; w: R0- adres, w którym znajduje się numer seryjny z typem tabletu i CRC8; ZASTOSOWANIA: A,B,R0,R1,R2 ;============================================ = ================= DEMUL_SendSer: mov R2,#8 SS3: mov ACC,@R0 mov R1,#8 SS2: JB TouchFuck,$ ; zero 1->0 RRC A ;C:=A.0; przesunięcie A; mov TouchFuck,C ;TouchFuck:=C; MOV B,#9 DJNZ B,$ ;Opóźnienie 20 us setb TouchFuck JNB TouchFuck,$ ;pętla do 0 DJNZ R1,SS2 inc R0 DJNZ R2,SS3 ret ;======== ================================================

Wyniki.
W rezultacie dostałem dużo emulatorów. To prawda, że ​​niektóre z nich nadal trzeba sobie przypomnieć. Chociaż kilka w 100% działa. Przykładowe emulatory można obejrzeć na zdjęciach.



Zdjęcia emulatorów

Najciekawsza jest kontrola CRC, którą przeprowadza domofon. Będzie to potrzebne, jeśli chcesz na przykład umieścić blokadę Dallas na swoim komputerze. Przykład obliczenia CRC na A89C2051 (chociaż ten kod będzie działał na wszystkich mikrokontrolerach z rodziny i8051.

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 ;zapisz akumulator PUSH B ;zapisz rejestr B PUSH ACC ;zapisz bity do przesunięcia MOV B,#8 ;ustaw przesunięcie = 8 bitów ; CRC_LOOP: XRL A,CRC ;oblicz CRC RRC A ;przenieś do przeniesienia MOV A,CRC ;pobierz ostatnią wartość CRC JNC ZERO ;pomiń jeśli dane = 0 XRL A,#18H ;zaktualizuj wartość CRC ; ZERO: RRC A ;pozycjonowanie nowego CRC MOV CRC,A ;zapisanie nowego CRC POP ACC ;pobranie pozostałych bitów RR A ;położenie następnego bitu PUSH ACC ;zapisanie pozostałych bitów DJNZ B,CRC_LOOP ;powtórzenie przez osiem bitów POP ACC ;wyczyść stos POP B ;przywróć rejestr B POP ACC ;przywróć akumulator RET

DO_CRC: PUSH ACC ;zapisz akumulator PUSH B ;zapisz rejestr B PUSH ACC ;zapisz bity do przesunięcia MOV B,#8 ;ustaw przesunięcie = 8 bitów ; CRC_LOOP: XRL A,CRC ;oblicz CRC RRC A ;przenieś do przeniesienia MOV A,CRC ;pobierz ostatnią wartość CRC JNC ZERO ;pomiń jeśli dane = 0 XRL A,#18H ;zaktualizuj wartość CRC ; ZERO: RRC A ;pozycjonowanie nowego CRC MOV CRC,A ;zapisanie nowego CRC POP ACC ;pobranie pozostałych bitów RR A ;położenie następnego bitu PUSH ACC ;zapisanie pozostałych bitów DJNZ B,CRC_LOOP ;powtórzenie przez osiem bitów POP ACC ;wyczyść stos POP B ;przywróć rejestr B POP ACC ;przywróć akumulator RET

Wniosek.
Jak widać, klawisze interkomu nie są tak proste, jak się wydaje. Jednak ich emulacja jest dostępna dla każdego, kto posiada oprogramowanie i lutownicę.

D.I. ZATRZYMUJE SIĘ:
Sprawy minionych dni, legendy starożytności głębokie... Długie - WDR! (będzie jasne tylko dla wtajemniczonych ;)))))

Wstępnie zredagowana wersja artykułu z magazynu Hacker

Dzień dobry! Jakoś zmęczyło mnie płacenie 150 zł za kopię klucza interkomu i postanowiłem zmontować prosty, budżetowy duplikator iButton na Arduino. Ceny takich gotowych urządzeń „gryzą”, choć ich funkcjonalność jest szersza, kopiują prawie wszystko, łącznie z kluczami bezprzewodowymi. Mnie wystarczy prosty egzemplarz klucza iButton a la „przycisk”. Ciekawe? Proszę pod "cięciem"!

Więc zacznijmy! Na początek „przypisanie techniczne”, co to urządzenie powinno być w stanie zrobić?:
1) Przeczytaj zawartość klucza, ciekawe co tam jest zaszyte.
2) Skopiuj klucze, bez względu na to, jak dziwnie to brzmi :)
3) Flash "uniwersalny" klucz. Przez słowo „uniwersalny” rozumiemy dowolny z naszych własnych kluczy, które zostaną zapisane domyślnie.

UPD. Bardzo ważne! Jeśli pierwszy bajt, kod rodziny, to 00 , na przykład 00 :12:34:56:AB:CD:EF: AA, to po firmware klucz „umrze”, nie będzie odczytywany przez tego programistę, a być może przez innych. Znalezione przez doświadczenie, dzięki przyjacielowi 16 :AB:CD:EF:E0 z naturalnie nieprawidłową sumą kontrolną E0. Ponieważ suma kontrolna jest nieprawidłowa, domofon ignoruje tę sekwencję podczas odczytu. Ten domofon zrujnował wszystkie klucze wielokrotnego zapisu, a ja zorientowałem się, co się dzieje i dlaczego dane w kluczach zmieniają się „samo w sobie”. W rezultacie nie można było zrobić duplikatu dla tego domofonu, musiałem udać się do organizacji serwisowej i zamówić klucz za 100 rubli. :)


W rezultacie dostajemy coś przydatnego w gospodarstwie domowym za śmieszne pieniądze, sprzedawane są „pustki” do nagrywania, chociaż możemy znaleźć offline za 30 rubli za sztukę, za kopiarki na rynku za 100 - 150 rubli :).
UPD. Czytamy o tym, jakie typy kluczy można pisać tym powielaczem. Dzięki za pomoc towarzyszu.
UPD. Jeśli klucz nie jest zapisany, podążaj za towarzyszem. planuję kupić +197 Dodaj do ulubionych Podobała mi się recenzja +95 +184

Każdy wie, że każdy mechanizm z czasem się pogarsza i trzeba to zmienić, szczególnie w przypadku elementów poddawanych częstym wysiłkom fizycznym.

Elektronika w tym sensie jest bardziej niezawodna, a jeśli jest dobrze zabezpieczona elektrycznie, może wytrzymać dość długo.

Utrata kluczy z zamka mechanicznego często wiąże się z wymianą tego ostatniego. Zgubiwszy chip elektroniczny, wystarczy zrobić jego kopię za pomocą.

Jak układa się i działa duplikator

Jakie są modele i typy powielaczy kluczy

Wszystkie duplikatory kluczy interkomowych dostępne w naturze można podzielić na trzy różne typy:

  1. Programatory do flashowania kluczy bezstykowych tmd;
  2. Powielacze do kopiowania kluczy kontaktowych interkomu;
  3. Uniwersalny typ powielaczy, które mogą sflashować każdy rodzaj chipów interkomu.

Każdy z tych typów urządzeń ma swoje modyfikacje.

Bezstykowe powielacze

Wśród nich są trzy modyfikacje urządzeń.

Pierwsza modyfikacja obejmuje programistów tworzących standard identyfikacji radiowej EM-Marin, HID i Indala (duplikatory tmd), druga modyfikacja obsługuje standard Mifare, trzecia modyfikacja duplikatorów współpracuje z kluczami standardu TECH-COM lub TKRF.

Urządzenia typu kontaktowego

Urządzenia prezentowane są w dwóch rodzajach. Pierwszy typ przeznaczony jest do pracy z klawiszami typu kontaktowego Dallas, drugi typ programistów duplikuje klawisze typu lub.

Chip Dallas ma kod szesnastkowy, a cyfrowy jest flashowany kodem typu protokołu, który ma duży rozmiar.

Uniwersalne urządzenia do programowania kluczy

Uniwersalne duplikatory kluczy interkomowych, oprócz możliwości tworzenia kopii dowolnego chipa cyfrowego, posiadają szereg dodatkowych funkcji:

  • Możliwość aktualizacji;
  • Obecność bazy pamięci;
  • Generowanie kodu.

Biorąc pod uwagę pierwszą funkcję, należy powiedzieć, że po wydaniu nowych modyfikacji kluczy z oryginalnym kodowaniem, podstawa programatora może zostać sflashowana dla tych chipów i będzie mogła wykonać ich kopie.

Druga funkcja umożliwia klonowanie kluczy bez oryginału. Oznacza to, że po pierwszym flashowaniu kod chipa jest po prostu zapisywany w bazie urządzenia i odtwarzany w razie potrzeby.

Trzecia funkcja umożliwia flashowanie kluczy z oryginalnymi kodami, na przykład dla pracowników firmy, z których każdy musi mieć swój osobisty kod dostępu do zamka. Następnie możesz śledzić liczbę odwiedzin danego obiektu przez konkretną osobę.

Czego potrzebujesz, aby zrobić zrób to sam duplikator kluczy domofonowych

Wykonując kopiarkę kluczy własnymi rękami, możesz wziąć moduł Arduino jako podstawę.

Baza elementów, która będzie potrzebna do wyprodukowania urządzenia:

  1. Mikrokontroler typu „Arduino Nano” jest głównym „mózgiem” urządzenia, w którym przetwarzane są informacje i zapisywane;
  2. Płytka RFID RC522, która pełni rolę modułu odczytującego kody i przekierowującego informacje do mikrokontrolera;
  3. Brzęczyk typu piezoelektrycznego;
  4. Dwa elementy LED do monitora;
  5. Dwa rezystory 330 omów;
  6. Blok klawiatury typu 4X4;
  7. Adapter wyświetlacza ciekłokrystalicznego typu I2C (LCM1602), który działa jako konwerter LCD do formatu zgodnego z Arduino;
  8. Wyświetlacz ciekłokrystaliczny typu LCD16X2BL.

Ekran ciekłokrystaliczny jest połączony z grupą styków adaptera za pomocą szesnastu pinów. W obu modułach kontakty są ponumerowane.

Następnie do adaptera wyświetlacza z modułu rf ID RC522 podłączane są przewody zasilające: czerwony - do styku VCC (+) i czarny - do styku GND (wspólnego). Przewody sterujące są przylutowane do pinów SDA i SCL. Elementy LED są instalowane w parze z rezystorami ograniczającymi prąd.

Zasada migania klawiszy

Chipy interkomu, które mają postać tabletek i których powierzchnię należy przyłożyć do styku interkomu, nie zawierają wewnątrz elementów magnetycznych.

Obwody urządzenia oparte są na wykorzystaniu pamięci nieulotnej (innymi słowy ROM).

W takiej pamięci zapisywany jest ciąg znaków cyfrowego unikalnego kodu.

Zasada przepisywania takich kluczy polega na tym, że duplikator tmd odczytuje kod i odtwarza go na czystej platformie chipowej.

System RFID opiera się na transmisji kodu nie przez kontakt, ale przez określoną częstotliwość radiową.

Obwód klucza zawiera obwód oscylacyjny. Jeśli jest wzbudzony, dane z pamięci zostaną przesłane do czytnika przez przestrzeń.

Takim sygnałem pobudzającym będzie sygnał pochodzący z anteny domofonu lub powielacza. W przeciwnym razie zasada kopiowania kodu do pamięci, jego dalsza reprodukcja nie różni się od zasady działania urządzenia kontaktowego.

Jedyna różnica polega na tym, że programiści mogą przechowywać i odtwarzać tylko określony typ sygnału cyfrowego. Wyjątkiem są uniwersalne urządzenia, które można zaprogramować do pracy z dowolnym rodzajem danych cyfrowych.

Wniosek

Wykonywanie chipów do domofonu własnymi rękami może być nie tylko rozwiązaniem problemu utraty kluczy osobistych, ale także okazją do zbudowania na tym biznesu.

Na początek możesz wykonać prostą kopiarkę kluczy interkomu dla najpopularniejszych „pustych”.

Najważniejsze, że takie zarobki nie wymagają dużych inwestycji początkowych, a na usługi zawsze będzie popyt, zwłaszcza w dużych miastach.

Wideo: zrób to sam duplikator klucza interkomu

mob_info