Copieur de clé d'interphone sur pic12f675. Comment faire une copie de la clé de l'interphone à la maison

L'équipement d'interphone dans les nouveaux bâtiments est désormais une condition préalable, et dans les maisons anciennes, il l'est. Cela augmente considérablement la sécurité des résidents et aide à maintenir l'ordre dans l'entrée. Mais que se passe-t-il si la clé de l'interphone est perdue ou cassée ? Auparavant, les entreprises d'installation étaient des monopoles et augmentaient le prix des appareils de sauvegarde. Aujourd'hui, de nombreuses entreprises et ateliers sont apparus qui peuvent réécrire la clé d'interphone pour un montant relativement faible. Cependant, les mêmes étapes peuvent être effectuées indépendamment.

Il existe deux façons principales d'obtenir une nouvelle clé, selon le type d'appareils utilisés - il s'agit de l'introduction d'un code dans le système d'interphonie.

mémoire tactile

La mémoire tactile est un identifiant non volatile qui comprend un dispositif de mémoire, une horloge en temps réel et une batterie rechargeable. La lecture ou l'écriture d'informations se fait par simple contact avec le corps de l'appareil. Il existe de nombreuses variétés de mémoire tactile. Ils diffèrent non seulement, mais aussi les modèles en termes de taille de mémoire. La compatibilité avec l'équipement installé doit être prise en compte lors de l'achat d'ébauches pour l'écriture de codes.

Modèles à mémoire tactile

  1. Le modèle de Dallas est le modèle le plus courant. Le support en plastique peut porter l'emblème ou l'inscription du fabricant de l'équipement d'interphonie : Sean, Eltis, Vizit ou le logo Dallas. Pour copier le code, des blancs TM2004 sont utilisés.

    Certains systèmes d'interphone Vizit ne prennent pas en charge le travail avec les blancs TM2004, dans ce cas, vous pouvez utiliser le modèle universel plus cher TM08.

  2. Modèle Metacom. La production nationale est un analogue complet du modèle Dallas. Correspondent parfaitement aux caractéristiques électriques. Ils doivent être marqués à la fois sur le support en plastique et sur le boîtier métallique de l'appareil lui-même - l'inscription Metakom ou MT. Les pièces TM2004 et TM08 conviennent.
  3. Modèle "Cyfral". Ils ont une inscription similaire sur le support. Les flans TM2004 conviennent aux anciens modèles, TM7 aux nouveaux. Modèle de résistance "Numérique". Du matériel obsolète, ce qui est assez rare. Ces appareils n'ont pas de puce avec un code enregistré. Ils utilisent une résistance dont le calibre correspond à un interphone particulier. Vous pouvez distinguer un tel appareil par le renfoncement situé dans la partie centrale du boîtier. La copie est effectuée en soudant la résistance appropriée à l'un des blancs de mémoire tactile. Sa capacité est déterminée par un ohmmètre à l'aide d'une clé de travail.

RFID sans contact

Récemment, les systèmes de lecture sans contact se sont généralisés, où l'on utilise des clés RFID ou des cartes de proximité. Extérieurement, ils ressemblent à un porte-clés en plastique ordinaire ou à une carte bancaire. Les appareils ne disposent pas de leur propre alimentation électrique. La transmission du code à l'appareil récepteur s'effectue après réception du signal radio, de l'énergie du rayonnement ondulatoire et agit comme une source d'énergie. Par conséquent, l'activation ne se produit qu'à une distance de 10 à 15 cm de la serrure. Sinon, l'appareil et l'action de la balise ne diffèrent pas de la mémoire tactile similaire.

Les clés elles-mêmes ressemblent à des porte-clés pas plus gros qu'une pièce de cinq roubles et de 5 mm d'épaisseur. Les cartes sans contact ont un format similaire aux cartes bancaires et sont un peu plus épaisses - jusqu'à 3 mm. L'interchangeabilité des cartes et des porte-clés, malgré la même technologie de fonctionnement, n'est pas toujours réalisable, car une violation de l'intensité du signal transmis est possible. Actuellement pour la copie de clés RFID divers fabricants presque toutes les pièces conviennent : HID Prox II, EM-Marin, Indala, etc.

Enregistrement sur une pièce

sur les supports est réalisée à l'aide d'appareils spéciaux, de programmeurs. Par exemple, l'appareil Keymaster PRO 4 RF est un programmateur universel pour la norme de mémoire tactile et les appareils RFID sans contact. Permet de copier des clés sur des blancs :
  • RW/TM 2004 ;
  • SC 1, 3 ;
  • TM-01, 07, 08 ;
  • RW 1990, 2007, 125RF.

Prend en charge les normes des fabricants les plus courants :

Pour la mémoire tactile :

  • Cyfral;
    • Dallas;
  • Pour la RFID :
    • HID ProxII ;
    • EM Marin;
    • Indala et quelques autres.

L'enregistrement de la pièce se fait d'une seule touche. L'algorithme de copie de la clé est le suivant :

  1. Une clé est apportée au lecteur, qui doit être copiée.
  2. L'appareil détermine indépendamment le type, le fabricant et le modèle de la pièce recommandée.
  3. Le blanc est apporté au lecteur. Et le bouton d'enregistrement est enfoncé.
  4. La clé est en cours d'écriture.

De plus, l'appareil peut enregistrer sans clé source si le code stocké en mémoire est connu. Le duplicateur est connecté au PC via port USB et possède son propre logiciel qui stocke les 500 derniers enregistrements en mémoire, et gère la répartition de la mémoire tactile et des enregistrements RFID. C'est hors de portée de la plupart des utilisateurs ordinaires, mais il existe des modèles plus simples avec des fonctionnalités limitées :

  • clé maître 3 ;
  • KeyMaster 3 RF - prend en charge les étiquettes sans contact ;
  • RFID TMD-5 ;
  • MC Pro.

Programmation d'interphone

La saisie des informations sur les nouvelles clés peut également être effectuée directement sur l'équipement d'interphonie. Naturellement, différents fabricants ont développé des instructions différentes pour la programmation des interphones.

La saisie d'informations dans la mémoire de l'interphone n'est possible que si les installateurs n'ont pas modifié le code d'accès d'usine dans l'appareil. Habituellement, les installateurs changent rarement le mot de passe d'accès, et la plupart des mots de passe par défaut sont 1234.

Fabricant Raimann

  • Pour entrer les paramètres - le bouton du lecteur est enfoncé ;
  • Mot de passe de connexion de 9 à 4, après (attendre 10-15 secondes) composer de 1 à 6 ;
  • Le symbole « P » apparaît sur le moniteur ;
  • Éléments de menu de 2 à 8. L'élément responsable de l'introduction des nouvelles clés n ° 2.

Fabricant VIZIT

  • Saisie des paramètres - # 99 est tapé sur le clavier;
  • Après le bip, le mot de passe 1234 est saisi, puis le bip à nouveau ;
  • Programmation et prescription de nouvelles clés - point numéro 3 ;
  • Le numéro d'appartement est entré, la touche est appliquée et # est enfoncé ;
  • Appuyez ensuite sur * pour passer en mode de fonctionnement.

S'il n'y a pas de boutons * et # sur le clavier, ils sont remplacés par les boutons C et K, respectivement.

Fabricant Eltis

  • Pour entrer dans le menu, appuyez sur le bouton B, maintenez-le enfoncé pendant 7 secondes ;
  • Mot de passe système 1234 ;
  • Une fois le menu chargé à l'écran, sélectionnez l'élément "Key master" ;
  • Nous composons le numéro de l'appartement et appuyons sur le bouton B;
  • Une fois que la commande LF apparaît à l'écran, vous devez appuyer la clé contre le lecteur ;
  • L'enregistrement est terminé si le message AJOUTER apparaît à l'écran (s'il n'y avait pas de clés pour cet appartement en mémoire auparavant) ou le numéro de l'appartement.

Chaque clé d'interphone a son propre numéro - c'est ce numéro qui sert d'identifiant de clé. C'est par le numéro de la clé que l'interphone décide - le sien ou celui de quelqu'un d'autre. Par conséquent, l'algorithme de copie est le suivant: vous devez d'abord connaître le numéro de la clé autorisée, puis attribuer ce numéro à une autre clé - le clone. Pour l'interphone, peu importe que la clé originale ou sa copie ait été jointe. Après avoir vérifié le numéro avec sa base de données des numéros autorisés, il ouvrira la porte.

Clés d'intercom que nous allons connecter à l'Arduino (elles sont parfois appelées iBouton ou mémoire tactile) sont lus et écrits via interface 1 fil. Par conséquent, le schéma de connexion est très simple. Tout ce dont nous avons besoin est de quelques fils et d'une résistance pull-up de 2,2 kΩ. Le schéma de connexion est illustré sur la figure.

Le circuit assemblé pourrait ressembler à ceci :


2 Lire l'ID de la clé iButton en utilisant Arduino

Pour travailler avec l'interface 1 fil, il existe des bibliothèques prêtes à l'emploi pour Arduino. Vous pouvez utiliser, par exemple, celui-ci. Téléchargez l'archive et décompressez-la dans un dossier /bibliothèques/ situé dans le répertoire Arduino IDE. Maintenant, nous pouvons très simplement travailler avec ce protocole.

Téléchargez ce croquis sur Arduino de la manière standard :

Croquis de lecture de clé iButton avec Arduino(développe) #include Bouton OneWire iButton (10); // crée un objet 1 fil sur la broche 10 configuration vide (vide) ( Série.begin(9600); ) boucle vide (vide) ( retard(1000); // retarde 1 sec byte addr ; // tableau pour stocker les données de la clé if (!iButton.search(addr)) ( // si la clé n'est pas attachée Serial.println("Aucune clé connectée..."); // signale ce retour ; // et abandonne le programme ) Serial.print("Clé : "); pour(int je=0; je )

Ce croquis montre le numéro de clé de l'interphone qui est connecté au circuit. C'est ce dont nous avons besoin maintenant : nous devons connaître le numéro de la clé dont nous voulons faire une copie. Connectons l'Arduino à l'ordinateur. Commençons le moniteur de port série : Outils Moniteur de port série(ou raccourci clavier Ctrl+Maj+M).

Connectons maintenant la clé au circuit. Le moniteur de port affichera le numéro de clé. Rappelons-nous ce numéro.


Et voici quel échange a lieu sur une ligne monofilaire lors de la lecture de l'identifiant de la clé (pour plus de détails, voir ci-dessous) :

La figure, bien sûr, ne montre pas tous les détails de mise en œuvre. Par conséquent, à la fin de l'article, je joins un chronogramme au format *.logicdata, pris à l'aide d'un analyseur logique et du programme Analyseur logique Saleae et lui a ouvert. Le programme est gratuit et peut être téléchargé depuis le site officiel de Saleae. Pour ouvrir le fichier *.logicdata, vous devez exécuter le programme, appuyez sur Ctrl + O ou dans le menu Choix(situé en haut à droite) sélectionnez un élément ouvrir la capture/configuration.

3 Enregistrement de l'identifiant de la clé de Dallas en utilisant Arduino

Écrivons maintenant une esquisse pour écrire des données dans la mémoire de la clé iButton.

Croquis d'écriture de clé iButton avec Arduino(développe) #include // inclut la bibliothèque const int pin = 10 ; // déclarer le numéro de pin OneWire iButton(pin); // déclare l'objet OneWire sur la broche 10 // numéro de clé que nous voulons écrire sur iButton : byte key_to_write = ( 0x01, 0xF6, 0x75, 0xD7, 0x0F, 0x00, 0x00, 0x9A ); annuler la configuration (annuler) ( Série.begin(9600); pinMode(broche, SORTIE); ) boucle vide (vide) ( retard(1000); // retarde de 1 seconde iButton.reset(); // réinitialisation de l'appareil 1-wire delay(50); iButton.write(0x33); // envoie les données d'octet de commande "lire" ; // tableau pour stocker les données de clé iButton.read_bytes(data, 8); // lit les données de la clé attachée, 8x8=64 bits if (OneWire::crc8(data, 7) != data) ( // vérifie la somme de contrôle de la clé attachée Serial. println("CRC error!"); // si le CRC n'est pas correct, signalez-le return; // et abandonnez le programme ) if (data & data & data & data & data & data & data & data == 0xFF) ( return; // if the key n'est pas connecté au lecteur, interrompez le programme et attendez ) Serial.print("Démarrer la programmation..."); // début du processus d'écriture des données sur la clé for (int i = 0; i ) // Initialisation de l'écriture des données sur la tablette-clé iButton : annuler send_programming_impulse() ( digitalWrite (broche, HIGH); retard(60); digitalWrite (broche, BAS); retard(5); digitalWrite (broche, HIGH); retard(50); }

N'oubliez pas de définir le numéro de votre clé d'origine dans le tableau key_to_write que nous avons appris plus tôt.

Téléchargez ce croquis sur l'Arduino. Ouvrez le moniteur du port série (Ctrl+Maj+M). Connectons une clé au schéma, qui sera un clone de la clé d'origine. Le moniteur du port série affichera un message correspondant sur le résultat de la programmation.

Si cette esquisse n'a pas fonctionné, essayez de remplacer le code après Serial.print("Démarrer la programmation...") jusqu'à la fin de la fonction boucle() au suivant :

Esquisse supplémentaire pour l'écriture de la clé iButton à l'aide d'Arduino(développer) délai (200); iButton.skip(); iButton. reset(); iButton.write(0x33); // lit le numéro de clé actuel Serial.print("ID before write:"); pour (octet i=0 ; je<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);

Ici la fonction writeByte() sera comme suit :

int writeByte(octet de données) ( int data_bit ; for(data_bit=0; data_bit<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 ; ) renvoie 0 ; )

Il est inutile de montrer le chronogramme du fonctionnement de l'esquisse d'enregistrement de l'identifiant de la clé, car il est long et ne rentre pas dans l'image. Cependant, le fichier *.logicdata du programme de l'analyseur logique est joint à la fin de l'article.

Les clés d'interphone sont de différents types. Ce code ne convient pas à toutes les clés, mais uniquement à RW1990 ou RW1990.2. La programmation de clés d'autres types peut entraîner une panne de clé !

Si vous le souhaitez, vous pouvez réécrire le programme pour une clé d'un type différent. Pour ce faire, utilisez la description technique de votre type de clé (fiche technique) et modifiez le croquis conformément à la description. Télécharger la fiche technique des clés iButton peut être joint à l'article.

À propos, certains interphones modernes lisent non seulement l'identifiant de la clé, mais également d'autres informations enregistrées sur la clé d'origine. Par conséquent, faire un clone en copiant uniquement le numéro ne fonctionnera pas. Vous devez copier complètement les données clés.

4 Description du fil unique Interface 1 fil

Examinons de plus près l'interface à un fil. En organisation, elle est similaire à l'interface I2C : elle doit également contenir un appareil maître (master) qui initie l'échange, ainsi qu'un ou plusieurs appareils esclaves (slave). Tous les appareils sont connectés à un bus commun. Les appareils iButton sont toujours esclaves. Le maître est généralement un microcontrôleur ou un PC. Le débit de données est de 16,3 kbps. Le bus inactif est à "1" logique (HIGH). Ce protocole ne fournit que 5 types de signaux :

  • impulsion de réinitialisation (maître)
  • impulsion de présence (esclave)
  • écrire le bit "0" (maître)
  • écrire le bit "1" (maître)
  • bit de lecture (maître)
A l'exception de l'impulsion de présence, toutes les autres sont générées par le maître. L'échange se déroule toujours selon le schéma : 1) Initialisation 2) Commandes pour travailler avec ROM 3) Commandes pour travailler avec PROM 4) Transfert de données.

1) Initialisation

L'initialisation consiste en ce que le maître définit la condition de réinitialisation RESET (abaisse la ligne à "0" pendant une période de 480 μs ou plus, puis la relâche, et en raison de la résistance de rappel, la ligne monte à l'état "1"), et l'esclave au plus tard 60 µs après, il doit confirmer la présence en abaissant également la ligne à "0" pendant 60 ... 240 µs puis en la libérant :


2) Commandes pour travailler avec la ROM

Si aucun signal d'acquittement n'est reçu après l'impulsion d'initialisation, le maître répète l'interrogation du bus. Si le signal de confirmation est reçu, le maître comprend qu'il y a un périphérique sur le bus qui est prêt pour l'échange et lui envoie l'une des quatre commandes ROM 8 bits :

(*) Soit dit en passant, il existe plusieurs familles d'appareils iButton, dont certaines sont répertoriées dans le tableau ci-dessous.

Codes de la famille iButton(se déroule)
Code familialAppareils iButtonLa description
0x01DS1990A, DS1990R, DS2401, DS2411Clé de numéro de série unique
0x02DS1991EEPROM sécurisée multi-clés 1152 bits
0x04DS1994, DS24044 Ko NV RAM + horloge, minuterie et alarme
0x05DS2405Clé unique adressable
0x06DS19934 Ko de RAM NV
0x08DS19921 Ko de RAM NV
0x09DS1982, DS25021 ko PROM
0x0ADS199516 Ko de RAM NV
0x0BDS1985, DS2505EEPROM 16 Ko
0x0CDS199664 Ko de RAM NV
0x0FDS1986, DS2506EEPROM 64 Ko
0x10DS1920, DS1820, DS18S20, DS18B20capteur de température
0x12DS2406, DS2407EEPROM 1 Ko + clé adressable double canal
0x14DS1971, DS2430AEEPROM 256 bits et PROM 64 bits
0x1ADS1963L4 Ko de RAM NV + compteur de cycles d'écriture
0x1CDS28E04-100EEPROM 4 Ko + clé adressable double canal
0x1DDS24234 Ko NV RAM + compteur externe
0x1FDS2409Clé adressable à deux canaux avec possibilité de basculer sur le bus de retour
0x20DS2450ADC à quatre canaux
0x21DS1921G, DS1921H, DS1921ZCapteur thermochronique avec fonction d'acquisition de données
0x23DS1973, DS2433EEPROM 4 Ko
0x24DS1904, DS2415Horloge en temps réel
0x26DS2438Capteur de température, ADC
0x27DS2417Horloge en temps réel avec interruption
0x29DS2408Port E/S bidirectionnel 8 bits
0x2CDS2890Potentiomètre numérique monocanal
0x2DDS1972, DS2431EEPROM 1 Ko
0x30DS2760Capteur de température, capteur de courant, ADC
0x37DS1977EEPROM 32 Ko protégé par mot de passe
0x3ADS2413Commutateur adressable à double canal
0x41DS1922L, DS1922T, DS1923, DS2422Capteurs thermochroniques et hygrochrones haute résolution avec acquisition de données
0x42DS28EA00Thermomètre numérique avec résolution programmable, capacité de liaison série et ports d'E/S programmables
0x43DS28EC20EEPROM 20 Ko

Les données sont transmises séquentiellement, bit par bit. La transmission de chaque bit est initiée par le maître. Lors de l'enregistrement, le leader abaisse la ligne à zéro et la maintient. Si le temps de maintien de la ligne est de 1…15 µs, alors le bit "1" est écrit. Si le temps de maintien est de 60 µs ou plus, le bit "0" est écrit.

La lecture des bits est également initiée par le maître. Au début de la lecture de chaque bit, le maître tire le bus vers le bas. Si l'esclave veut envoyer un "0", il maintient le bus à l'état BAS pendant 60 à 120 µs, et s'il veut envoyer un "1", il maintient le bus à l'état BAS pendant environ 15 µs. Après cela, l'esclave libère la ligne et, en raison de la résistance de rappel, il revient à l'état HIGH.

Voici à quoi ressemble, par exemple, le chronogramme de la commande de recherche Search ROM (0xF0). Les commandes d'écriture de bits sont marquées en rouge dans le schéma. Faites attention à l'ordre des bits lors de la transmission sur 1-Wire : le bit le plus significatif est à droite, le bit le moins significatif est à gauche.


3) Commandes pour travailler avec la PROM

Avant d'examiner les commandes pour travailler avec l'iButton PROM, il est nécessaire de dire quelques mots sur la structure de la mémoire du dongle. La mémoire est divisée en 4 sections égales : trois d'entre elles sont conçues pour stocker trois clés uniques, et la quatrième est destinée au stockage temporaire des données. Ce tampon temporaire sert en quelque sorte de brouillon où les données sont préparées pour l'écriture des clés.


Pour travailler avec la PROM, il y a 6 commandes :

NomÉquipeObjectif
Écrire dans un tampon temporaire (Write Scratchpad)0x96Utilisé pour écrire des données dans un tampon temporaire (scratchpad).
Lire à partir du tampon temporaire (Read Scratchpad)0x69Utilisé pour lire des données à partir d'un tampon temporaire.
Copier à partir du presse-papiers temporaire (Copier Scratchpad)0x3CUtilisé pour transférer les données préparées dans une mémoire tampon temporaire vers la clé sélectionnée.
Écrire le mot de passe de la clé (Write Password)0x5AUtilisé pour enregistrer le mot de passe et l'identifiant unique de la clé sélectionnée (l'un des trois).
Ecrire une clé (Write SubKey)0x99Utilisé pour écrire directement des données sur la clé sélectionnée (en contournant le tampon temporaire).
Lire la clé (Lire la sous-clé)0x66Utilisé pour lire les données de la clé sélectionnée.

4) Transfert de données

À suivre...

5 Erreurs possibles lors de la compilation du croquis

1) Si une erreur se produit lors de la compilation du croquis WConstants.h : Aucun fichier ou répertoire de ce type #include "WConstants.h", puis, en option, suit dans le fichier OneWire.cpp remplacez le premier bloc après les commentaires par ce qui suit :

#comprendre #comprendre "C" externe (#comprendre #comprendre }

2) Si une erreur survient lors de la compilation la classe OneWire n'a pas de membre nommé read_bytes, puis recherchez et essayez d'utiliser une autre bibliothèque pour travailler avec l'interface OneWire.

Vous avez perdu vos clés d'interphone et ne pouvez pas faire de duplicata. Vous souhaitez rendre visite à une amie, mais vous n'avez pas les clés de son entrée. Ou vous avez juste besoin de vous moquer de votre ennemi, mais vous ne pouvez pas entrer dans sa maison, alors cet article est pour vous.

Quelques mots sur le principe de travail...
Il y a une opinion qu'il y a un aimant dans les tablettes de l'interphone, et cela ouvre la porte. Non ce n'est pas. La tablette est une ROM, avec une clé câblée. Cette ROM s'appelle - Touch Memory, marque DS1990A. DS1990A est la marque des clés d'interphone. Communique avec l'interphone via le bus unifilaire (interface monofilaire). Ce bus a été développé par Dallas et permet à deux appareils de communiquer sur un seul fil. Si l'appareil est passif (comme dans notre cas), il lui transmet également de l'énergie via ce fil. Il convient également de noter qu'un fil commun est également nécessaire (pour que le circuit se ferme), mais, en règle générale, toutes les masses des appareils connectés à ce bus sont connectées ensemble. La clé contient un condensateur de 60 picofarads, qui fournit une alimentation à court terme à la clé au moment de la réponse. Mais le dispositif hôte doit constamment (au moins une fois toutes les 120 microsecondes) générer un signal pour charger ce condensateur afin que la ROM de la tablette continue à être alimentée.

Composants internes de la tablette

Organisation du bus monofilaire
Le bus à un fil fonctionne comme suit. Il y a un appareil maître et un appareil esclave, dans notre cas une clé passive. Les signaux principaux sont générés par le maître, les signaux logiques un et zéro. L'appareil esclave ne peut forcer que des signaux nuls (c'est-à-dire qu'il suffit de tirer le bus à la masse via le transistor). Un schéma simplifié du maître et de l'esclave est montré dans les images.

Schéma de l'assistant

Si vous regardez le circuit, il est facile de voir que par défaut le maître a toujours +5 volts, a la unité logique. Pour transférer un zéro logique, le maître ferme le bus à la masse par l'intermédiaire d'un transistor, et pour transférer une unité, il l'ouvre simplement. Ceci est fait afin d'alimenter le dispositif esclave. L'appareil esclave est fabriqué de la même manière, sauf qu'il ne génère pas de +5 volts. Il ne peut que plonger le bus à la masse, transmettant ainsi un zéro logique. L'unité logique est transmise simplement par le "silence" de l'appareil.

Protocole de travail
Vous pouvez immédiatement remarquer que seul le maître dirige le défilé, la clé DS1990A elle-même tient le sol (le maître met lui-même le bus à zéro), ou reste simplement silencieuse, au cas où il voudrait transférer une unité, il reste simplement silencieux. Regardons le dessin.

Un exemple de lecture d'une clé par un interphone.

Après avoir généré une impulsion PREFERENCE par la clé, l'appareil maître attend un certain temps et émet une commande pour lire la ROM, généralement il s'agit d'un code de famille, dans notre cas 33H. Faites attention à la façon dont le transfert de zéro et un est effectué. Dans tous les cas, l'impulsion "tombe" au sol, mais si une unité est transmise, elle est rapidement restaurée (environ 1 microseconde), si elle doit être nulle, alors l'impulsion "se bloque" au sol pendant un certain temps, puis revient à un nouveau. Un retour à l'unité est nécessaire pour que le dispositif passif reconstitue constamment l'énergie du condensateur et qu'il y ait de la puissance dessus. De plus, l'interphone résiste pendant un certain temps et commence à générer des impulsions pour recevoir des informations, un total de 64 impulsions (c'est-à-dire qu'il reçoit 64 bits d'informations). La clé est juste de faire correspondre les durées correctement. S'il veut afficher zéro, il maintient le bus à zéro pendant un certain temps, sinon, il reste simplement silencieux. L'interphone fait tout le reste pour lui.

Contenu de la clé DS1990A.
Dans les interphones, et simplement les appareils où de tels appareils sont utilisés pour ouvrir les portes, une clé de la norme DS1990A est utilisée. Cet appareil est une ROM de 8 octets, avec des informations enregistrées par un laser.


Schéma de vidage de clé.

L'octet de poids faible contient le code de la famille. Pour DS1990A, ce sera toujours 01h. Les six octets suivants contiennent le numéro de série de la clé. La chose la plus intime qui identifie la clé. Le dernier octet est appelé CRC, il s'agit d'un contrôle de parité qui assure l'authenticité des données transmises. Il est calculé à partir des sept octets précédents. Soit dit en passant, ce n'est pas la seule norme. Il existe des ROM réinscriptibles sur lesquelles des informations peuvent être transportées, et il existe également des clés de cryptage. Mais toute la variété des tablettes Dallas est tout simplement irréaliste à considérer dans le cadre d'un article, vous pouvez en savoir plus sur le disque.

Le périphérique physique de la clé.
Probablement, tout ce qui précède a découragé tout désir de traiter avec des émulateurs de clé, car la clé doit être lue, et c'est une telle hémorragie. Il s'avère que non ! Les fabricants de Dallas se sont occupés de nous et ont placé toutes les informations dont nous avions besoin directement sur la clé, qui plus est, en système hexadécimal ! Il est gravé dessus et il est tout à fait possible de le lire, puis de le coudre plus tard dans notre merveilleux émulateur.

Muselière à clé

Parmi toutes ces informations, nous sommes intéressés par les éléments suivants :

CC = CRC est l'octet de contrôle de parité du 7ème octet dans le firmware
SSSSSSSSSSSS = douze nibbles //nibbles = 1/2 octets// du numéro de série, c'est-à-dire la clé elle-même en codes hexadécimaux.
FF = code famille, dans notre cas c'est 01h - octet zéro de notre clé.

Il s'avère que nous pouvons simplement écrire un programme, y enfoncer toute la clé, réécrire visuellement le vidage à partir de la vraie clé avec des stylos, et nous obtiendrons un émulateur prêt à l'emploi. Il suffit juste de prendre la clé entre les mains de l'ennemi et de réécrire ce qui est écrit dessus. Ce que j'ai fait avec beaucoup de succès. :)

émulateur.
Nous sommes donc arrivés au plus délicieux - l'émulateur des touches de l'interphone. Tout d'abord, j'ai trouvé un émulateur prêt à l'emploi sur un site, je l'ai cousu dans mon AT89C51 et cela n'a pas fonctionné (ce qui n'est pas surprenant). Mais ce n'est pas sportif d'utiliser le firmware d'autres personnes et d'attraper les bogues d'autres personnes, spécialement à gauche, dans le code. Par conséquent, j'ai commencé à créer mes propres émulateurs et à écrire mes propres programmes pour eux. De manière générale, j'ai essayé de faire un émulateur sur 6 microcontrôleurs différents, d'architectures différentes, appartenant à deux familles AVR et i8051, tous fabriqués par Atmel. Cela n'a pas fonctionné pour tout le monde et de nombreux programmes ont été écrits. Au début, les tâches napoléoniennes étaient généralement définies pour créer un émulateur universel avec la possibilité de sélectionner une clé, mais j'ai ensuite abandonné cette idée à cause de ses hémorroïdes et de son insignifiance, laissez les autres personnes intéressées par cet article s'en occuper. Mais le coût de l'émulateur, sans compter le travail dépensé, est inférieur à 70-80 re, vous pouvez même rencontrer 30 re, si vous le faites, par exemple, sur ATtiny12.

Le principe de l'émulateur.
Nous avons examiné en détail le principe de fonctionnement de l'interphone et, par conséquent, décrire l'algorithme du programme d'émulation DS1990A ne sera pas un gros problème. Nous regardons attentivement le diagramme et réfléchissons à ce qui doit être fait. Et vous devez faire ce qui suit. La jambe du microcontrôleur suspendue dans les airs (jusqu'à ce qu'elle soit reliée à la terre, l'impulsion de réinitialisation) sera considérée par le contrôleur comme une unité logique. Cela signifie qu'après avoir alimenté le contrôleur, nous devons attendre que notre jambe touche le sol, a la à zéro. Lorsque nous avons entendu zéro, nous nous réjouissons, attendons un peu et transférons le port du mode lecture au mode écriture. Ensuite, nous laissons le bus à zéro et le maintenons pendant un moment - nous générons une impulsion de PRESENCE (voir la fiche technique pour la durée des impulsions). Ensuite, nous transférons à nouveau le bus en mode lecture et nous attendons ce que le maître - interphone nous dira. Il nous indiquera la commande de lecture, composée de 8 bits. Nous ne le décoderons pas, car dans 99,999% des cas, il nous dira l'ordre de donner son dump, à la 33H, comptez juste 8 impulsions et ne vous inquiétez pas. Nous attendons plus loin. Et la chose la plus difficile et la plus intéressante commence - vous devez regarder rapidement ce que l'interphone nous dit et y répondre rapidement aussi. Nous devons émettre petit à petit un numéro de série composé de 8 octets, que j'ai mentionné ci-dessus. Je l'ai fait comme suit (peu importe le microcontrôleur, le principe sera le même partout), j'ai chargé l'octet dans un registre libre, je l'ai décalé vers la droite et j'ai regardé le bit de transfert. Dès que l'interphone laisse tomber le bus à zéro, alors si j'ai le drapeau de transfert réglé sur un, alors je reste simplement silencieux sur cette impulsion et attends la génération de la prochaine impulsion de lecture de bit du maître. Si j'ai un zéro dans l'indicateur de transfert, alors après que l'interphone a laissé tomber le bus à zéro, je mets le port du microcontrôleur en mode sortie et maintiens le bus de force à zéro pendant un moment, puis le relâche et rebascule le port du contrôleur pour lire mode. Selon la durée de l'impulsion dans le sol, l'appareil maître comprend si une unité ou un zéro lui a été transmis. En principe, tout, alors l'interphone devrait biper joyeusement et ouvrir la porte.

Pratique.

Carte testeur. Je peux voir l'inscription dallas.

Après quelques hémorroïdes et une guerre avec le débogueur, le code s'est avéré. Voici un exemple de code pour envoyer des données à l'interphone sur l'AT89C2051. (En général, l'AT89C2051 est un contrôleur populaire mais obsolète. L'un des premiers que j'ai programmé. Le minimum de périphériques, la mémoire n'est également rien. Il est cousu uniquement avec un programmeur haute tension. Bien qu'il y ait son nouveau remplacement AT89S2051 , il peut déjà être flashé en circuit via une sorte de FAI AVR, et peut-être via AVRDUDE - je ne l'ai pas vérifié.Le plus curieux est qu'il est compatible avec ATTiny2313 sur les jambes, de sorte que le code peut être porté sur Tinka. note DI ARRÊT)

ARRÊTS D.I. :
Nous avons écrit ce code infernal avec Long en 2006 dans son appartement. Hiccups à cause de leurs blunts. J'ai alors ressenti l'AVR pour la première fois. J'étais assis sur un assembleur complètement inconnu pour la procédure de lecture de l'EEPROM, tandis que Long choisissait une carte de démonstration pour son futur émulateur. Je me souviens surtout de ma blague avec le chien de garde lorsque mon MK a été réinitialisé lors de l'écriture sur EEPROM et du sciage de la puce mémoire i2c de la carte à l'aide d'une molette de coupe. Eh... rien, je roule à Moscou, on va encore le brûler !

;======================================= ; Délivrance d'un numéro de série ; dans : R0- adresse où se trouve le numéro de série avec le type de tablette et CRC8 ; UTILISATIONS : A, B, R0, R1, R2 ;===================================== = ================= DEMUL_SendSer : mov R2,#8 SS3 : mov ACC,@R0 mov R1,#8 SS2 : JB TouchFuck,$ ; zéro 1->0 RRC A ;C:=A.0; décalage A ; mov TouchFuck,C ;TouchFuck:=C; MOV B,#9 DJNZ B,$ ;Delay 20 us setb TouchFuck JNB TouchFuck,$ ;boucle jusqu'à 0 DJNZ R1,SS2 inc R0 DJNZ R2,SS3 ret ;=============== =======================================

Résultats.
En conséquence, j'ai eu beaucoup d'émulateurs. Certes, certains d'entre eux doivent encore être rappelés. Bien que quelques-uns fonctionnent à 100%. Des exemples d'émulateurs, vous pouvez regarder les images.



Photos d'émulateurs

Le plus intéressant est le contrôle CRC, qui est effectué par l'interphone. Vous en aurez besoin si vous souhaitez mettre le verrou Dallas sur votre ordinateur par exemple. Un exemple de calcul de CRC sur A89C2051 (bien que ce code fonctionnera sur tous les microcontrôleurs de la famille 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 ;sauvegarder l'accumulateur PUSH B ;sauvegarder le registre B PUSH ACC ;sauvegarder les bits à décaler MOV B,#8 ;fixer décalage = 8 bits ; CRC_LOOP: XRL A,CRC ;calculer CRC RRC A ;le déplacer vers la retenue MOV A,CRC ;obtenir la dernière valeur CRC JNC ZERO ;ignorer si données = 0 XRL A,#18H ;mettre à jour la valeur CRC ; ZERO: RRC A ;positionner le nouveau CRC MOV CRC,A ;mémoriser le nouveau CRC POP ACC ;obtenir les bits restants RR A ;positionner le bit suivant PUSH ACC ;sauvegarder les bits restants DJNZ B,CRC_LOOP ;répéter sur huit bits POP ACC ;nettoyer la pile POP B ;restaurer le registre B POP ACC ;restaurer l'accumulateur RET

DO_CRC: PUSH ACC ;sauvegarder l'accumulateur PUSH B ;sauvegarder le registre B PUSH ACC ;sauvegarder les bits à décaler MOV B,#8 ;fixer décalage = 8 bits ; CRC_LOOP: XRL A,CRC ;calculer CRC RRC A ;le déplacer vers la retenue MOV A,CRC ;obtenir la dernière valeur CRC JNC ZERO ;ignorer si données = 0 XRL A,#18H ;mettre à jour la valeur CRC ; ZERO: RRC A ;positionner le nouveau CRC MOV CRC,A ;mémoriser le nouveau CRC POP ACC ;obtenir les bits restants RR A ;positionner le bit suivant PUSH ACC ;sauvegarder les bits restants DJNZ B,CRC_LOOP ;répéter sur huit bits POP ACC ;nettoyer la pile POP B ;restaurer le registre B POP ACC ;restaurer l'accumulateur RET

Conclusion.
Comme vous pouvez le constater, les touches d'interphone ne sont pas aussi simples qu'elles le paraissent. Cependant, leur émulation est accessible à toute personne possédant une programmation et un fer à souder.

ARRÊTS D.I. :
Ecrins d'autrefois, légendes de l'antiquité profonde... Long - WDR ! (ça ne sera clair que pour les initiés ;)))))

Version pré-éditée d'un article du magazine Hacker

Bon après-midi! D'une manière ou d'une autre, j'en ai eu assez de payer 150 roubles pour une copie de la clé d'interphone et j'ai décidé d'assembler un duplicateur iButton simple et économique sur Arduino. Les prix de ces appareils prêts à l'emploi "mordent", bien que leurs fonctionnalités soient plus larges, ils copient presque tout, y compris les dongles sans fil. Une simple copie de la clé iButton à la "bouton" me suffit. Intéressant? S'il vous plaît sous "couper" !

Alors, commençons! Dans un premier temps, "mission technique", qu'est-ce que cet appareil devrait être capable de faire:
1) Lisez le contenu de la clé, c'est intéressant ce qui est cousu là-haut.
2) Copiez les clés, aussi étrange que cela puisse paraître :)
3) Flashez la touche "universelle". Par le mot "universel", nous entendons n'importe laquelle de nos propres clés, qui sera enregistrée par défaut.

UPD. Très important! Si le premier octet, code de famille, est 00 , par exemple 00 :12:34:56:AB:CD:EF : AA, puis après le firmware, la clé «mourra», elle ne sera pas lue par ce programmeur, et éventuellement par d'autres. Trouvé par expérience, grâce à un ami 16 :AB:CD:EF:E0 avec une somme de contrôle naturellement incorrecte E0. La somme de contrôle étant incorrecte, l'interphone ignore cette séquence lors de la lecture. Cet interphone a ruiné toutes les clés réinscriptibles, pendant que je comprenais ce qui se passait et pourquoi les données dans les clés changeaient "par elles-mêmes". En conséquence, il n'était pas possible de faire un duplicata pour cet interphone, j'ai dû me rendre dans un organisme de service et commander une clé pour 100 roubles. :)


En conséquence, nous obtenons une chose utile dans le ménage pour de l'argent ridicule, des «blancs» pour l'enregistrement sont vendus, bien que nous puissions trouver hors ligne pour 30 roubles chacun, pour des copieurs sur le marché pour 100 à 150 roubles :).
UPD. Nous avons lu quels types de clés peuvent être écrites avec ce duplicateur. Merci pour l'aide camarade.
UPD. Si la clé n'est pas écrite, suivez le camarade. Je prévois d'acheter +197 Ajouter aux Favoris J'ai aimé la critique +95 +184

Tout le monde sait que tout mécanisme se détériore avec le temps et qu'il doit être changé, en particulier pour les éléments soumis à des efforts physiques fréquents.

L'électronique dans ce sens est plus fiable, et si elle est bien protégée électriquement, elle peut durer assez longtemps.

La perte des clés d'une serrure mécanique est souvent associée au remplacement de cette dernière. Perdre une puce électronique, il suffit d'en faire une copie à l'aide.

Comment un duplicateur est organisé et fonctionne

Quels modèles et types de duplicateurs de clés sont

Tous les duplicateurs de clés d'interphone disponibles dans la nature peuvent être classés en trois types différents :

  1. Programmateurs pour flasher les clés sans contact tmd ;
  2. Duplicateurs pour faire des copies de clés d'interphone de contact;
  3. Un type universel de duplicateurs qui peuvent reflasher n'importe quel type de puces d'interphone.

Chacun de ces types d'appareils a ses modifications.

Duplicateurs sans contact

Parmi eux, il y a trois modifications d'appareils.

La première modification comprend des programmeurs qui fabriquent la norme d'identification par radiofréquence EM-Marin, HID et Indala (duplicateurs tmd), la deuxième modification prend en charge la norme Mifare, la troisième modification des duplicateurs fonctionne avec des clés de la norme TECH-COM ou TKRF.

Appareils de type contact

Les appareils sont présentés en deux types. Le premier type est conçu pour fonctionner avec des clés de type contact dallas, le deuxième type de programmeurs double les clés de type ou.

La puce Dallas a un code hexadécimal, et la puce numérique est flashée avec un code de type de protocole, qui est de grande taille.

Dispositifs universels de programmation de clés

Les duplicateurs de clés d'interphone universels, en plus de pouvoir créer une copie de n'importe quelle puce numérique, ont un certain nombre de fonctions supplémentaires :

  • Capacité à mettre à jour;
  • La présence d'une base mémoire;
  • Génération de codes.

Considérant la première fonction, il faut dire que lorsque de nouvelles modifications de clés avec le codage d'origine seront publiées, la base du dispositif de programmation pourra être flashée pour ces puces, et il pourra en faire des copies.

La deuxième fonction permet de cloner des clés sans l'original. C'est-à-dire qu'après le premier clignotement, le code de la puce est simplement écrit sur la base de l'appareil et reproduit au besoin.

La troisième fonction vous permet de flasher des clés avec des codes originaux, par exemple pour les employés de l'entreprise, chacun devant avoir son propre code d'accès personnel à la serrure. Ensuite, vous pouvez suivre le nombre de visites d'un objet particulier par une personne spécifique.

Ce dont vous avez besoin pour fabriquer un duplicateur de clés d'interphone à faire soi-même

Lorsque vous créez un copieur de clés de vos propres mains, vous pouvez prendre le module Arduino comme base.

L'élément de base qui sera nécessaire pour fabriquer l'appareil :

  1. Le microcontrôleur de type "Arduino Nano" est le principal "cerveau" de l'appareil, où les informations sont traitées et les données sont enregistrées ;
  2. Carte RFID RC522, qui agit comme un module qui lit les codes et redirige les informations vers le microcontrôleur ;
  3. Buzzer de type piézoélectrique ;
  4. Deux éléments LED pour le moniteur ;
  5. Deux résistances de 330 ohms ;
  6. Bloc clavier type 4X4 ;
  7. Adaptateur d'affichage à cristaux liquides de type I2C (LCM1602), qui agit comme un convertisseur LCD vers un format compatible Arduino ;
  8. Afficheur à cristaux liquides de type LCD16X2BL.

L'écran à cristaux liquides est connecté au groupe de contact de l'adaptateur à l'aide de seize broches. Sur les deux modules, les contacts sont numérotés.

Ensuite, les fils d'alimentation sont connectés à l'adaptateur d'affichage à partir du module rf ID RC522 : rouge - au contact VCC (+) et noir - au contact GND (commun). Les fils de commande sont soudés aux broches SDA et SCL. Les éléments LED sont installés en tandem avec des résistances de limitation de courant.

Le principe des touches clignotantes

Les puces d'interphone, qui se présentent sous la forme de tablettes et dont la surface doit être appliquée sur le contact d'interphone, ne contiennent pas d'éléments magnétiques à l'intérieur.

Le circuit de l'appareil est basé sur l'utilisation d'une mémoire non volatile (en d'autres termes, ROM).

Dans une telle mémoire, une séquence de caractères d'un code numérique unique est écrite.

Le principe de réécriture de telles clés est que le duplicateur tmd lit le code et le recrée sur une plate-forme à puce pure.

Le système RFID est construit sur la transmission d'un code non pas par contact, mais par une certaine fréquence radio.

Le circuit clé contient un circuit oscillant. S'il est excité, les données de la mémoire seront transmises au lecteur à travers l'espace.

Un tel signal excitateur sera un signal provenant de l'antenne de l'interphone ou du duplicateur. Sinon, le principe de la copie du code en mémoire, sa reproduction ultérieure n'est pas différent du principe de fonctionnement du dispositif de contact.

La seule différence est que les programmeurs ne peuvent stocker et lire qu'un certain type de signal numérique. L'exception concerne les appareils universels qui peuvent être programmés pour fonctionner avec n'importe quel type de données numériques.

Conclusion

Fabriquer des puces pour un interphone de vos propres mains peut être non seulement une solution au problème de la perte de clés personnelles, mais également une opportunité de développer votre entreprise.

Pour commencer, vous pouvez créer un simple copieur de clé d'interphone pour les «ébauches» les plus populaires.

Le plus important est que ces revenus ne nécessitent pas d'investissements initiaux importants et que les services seront toujours en demande, en particulier dans les grandes villes.

Vidéo : Duplicateur de clé d'interphone à faire soi-même

mob_info