Αντιγραφικό κλειδί ενδοεπικοινωνίας στο pic12f675. Πώς να δημιουργήσετε ένα αντίγραφο του κλειδιού ενδοεπικοινωνίας στο σπίτι

Ο εξοπλισμός ενδοεπικοινωνίας στα νέα κτίρια είναι πλέον απαραίτητη προϋπόθεση, και στα παλιά σπίτια είναι. Αυτό αυξάνει σημαντικά την ασφάλεια των κατοίκων και βοηθά στη διατήρηση της τάξης στην είσοδο. Τι γίνεται όμως αν χαθεί ή σπάσει το κλειδί της ενδοεπικοινωνίας; Προηγουμένως, οι εταιρείες εγκατάστασης ήταν μονοπωλητές και αύξησαν την τιμή των εφεδρικών συσκευών, τώρα υπάρχουν πολλές εταιρείες και συνεργεία που μπορούν να ξαναγράψουν το κλειδί ενδοεπικοινωνίας για ένα σχετικά μικρό ποσό. Ωστόσο, τα ίδια βήματα μπορούν να εκτελεστούν ανεξάρτητα.

Υπάρχουν δύο κύριοι τρόποι για να αποκτήσετε ένα νέο κλειδί, ανάλογα με τον τύπο των συσκευών που χρησιμοποιούνται - αυτός είναι η εισαγωγή ενός κωδικού στο σύστημα ενδοεπικοινωνίας.

μνήμη αφής

Η μνήμη αφής είναι ένα μη πτητικό αναγνωριστικό που περιλαμβάνει μια συσκευή μνήμης, ένα ρολόι πραγματικού χρόνου και μια επαναφορτιζόμενη μπαταρία. Η ανάγνωση ή η εγγραφή πληροφοριών γίνεται απλά αγγίζοντας το σώμα της συσκευής. Υπάρχουν πολλές ποικιλίες μνήμης αφής. Διαφέρουν όχι μόνο, αλλά και μοντέλα όσον αφορά το μέγεθος της μνήμης. Η συμβατότητα με τον εγκατεστημένο εξοπλισμό πρέπει να λαμβάνεται υπόψη κατά την αγορά κενών για τη σύνταξη κωδικών.

Μοντέλα μνήμης αφής

  1. Το μοντέλο του Ντάλας είναι το πιο κοινό μοντέλο. Η πλαστική θήκη μπορεί να φέρει το έμβλημα ή την επιγραφή του κατασκευαστή εξοπλισμού ενδοεπικοινωνίας: Sean, Eltis, Vizit ή το λογότυπο του Dallas. Για την αντιγραφή του κωδικού, χρησιμοποιούνται κενά TM2004.

    Ορισμένα συστήματα ενδοεπικοινωνίας Vizit δεν υποστηρίζουν εργασία με κενά TM2004, σε αυτήν την περίπτωση μπορείτε να χρησιμοποιήσετε το πιο ακριβό γενικό μοντέλο TM08.

  2. Μοντέλο Metacom. Η εγχώρια παραγωγή, είναι ένα πλήρες ανάλογο του μοντέλου Dallas. Ταιριάζει πλήρως με τα ηλεκτρικά χαρακτηριστικά. Πρέπει να επισημαίνονται τόσο στην πλαστική θήκη όσο και στη μεταλλική θήκη της ίδιας της συσκευής - την επιγραφή Metakom ή MT. Τα τεμάχια εργασίας TM2004 και TM08 είναι κατάλληλα.
  3. Μοντέλο "Cyfral". Έχουν παρόμοια επιγραφή στη θήκη. Τα κενά TM2004 είναι κατάλληλα για παλαιότερα μοντέλα, τα TM7 για νέα. Μοντέλο αντίστασης "Digital". Ξεπερασμένος εξοπλισμός, ο οποίος είναι αρκετά σπάνιος. Τέτοιες συσκευές δεν διαθέτουν τσιπ με εγγεγραμμένο κωδικό. Χρησιμοποιούν μια αντίσταση με βαθμολογία που αντιστοιχεί σε μια συγκεκριμένη ενδοεπικοινωνία. Μπορείτε να διακρίνετε μια τέτοια συσκευή από την εσοχή που βρίσκεται στο κεντρικό τμήμα της θήκης. Η αντιγραφή γίνεται με συγκόλληση της κατάλληλης αντίστασης σε οποιοδήποτε από τα κενά μνήμης Touch. Η χωρητικότητά του προσδιορίζεται από ένα ωμόμετρο χρησιμοποιώντας ένα κλειδί εργασίας.

Ανεπαφική RFID

Πρόσφατα, τα συστήματα ανάγνωσης ανέπαφων έχουν γίνει ευρέως διαδεδομένα, όπου χρησιμοποιούνται κλειδιά RFID ή κάρτες εγγύτητας. Εξωτερικά, μοιάζουν με ένα συνηθισμένο πλαστικό μπρελόκ ή μια τραπεζική κάρτα. Οι συσκευές δεν έχουν δικό τους τροφοδοτικό. Η μετάδοση του κωδικού στη συσκευή λήψης πραγματοποιείται μετά τη λήψη του ραδιοφωνικού σήματος, της ενέργειας της κυματικής ακτινοβολίας και λειτουργεί ως τροφοδοτικό. Επομένως, η ενεργοποίηση γίνεται μόνο σε απόσταση 10-15 cm από την κλειδαριά. Διαφορετικά, η συσκευή και η δράση της ετικέτας δεν διαφέρουν από την παρόμοια μνήμη αφής.

Τα ίδια τα κλειδιά μοιάζουν με μπρελόκ που δεν είναι μεγαλύτερα από ένα νόμισμα πέντε ρουβλίων και πάχους 5 mm. Οι κάρτες ανέπαφων έχουν μορφή παρόμοια με τις τραπεζικές κάρτες και είναι κάπως παχύτερες - έως 3 mm. Η εναλλαξιμότητα των καρτών και των μπρελόκ, παρά την ίδια τεχνολογία λειτουργίας, δεν είναι πάντα εφικτή, καθώς είναι δυνατή η παραβίαση της έντασης του μεταδιδόμενου σήματος. Επί του παρόντος για αντιγραφή κλειδιών RFID διάφορους κατασκευαστέςσχεδόν κάθε τεμάχιο εργασίας είναι κατάλληλο: HID Prox II, EM-Marin, Indala κ.λπ.

Εγγραφή σε τεμάχιο εργασίας

στα μέσα πραγματοποιείται με τη χρήση ειδικών συσκευών, προγραμματιστών. Για παράδειγμα, η συσκευή Keymaster PRO 4 RF είναι ένας γενικός προγραμματιστής τόσο για το πρότυπο μνήμης αφής όσο και για συσκευές RFID ανέπαφων. Σας επιτρέπει να αντιγράψετε κλειδιά σε κενά:
  • RW/TM 2004;
  • CS 1, 3;
  • TM - 01, 07, 08;
  • RW 1990, 2007, 125RF.

Υποστηρίζει τα πρότυπα των πιο κοινών κατασκευαστών:

Για μνήμη αφής:

  • Cyfral;
    • Ντάλας;
  • Για RFID:
    • HID ProxII;
    • EM Marin;
    • Ιντάλα και μερικοί άλλοι.

Η καταγραφή του τεμαχίου εργασίας γίνεται με ένα άγγιγμα. Ο αλγόριθμος αντιγραφής κλειδιού είναι ο εξής:

  1. Φέρνεται ένα κλειδί στον αναγνώστη, το οποίο πρέπει να αντιγραφεί.
  2. Η συσκευή καθορίζει ανεξάρτητα τον τύπο, τον κατασκευαστή και το μοντέλο του προτεινόμενου τεμαχίου εργασίας.
  3. Το κενό φέρεται στον αναγνώστη. Και πατιέται το κουμπί εγγραφής.
  4. Γράφεται το κλειδί.

Επιπλέον, η συσκευή μπορεί να κάνει εγγραφή χωρίς κλειδί πηγής, εάν ο κωδικός που είναι αποθηκευμένος στη μνήμη είναι γνωστός. Ο αντιγραφέας συνδέεται στον υπολογιστή μέσω θύρα USBκαι έχει το δικό του λογισμικό που αποθηκεύει τις τελευταίες 500 εγγραφές στη μνήμη και διαχειρίζεται τη διανομή της μνήμης αφής και των εγγραφών RFID. Αυτό είναι πέρα ​​από την προσιτότητα των περισσότερων απλών χρηστών, αλλά υπάρχουν πιο απλά μοντέλα με περιορισμένη λειτουργικότητα:

  • Key Master 3;
  • KeyMaster 3 RF - υποστηρίζει ανεπαφικές ετικέτες.
  • TMD-5 RFID;
  • TM Pro.

Προγραμματισμός ενδοεπικοινωνίας

Η εισαγωγή πληροφοριών για νέα κλειδιά μπορεί επίσης να πραγματοποιηθεί απευθείας στον εξοπλισμό ενδοεπικοινωνίας. Φυσικά, διαφορετικοί κατασκευαστές έχουν αναπτύξει διαφορετικές οδηγίες για τον προγραμματισμό ενδοεπικοινωνιών.

Η εισαγωγή πληροφοριών στη μνήμη ενδοεπικοινωνίας είναι δυνατή μόνο εάν οι εγκαταστάτες δεν έχουν αλλάξει τον εργοστασιακό κωδικό πρόσβασης στη συσκευή. Συνήθως, οι εγκαταστάτες σπάνια αλλάζουν τον κωδικό πρόσβασης και οι περισσότεροι από τους προεπιλεγμένους κωδικούς πρόσβασης είναι 1234.

Κατασκευαστής Raimann

  • Για να εισαγάγετε τις ρυθμίσεις - πατιέται το κουμπί ανάγνωσης.
  • Κωδικός πρόσβασης σύνδεσης από το 9 έως το 4, αφού (περιμένετε 10-15 δευτερόλεπτα) πληκτρολογήσετε από το 1 στο 6.
  • Το σύμβολο "P" εμφανίζεται στην οθόνη.
  • Στοιχεία μενού από 2 έως 8. Το στοιχείο που είναι υπεύθυνο για την εισαγωγή των νέων κλειδιών Νο. 2.

Κατασκευαστής VIZIT

  • Εισάγοντας τις ρυθμίσεις - πληκτρολογείται # 99 στο πληκτρολόγιο.
  • Μετά το ηχητικό σήμα, εισάγεται ο κωδικός πρόσβασης 1234 και μετά το μπιπ ξανά.
  • Προγραμματισμός και συνταγογράφηση νέων κλειδιών - σημείο αριθμός 3.
  • Εισάγεται ο αριθμός του διαμερίσματος, εφαρμόζεται το πλήκτρο και πατιέται #.
  • Στη συνέχεια, πατήστε * για να μεταβείτε στον τρόπο λειτουργίας.

Εάν δεν υπάρχουν κουμπιά * και # στο πληκτρολόγιο, τότε αντικαθίστανται από τα κουμπιά C και K, αντίστοιχα.

Κατασκευαστής Eltis

  • Για να μπείτε στο μενού, πατήστε το κουμπί B, κρατήστε το πατημένο για 7 δευτερόλεπτα.
  • Κωδικός πρόσβασης συστήματος 1234;
  • Μετά τη φόρτωση του μενού στην οθόνη, επιλέξτε το στοιχείο "Κύριο κλειδί".
  • Καλούμε τον αριθμό του διαμερίσματος και πατάμε το κουμπί B.
  • Αφού εμφανιστεί η εντολή LF στην οθόνη, πρέπει να ακουμπήσετε το κλειδί στον αναγνώστη.
  • Η εγγραφή ολοκληρώνεται εάν εμφανιστεί το μήνυμα ADD στην οθόνη (αν δεν υπήρχαν κλειδιά για αυτό το διαμέρισμα στη μνήμη πριν) ή ο αριθμός του διαμερίσματος.

Κάθε κλειδί ενδοεπικοινωνίας έχει τον δικό του αριθμό - είναι αυτός ο αριθμός που χρησιμεύει ως αναγνωριστικό κλειδιού. Είναι από τον αριθμό του κλειδιού που αποφασίζει η ενδοεπικοινωνία - δικό της ή κάποιου άλλου. Επομένως, ο αλγόριθμος αντιγραφής είναι ο εξής: πρώτα πρέπει να μάθετε τον αριθμό του επιτρεπόμενου κλειδιού και, στη συνέχεια, να αντιστοιχίσετε αυτόν τον αριθμό σε ένα άλλο κλειδί - τον κλώνο. Για την ενδοεπικοινωνία, δεν έχει καμία διαφορά εάν το αρχικό κλειδί ή το αντίγραφό του επισυνάπτεται. Αφού ελέγξει τον αριθμό με τη βάση δεδομένων επιτρεπόμενων αριθμών, θα ανοίξει την πόρτα.

Κλειδιά ενδοεπικοινωνίας που θα συνδέσουμε στο Arduino (μερικές φορές ονομάζονται iButtonή μνήμη αφής) διαβάζονται και γράφονται μέσω διεπαφής 1 καλωδίου. Επομένως, το σχέδιο σύνδεσης είναι πολύ απλό. Το μόνο που χρειαζόμαστε είναι μερικά καλώδια και μια αντίσταση έλξης 2,2 kΩ. Το διάγραμμα σύνδεσης φαίνεται στο σχήμα.

Το συναρμολογημένο κύκλωμα μπορεί να μοιάζει κάπως έτσι:


2 Διαβάστε το αναγνωριστικό κλειδιού iButtonχρησιμοποιώντας Arduino

Για να εργαστείτε με τη διεπαφή 1 καλωδίου, υπάρχουν έτοιμες βιβλιοθήκες για το Arduino. Μπορείτε να χρησιμοποιήσετε, για παράδειγμα, αυτό. Κατεβάστε το αρχείο και αποσυσκευάστε το σε έναν φάκελο /βιβλιοθήκες/που βρίσκεται στον κατάλογο Arduino IDE. Τώρα μπορούμε πολύ απλά να δουλέψουμε με αυτό το πρωτόκολλο.

Ανεβάστε αυτό το σκίτσο στο Arduino με τον τυπικό τρόπο:

Σκίτσο ανάγνωσης κλειδιού iButton με Arduino(επεκτείνεται) #include OneWire iButton(10); // δημιουργήστε ένα αντικείμενο 1-wire στον ακροδέκτη 10 ρύθμιση κενού(κενό)( Serial.begin(9600); ) void loop(void) (καθυστέρηση (1000); // καθυστέρηση 1 δευτερολέπτου byte adr; // πίνακας για την αποθήκευση δεδομένων κλειδιού εάν (!iButton.search(addr)) ( // εάν το κλειδί δεν είναι συνδεδεμένο Serial.println("Δεν έχει συνδεθεί κλειδί..."); // αναφέρετε αυτήν την επιστροφή; // και ακυρώνεται το πρόγραμμα ) Serial.print("Key: "); for(int i=0; i )

Αυτό το σκίτσο δείχνει τον αριθμό κλειδιού για την ενδοεπικοινωνία που είναι συνδεδεμένη στο κύκλωμα. Αυτό χρειαζόμαστε τώρα: πρέπει να μάθουμε τον αριθμό του κλειδιού που θέλουμε να κάνουμε ένα αντίγραφο. Ας συνδέσουμε το Arduino στον υπολογιστή. Ας ξεκινήσουμε την οθόνη σειριακής θύρας: Εργαλεία Παρακολούθηση σειριακής θύρας(ή συντόμευση πληκτρολογίου Ctrl+Shift+M).

Τώρα ας συνδέσουμε το κλειδί στο κύκλωμα. Η οθόνη θύρας θα εμφανίσει τον αριθμό κλειδιού. Ας θυμηθούμε αυτόν τον αριθμό.


Και να τι ανταλλαγή πραγματοποιείται σε μια γραμμή μονού καλωδίου κατά την ανάγνωση του αναγνωριστικού κλειδιού (για περισσότερες λεπτομέρειες, δείτε παρακάτω):

Το σχήμα, φυσικά, δεν δείχνει όλες τις λεπτομέρειες υλοποίησης. Επομένως, στο τέλος του άρθρου, επισυνάπτω ένα διάγραμμα χρονισμού σε μορφή *.logicdata, που έχει ληφθεί με τη βοήθεια ενός λογικού αναλυτή και του προγράμματος Saleae Logic Analyzerκαι της άνοιξε. Το πρόγραμμα είναι δωρεάν και μπορείτε να το κατεβάσετε από την επίσημη ιστοσελίδα του Saleae. Για να ανοίξετε το αρχείο *.logicdata, πρέπει να εκτελέσετε το πρόγραμμα, να πατήσετε Ctrl + O ή στο μενού Επιλογές(βρίσκεται πάνω δεξιά) επιλέξτε ένα στοιχείο ανοιχτή λήψη / ρύθμιση.

3 Εγγραφή αναγνωριστικού κλειδιού Dallasχρησιμοποιώντας Arduino

Τώρα ας γράψουμε ένα σκίτσο για την εγγραφή δεδομένων στη μνήμη του κλειδιού iButton.

Σκίτσο γραφής με κλειδί iButton με Arduino(επεκτείνεται) #include // περιλαμβάνει τη βιβλιοθήκη const int pin = 10; // Δηλώστε τον αριθμό pin OneWire iButton(pin); // δήλωση του αντικειμένου OneWire στην ακίδα 10 // αριθμός κλειδιού που θέλουμε να γράψουμε στο iButton: byte key_to_write = ( 0x01, 0xF6, 0x75, 0xD7, 0x0F, 0x00, 0x00, 0x9A ); ρύθμιση κενού (κενό) ( Serial.begin(9600); pinMode (pin, OUTPUT); ) void loop(void) (καθυστέρηση (1000); // καθυστέρηση κατά 1 δευτερόλεπτο iButton.reset(); // επαναφορά συσκευής καθυστέρηση 1-wire(50); iButton.write(0x33); // αποστολή δεδομένων byte εντολής "read"? // πίνακας για την αποθήκευση βασικών δεδομένων iButton.read_bytes(data, 8); // διαβάστε τα δεδομένα του συνημμένου κλειδιού, 8x8=64 bit εάν (OneWire::crc8(data, 7) != δεδομένα) ( // ελέγξτε το άθροισμα ελέγχου του συνημμένου κλειδιού Serial. println("CRC error!"); // εάν το CRC δεν είναι σωστό, αναφέρετε την επιστροφή; // και ακύρωση του προγράμματος ) εάν (δεδομένα & δεδομένα & δεδομένα & δεδομένα & δεδομένα & δεδομένα & δεδομένα & δεδομένα == 0xFF) (επιστροφή; // εάν το κλειδί δεν είναι συνδεδεμένο με τον αναγνώστη, ακυρώστε το πρόγραμμα και περιμένετε όσο ) Serial.print("Start programming..."); // έναρξη της διαδικασίας εγγραφής δεδομένων στο κλειδί για (int i = 0; i ) // Εκκίνηση εγγραφής δεδομένων στο κλειδί-tablet iButton: void send_programming_impulse() ( digitalWrite(pin, HIGH); καθυστέρηση(60); digitalWrite (pin, LOW); καθυστέρηση(5); digitalWrite(pin, HIGH); καθυστέρηση(50); }

Μην ξεχάσετε να ορίσετε τον αριθμό του αρχικού κλειδιού σας στον πίνακα κλειδί_για_εγγραφή, που μάθαμε νωρίτερα.

Ανεβάστε αυτό το σκίτσο στο Arduino. Ανοίξτε την οθόνη σειριακής θύρας (Ctrl+Shift+M). Ας συνδέσουμε ένα κλειδί στο σχήμα, το οποίο θα είναι ένας κλώνος του αρχικού κλειδιού. Η οθόνη σειριακής θύρας θα εμφανίσει ένα αντίστοιχο μήνυμα σχετικά με το αποτέλεσμα του προγραμματισμού.

Εάν αυτό το σκίτσο δεν λειτούργησε, δοκιμάστε να αντικαταστήσετε τον κωδικό μετά Serial.print ("Έναρξη προγραμματισμού...")μέχρι το τέλος της λειτουργίας βρόχος()στο επόμενο:

Πρόσθετο σκίτσο για την εγγραφή κλειδιού iButton με χρήση Arduino(ανάπτυξη) καθυστέρηση(200); iButton.skip(); iButton.reset(); iButton.write(0x33); // ανάγνωση του τρέχοντος αριθμού κλειδιού Serial.print("ID πριν από την εγγραφή:"); για (byte 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);

Εδώ η συνάρτηση writeByte()θα είναι ως εξής:

int writeByte(byte δεδομένα) ( 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; ) επιστροφή 0; )

Δεν έχει νόημα να εμφανίζεται το διάγραμμα χρονισμού της λειτουργίας του σκίτσου εγγραφής του αναγνωριστικού κλειδιού, επειδή είναι μακρύ και δεν χωράει στην εικόνα. Ωστόσο, το αρχείο *.logicdata για το πρόγραμμα λογικού αναλυτή επισυνάπτεται στο τέλος του άρθρου.

Τα κλειδιά ενδοεπικοινωνίας διατίθενται σε διάφορους τύπους. Αυτός ο κωδικός δεν είναι κατάλληλος για όλα τα κλειδιά, αλλά μόνο για RW1990 ή RW1990.2. Ο προγραμματισμός πλήκτρων άλλου τύπου μπορεί να οδηγήσει σε αστοχία του κλειδιού!

Εάν θέλετε, μπορείτε να ξαναγράψετε το πρόγραμμα για ένα κλειδί διαφορετικού τύπου. Για να το κάνετε αυτό, χρησιμοποιήστε την τεχνική περιγραφή του τύπου κλειδιού σας (φύλλο δεδομένων) και αλλάξτε το σκίτσο σύμφωνα με την περιγραφή. Λήψη φύλλου δεδομένων για τα κλειδιά iButtonμπορεί να επισυναφθεί στο άρθρο.

Παρεμπιπτόντως, ορισμένες σύγχρονες ενδοεπικοινωνίες διαβάζουν όχι μόνο το αναγνωριστικό κλειδιού, αλλά και άλλες πληροφορίες που καταγράφονται στο αρχικό κλειδί. Επομένως, η δημιουργία ενός κλώνου αντιγράφοντας μόνο τον αριθμό δεν θα λειτουργήσει. Πρέπει να αντιγράψετε πλήρως τα βασικά δεδομένα.

4 Περιγραφή μονού καλωδίου 1-Wire interface

Ας ρίξουμε μια πιο προσεκτική ματιά στη διεπαφή One-wire. Στην οργάνωση, είναι παρόμοιο με τη διεπαφή I2C: πρέπει επίσης να περιέχει μια κύρια συσκευή (κύριο) που ξεκινά την ανταλλαγή, καθώς και μία ή περισσότερες εξαρτημένες συσκευές (slave). Όλες οι συσκευές συνδέονται σε έναν κοινό δίαυλο. Οι συσκευές iButton είναι πάντα σκλάβοι. Ο κύριος είναι συνήθως ένας μικροελεγκτής ή υπολογιστής. Ο ρυθμός μετάδοσης δεδομένων είναι 16,3 kbps. Το ρελαντί λεωφορείο βρίσκεται στο λογικό "1" (HIGH). Αυτό το πρωτόκολλο παρέχει μόνο 5 τύπους σημάτων:

  • επαναφορά παλμού (κύριος)
  • παλμός παρουσίας (σκλάβος)
  • γράψτε το bit "0" (κύριο)
  • γράψε bit "1" (κύριο)
  • διαβάστε λίγο (κύριος)
Με εξαίρεση τον παλμό παρουσίας, όλοι οι άλλοι παράγονται από τον κύριο. Η ανταλλαγή πραγματοποιείται πάντα σύμφωνα με το σχέδιο: 1) Αρχικοποίηση 2) ​​Εντολές για εργασία με ROM 3) Εντολές για εργασία με PROM 4) Μεταφορά δεδομένων.

1) Αρχικοποίηση

Η εκκίνηση συνίσταται στο γεγονός ότι ο κύριος ρυθμίζει την κατάσταση επαναφοράς RESET (χαμηλώνει τη γραμμή στο "0" για μια περίοδο 480 μs ή περισσότερο, και στη συνέχεια την απελευθερώνει, και λόγω της αντίστασης έλξης, η γραμμή ανεβαίνει στην κατάσταση "1"), και η υποτελής όχι αργότερα από 60 µs μετά από αυτό, πρέπει να επιβεβαιώσει την παρουσία χαμηλώνοντας επίσης τη γραμμή στο "0" για 60 ... 240 µs και στη συνέχεια ελευθερώνοντάς την:


2) Εντολές για εργασία με ROM

Εάν δεν ληφθεί σήμα επιβεβαίωσης μετά τον παλμό αρχικοποίησης, η κύρια μονάδα επαναλαμβάνει τη δημοσκόπηση διαύλου. Εάν ληφθεί το σήμα επιβεβαίωσης, τότε ο κύριος κατανοεί ότι υπάρχει μια συσκευή στο δίαυλο που είναι έτοιμη για ανταλλαγή και της στέλνει μία από τις τέσσερις εντολές ROM 8-bit:

(*) Παρεμπιπτόντως, υπάρχουν αρκετές οικογένειες συσκευών iButton, μερικές από αυτές παρατίθενται στον παρακάτω πίνακα.

Κωδικοί οικογένειας iButton(ξεδιπλώνεται)
Κωδικός οικογένειαςΣυσκευές iButtonΠεριγραφή
0x01DS1990A, DS1990R, DS2401, DS2411Μοναδικός σειριακός αριθμός-κλειδί
0x02DS1991Ασφαλής EEPROM πολλαπλών κλειδιών, 1152 bit
0x04DS1994, DS24044 kb NV RAM + ρολόι, χρονοδιακόπτης και ξυπνητήρι
0x05DS2405Μονό διευθυνσιοδοτούμενο κλειδί
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, DS18B20αισθητήρας θερμοκρασίας
0x12DS2406, DS24071 kb EEPROM + διευθυνσιοδοτούμενο κλειδί διπλού καναλιού
0x14DS1971, DS2430A256 bit EEPROM και 64 bit PROM
0x1ADS1963L4 KB NV RAM + μετρητής κύκλου εγγραφής
0x1CDS28E04-1004 KB EEPROM + διευθυνσιοδοτούμενο κλειδί διπλού καναλιού
0x1DDS24234 KB NV RAM + εξωτερικός μετρητής
0x1FDS2409Διευθυνσιοδοτούμενο κλειδί δύο καναλιών με δυνατότητα εναλλαγής στο λεωφορείο επιστροφής
0x20DS2450Τετρακάναλο ADC
0x21DS1921G, DS1921H, DS1921ZΘερμοχρόνιος αισθητήρας με λειτουργία λήψης δεδομένων
0x23DS1973, DS24334 kb EEPROM
0x24DS1904, DS2415Ρολόι πραγματικού χρόνου
0x26DS2438Αισθητήρας θερμοκρασίας, ADC
0x27DS2417Ρολόι πραγματικού χρόνου με διακοπή
0x29DS2408Αμφίδρομη θύρα εισόδου/εξόδου 8 bit
0x2CDS2890Ψηφιακό ποτενσιόμετρο μονού καναλιού
0x2DDS1972, DS24311 kb EEPROM
0x30DS2760Αισθητήρας θερμοκρασίας, αισθητήρας ρεύματος, ADC
0x37DS197732 KB με κωδικό πρόσβασης EEPROM
0x3ADS2413Διευθυνσιοδοτούμενος διακόπτης διπλού καναλιού
0x41DS1922L, DS1922T, DS1923, DS2422Υψηλής ανάλυσης θερμοχρόνιοι και υγρόχρονοι αισθητήρες με λήψη δεδομένων
0x42DS28EA00Ψηφιακό θερμόμετρο με προγραμματιζόμενη ανάλυση, δυνατότητα σειριακής σύνδεσης και προγραμματιζόμενες θύρες I/O
0x43DS28EC2020 kb EEPROM

Τα δεδομένα μεταδίδονται διαδοχικά, bit-bit. Η μετάδοση κάθε bit ξεκινά από το master. Κατά την εγγραφή, ο αρχηγός χαμηλώνει τη γραμμή στο μηδέν και την κρατά. Εάν ο χρόνος διατήρησης της γραμμής είναι 1…15 µs, τότε γράφεται το bit "1". Εάν ο χρόνος διατήρησης είναι 60 µs ή περισσότερο, γράφεται το bit "0".

Η ανάγνωση bits ξεκινά επίσης από το master. Στην αρχή της ανάγνωσης κάθε bit, ο πλοίαρχος τραβάει το λεωφορείο χαμηλά. Εάν ο slave θέλει να στείλει ένα "0", κρατά το δίαυλο σε κατάσταση LOW για 60 έως 120 µs, και εάν θέλει να στείλει ένα "1", κρατά το δίαυλο σε κατάσταση LOW για περίπου 15 µs. Μετά από αυτό, το slave απελευθερώνει τη γραμμή και λόγω της αντίστασης pull-up, επιστρέφει στην κατάσταση HIGH.

Έτσι φαίνεται, για παράδειγμα, το διάγραμμα χρονισμού της εντολής αναζήτησης Search ROM (0xF0). Οι εντολές εγγραφής bit σημειώνονται με κόκκινο χρώμα στο διάγραμμα. Δώστε προσοχή στη σειρά των bit κατά τη μετάδοση μέσω 1-Wire: το πιο σημαντικό bit βρίσκεται στα δεξιά, το λιγότερο σημαντικό bit βρίσκεται στα αριστερά.


3) Εντολές για εργασία με PROM

Πριν εξετάσετε τις εντολές για την εργασία με το iButton PROM, είναι απαραίτητο να πούμε λίγα λόγια για τη δομή της μνήμης dongle. Η μνήμη χωρίζεται σε 4 ίσα τμήματα: τρία από αυτά είναι σχεδιασμένα να αποθηκεύουν τρία μοναδικά κλειδιά και το τέταρτο είναι για προσωρινή αποθήκευση δεδομένων. Αυτό το προσωρινό buffer χρησιμεύει ως ένα είδος πρόχειρου όπου προετοιμάζονται δεδομένα για εγγραφή κλειδιών.


Για να εργαστείτε με το PROM, υπάρχουν 6 εντολές:

ΟνομαΟμάδαΣκοπός
Εγγραφή σε προσωρινή προσωρινή μνήμη (Write Scratchpad)0x96Χρησιμοποιείται για την εγγραφή δεδομένων σε ένα προσωρινό buffer (scratchpad).
Ανάγνωση από την προσωρινή προσωρινή μνήμη (Ανάγνωση του Scratchpad)0x69Χρησιμοποιείται για την ανάγνωση δεδομένων από ένα προσωρινό buffer.
Αντιγραφή από προσωρινό πρόχειρο (Αντιγραφή Scratchpad)0x3CΧρησιμοποιείται για τη μεταφορά δεδομένων που έχουν προετοιμαστεί σε ένα προσωρινό buffer στο επιλεγμένο κλειδί.
Γράψτε τον κωδικό πρόσβασης κλειδιού (Write Password)0x5AΧρησιμοποιείται για την καταγραφή του κωδικού πρόσβασης και του μοναδικού αναγνωριστικού του επιλεγμένου κλειδιού (ένα από τα τρία).
Γράψτε ένα κλειδί (Write SubKey)0x99Χρησιμοποιείται για την απευθείας εγγραφή δεδομένων στο επιλεγμένο κλειδί (παρακάμπτοντας την προσωρινή προσωρινή μνήμη).
Κλειδί ανάγνωσης (Ανάγνωση δευτερεύοντος κλειδιού)0x66Χρησιμοποιείται για την ανάγνωση των δεδομένων του επιλεγμένου κλειδιού.

4) Μεταφορά δεδομένων

Συνεχίζεται...

5 Πιθανά λάθηκατά τη σύνταξη του σκίτσου

1) Εάν παρουσιαστεί σφάλμα κατά τη σύνταξη του σκίτσου WConstants.h: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος #include "WConstants.h",στη συνέχεια, ως επιλογή, ακολουθεί στο αρχείο OneWire.cppαντικαταστήστε το πρώτο μπλοκ μετά τα σχόλια με το εξής:

#περιλαμβάνω #περιλαμβάνω εξωτερικό "C" (#περιλαμβάνω #περιλαμβάνω }

2) Εάν παρουσιαστεί σφάλμα κατά τη μεταγλώττιση Η κλάση OneWire δεν έχει μέλος με όνομα read_bytes,στη συνέχεια βρείτε και δοκιμάστε να χρησιμοποιήσετε μια άλλη βιβλιοθήκη για να εργαστείτε με τη διεπαφή OneWire.

Έχετε χάσει τα κλειδιά ενδοεπικοινωνίας και δεν μπορείτε να δημιουργήσετε αντίγραφο. Θέλετε να επισκεφτείτε μια φίλη, αλλά δεν έχετε τα κλειδιά για την είσοδό της. Ή απλά πρέπει να ρίξεις μια σκατά στον εχθρό σου, αλλά δεν μπορείς να μπεις στο σπίτι του, τότε αυτό το άρθρο είναι για σένα.

Λίγα λόγια για την αρχή της εργασίας ...
Υπάρχει μια άποψη ότι υπάρχει ένας μαγνήτης στα tablet από την ενδοεπικοινωνία και ανοίγει την πόρτα. Οχι δεν είναι. Το tablet είναι ROM, με ενσύρματο κλειδί μέσα. Αυτή η ROM ονομάζεται - Touch Memory, μάρκας DS1990A. Το DS1990A είναι η μάρκα των κλειδιών ενδοεπικοινωνίας. Επικοινωνεί με την ενδοεπικοινωνία μέσω του διαύλου μονού καλωδίου (διεπαφή ενός καλωδίου). Αυτό το λεωφορείο αναπτύχθηκε από το Ντάλας και επιτρέπει σε δύο συσκευές να επικοινωνούν μέσω ενός μόνο καλωδίου. Εάν η συσκευή είναι παθητική (όπως στην περίπτωσή μας), τότε της μεταδίδει και ρεύμα μέσω αυτού του καλωδίου. Θα πρέπει επίσης να σημειωθεί ότι απαιτείται επίσης ένα κοινό καλώδιο (έτσι ώστε το κύκλωμα να κλείνει), αλλά, κατά κανόνα, όλες οι βάσεις των συσκευών που συνδέονται σε αυτό το δίαυλο συνδέονται μεταξύ τους. Το κλειδί περιέχει έναν πυκνωτή 60 picofarad, ο οποίος παρέχει βραχυπρόθεσμη ισχύ στο κλειδί τη στιγμή της απάντησης. Αλλά η κεντρική συσκευή πρέπει συνεχώς (τουλάχιστον μία φορά κάθε 120 μικροδευτερόλεπτα) να παράγει ένα σήμα για να φορτίσει αυτόν τον πυκνωτή, έτσι ώστε η ROM στο tablet να συνεχίσει να τροφοδοτείται.

Εσωτερικά tablet

Οργάνωση του One-wire bus
Το One-wire bus λειτουργεί ως εξής. Υπάρχει μια κύρια συσκευή και μια εξαρτημένη συσκευή, στην περίπτωσή μας ένα παθητικό κλειδί. Τα κύρια σήματα παράγονται από τα κύρια, λογικά σήματα και μηδενικά. Η εξαρτημένη συσκευή μπορεί να εξαναγκάσει μόνο μηδενικά σήματα (δηλαδή απλώς τραβήξτε το δίαυλο στη γείωση μέσω του τρανζίστορ). Ένα απλοποιημένο διάγραμμα του master και του slave φαίνεται στις εικόνες.

Σχέδιο μάγου

Αν κοιτάξετε το κύκλωμα, είναι εύκολο να δείτε ότι από προεπιλογή η κύρια μονάδα έχει πάντα +5 βολτ, μια λογική μονάδα. Για να μεταφέρει ένα λογικό μηδέν, ο κύριος κλείνει το δίαυλο στη γείωση μέσω ενός τρανζίστορ και για να μεταφέρει μια μονάδα, απλά την ανοίγει. Αυτό γίνεται για να παρέχεται ισχύς στη εξαρτημένη συσκευή. Η συσκευή slave είναι κατασκευασμένη παρόμοια, μόνο που δεν παράγει +5 βολτ. Μπορεί μόνο να βυθίσει το λεωφορείο στο έδαφος, μεταδίδοντας έτσι ένα λογικό μηδέν. Η λογική μονάδα μεταδίδεται απλώς με τη «σιωπή» της συσκευής.

Πρωτόκολλο Εργασίας
Μπορείτε να παρατηρήσετε αμέσως ότι μόνο ο Master κυβερνά την παρέλαση, το ίδιο το κλειδί DS1990A είτε κρατά το έδαφος (ο πλοίαρχος θέτει το λεωφορείο στο μηδέν ο ίδιος), είτε απλά μένει σιωπηλός, σε περίπτωση που θέλει να μεταφέρει μια μονάδα, απλά μένει σιωπηλός. Ας δούμε το σχέδιο.

Ένα παράδειγμα ανάγνωσης κλειδιού από ενδοεπικοινωνία.

Αφού δημιουργηθεί ο παλμός PREFERENCE από το κλειδί, η κύρια συσκευή περιμένει για κάποιο χρονικό διάστημα και εκδίδει μια εντολή για ανάγνωση της ROM, συνήθως αυτός είναι ο οικογενειακός κωδικός, στην περίπτωσή μας 33H. Προσέξτε πώς γίνεται η μεταφορά του μηδενός και του ενός. Σε κάθε περίπτωση, η ώθηση «πέφτει» στο έδαφος, αλλά εάν μια μονάδα μεταδοθεί, τότε αποκαθίσταται γρήγορα (περίπου 1 μικροδευτερόλεπτο), εάν πρέπει να είναι μηδέν, τότε η ώθηση «κολλάει» στο έδαφος για κάποιο χρονικό διάστημα, μετά επιστρέφει ξανά στο ένα. Η επιστροφή στην ενότητα είναι απαραίτητη, έτσι ώστε η παθητική συσκευή να αναπληρώνει συνεχώς την ενέργεια του πυκνωτή και να υπάρχει ισχύς σε αυτήν. Επιπλέον, η ενδοεπικοινωνία αντέχει για κάποιο χρονικό διάστημα και αρχίζει να παράγει παλμούς για λήψη πληροφοριών, συνολικά 64 παλμούς (δηλαδή, λαμβάνει 64 bit πληροφοριών). Το κλειδί είναι απλώς να ταιριάζουν σωστά οι διάρκειες. Αν θέλει να βγάζει μηδέν, τότε κρατά το λεωφορείο στο μηδέν για κάποιο χρονικό διάστημα, αν όχι, τότε απλά μένει σιωπηλός. Το θυροτηλέφωνο κάνει όλα τα άλλα για αυτόν.

Περιεχόμενα του κλειδιού DS1990A.
Σε ενδοεπικοινωνίες και απλώς συσκευές όπου τέτοιες συσκευές χρησιμοποιούνται για το άνοιγμα θυρών, χρησιμοποιείται ένα κλειδί του προτύπου DS1990A. Αυτή η συσκευή είναι μια ROM 8 byte, με πληροφορίες που καταγράφονται από λέιζερ.


Σχήμα απόρριψης κλειδιών.

Το χαμηλό byte περιέχει τον οικογενειακό κωδικό. Για το DS1990A θα είναι πάντα 01h. Τα επόμενα έξι byte περιέχουν τον σειριακό αριθμό του κλειδιού. Το πιο οικείο πράγμα που προσδιορίζει το κλειδί. Το τελευταίο byte ονομάζεται CRC, αυτός είναι ένας έλεγχος ισοτιμίας που διασφαλίζει την αυθεντικότητα των μεταδιδόμενων δεδομένων. Υπολογίζεται από τα προηγούμενα επτά byte. Παρεμπιπτόντως, αυτό δεν είναι το μόνο πρότυπο. Υπάρχουν επανεγγράψιμες ROM στις οποίες μπορείτε να μεταφέρετε πληροφορίες, ενώ υπάρχουν και κλειδιά κρυπτογράφησης. Αλλά όλη η ποικιλία των ταμπλετών Dallas είναι απλά μη ρεαλιστικό να ληφθεί υπόψη στο πλαίσιο ενός άρθρου, μπορείτε να διαβάσετε σχετικά με αυτά στο δίσκο.

Η φυσική συσκευή του κλειδιού.
Πιθανώς, όλα τα παραπάνω αποθάρρυναν κάθε επιθυμία συμμετοχής σε βασικούς εξομοιωτές, επειδή το κλειδί πρέπει να διαβαστεί, και αυτό είναι μια τέτοια αιμορροΐδα. Αποδεικνύεται ότι όχι! Οι κατασκευαστές του Ντάλας μας φρόντισαν και τοποθέτησαν όλες τις πληροφορίες που χρειαζόμασταν απευθείας στο κλειδί, σε δεκαεξαδικό δηλαδή! Είναι χαραγμένο πάνω του και είναι πολύ πιθανό να το διαβάσετε και μετά να το ράψετε στον υπέροχο εξομοιωτή μας.

Ρύγχος κλειδιού

Μας ενδιαφέρουν τα ακόλουθα από όλες αυτές τις πληροφορίες:

CC = CRC είναι το byte ελέγχου ισοτιμίας του 7ου byte στο υλικολογισμικό
SSSSSSSSSSSS = δώδεκα τσιμπήματα //nibbles = 1/2 bytes// του σειριακού αριθμού, δηλ. το ίδιο το κλειδί σε εξαγωνικούς κωδικούς.
FF = κωδικός οικογένειας, στην περίπτωσή μας είναι 01h - μηδέν byte του κλειδιού μας.

Αποδεικνύεται ότι μπορούμε απλά να γράψουμε ένα πρόγραμμα, να σφυρηλατήσουμε ολόκληρο το κλειδί σε αυτό, να ξαναγράψουμε το dump οπτικά από το πραγματικό κλειδί με στυλό και θα λάβουμε έναν έτοιμο εξομοιωτή. Αρκεί μόνο να πάρεις το κλειδί στα χέρια του εχθρού και να ξαναγράψεις ό,τι είναι γραμμένο σε αυτό. Το οποίο έκανα με μεγάλη επιτυχία. :)

εξομοιωτή.
Έτσι φτάσαμε στο πιο νόστιμο - τον εξομοιωτή των κλειδιών από την ενδοεπικοινωνία. Πρώτα, βρήκα έναν έτοιμο εξομοιωτή σε κάποια τοποθεσία, τον έραψα στο AT89C51 μου και δεν λειτούργησε (κάτι που δεν προκαλεί έκπληξη). Αλλά δεν είναι σπορ να χρησιμοποιείτε το υλικολογισμικό άλλων και να πιάνετε σφάλματα άλλων, ειδικά αριστερά, στον κώδικα. Ως εκ τούτου, άρχισα να φτιάχνω τους δικούς μου εξομοιωτές και να γράφω τα δικά μου προγράμματα για αυτούς. Γενικά, προσπάθησα να φτιάξω έναν εξομοιωτή σε 6 διαφορετικούς μικροελεγκτές, διαφορετικές αρχιτεκτονικές, που ανήκουν σε δύο οικογένειες AVR και i8051, όλα κατασκευασμένα από την Atmel. Δεν λειτούργησε για όλους και γράφτηκαν πολλά προγράμματα. Στην αρχή, οι εργασίες του Ναπολέοντα είχαν γενικά ρυθμιστεί για να φτιάξουν έναν καθολικό εξομοιωτή με δυνατότητα επιλογής κλειδιού, αλλά μετά άφησα αυτήν την ιδέα λόγω των αιμορροΐδων και της ανούσιας ουσίας, αφήστε άλλους ανθρώπους που ενδιαφέρονται για αυτό το άρθρο να το φροντίσουν. Αλλά το κόστος του εξομοιωτή, χωρίς να υπολογίζουμε την εργασία που δαπανήθηκε, είναι λιγότερο από 70-80 εκ νέου, μπορείτε να συναντήσετε ακόμη και 30 εκ νέου, αν το κάνετε, για παράδειγμα, στο ATtiny12.

Η αρχή του εξομοιωτή.
Εξετάσαμε λεπτομερώς την αρχή της λειτουργίας ενδοεπικοινωνίας και συνεπώς δεν θα είναι μεγάλο πρόβλημα να περιγράψουμε τον αλγόριθμο του προγράμματος εξομοιωτή DS1990A. Κοιτάμε προσεκτικά το διάγραμμα και σκεφτόμαστε τι πρέπει να γίνει. Και πρέπει να κάνετε το εξής. Το πόδι του μικροελεγκτή που κρέμεται στον αέρα (μέχρι να συνδεθεί με το έδαφος, ο παλμός επαναφοράς) θα θεωρείται από τον ελεγκτή ως μια λογική μονάδα. Σημαίνει ότι μετά την παροχή ρεύματος στον ελεγκτή, πρέπει να περιμένουμε μέχρι το πόδι μας να πάει στο έδαφος, α λα στο μηδέν. Όπως ακούσαμε το μηδέν, χαιρόμαστε, περιμένουμε λίγο και μεταφέρουμε τη θύρα από λειτουργία ανάγνωσης σε λειτουργία εγγραφής. Στη συνέχεια μηδενίζουμε το δίαυλο και τον κρατάμε για λίγο - δημιουργούμε έναν παλμό ΠΑΡΟΥΣΙΑΣ (δείτε το φύλλο δεδομένων για τη διάρκεια των παλμών). Στη συνέχεια μεταφέρουμε ξανά το λεωφορείο σε λειτουργία ανάγνωσης και περιμένουμε τι θα μας πει ο κύριος - ενδοεπικοινωνία. Θα μας πει την εντολή ανάγνωσης, που αποτελείται από 8 bit. Δεν θα το αποκωδικοποιήσουμε, γιατί στο 99,999% των περιπτώσεων, θα μας πει την εντολή να δώσει το dump του, a la 33H, απλά μετρήστε 8 παλμούς και μην ανησυχείτε. Περιμένουμε περαιτέρω. Και αρχίζει το πιο δύσκολο και ενδιαφέρον - πρέπει να κοιτάξετε γρήγορα τι μας λέει η ενδοεπικοινωνία και να απαντήσετε γρήγορα επίσης. Πρέπει να δίνουμε ένα σειριακό αριθμό σπιθαμή προς σπιθαμή, αποτελούμενο από 8 byte, που ανέφερα παραπάνω. Το έκανα ως εξής (δεν έχει σημασία ποιος μικροελεγκτής, η αρχή θα είναι η ίδια παντού), φόρτωσα το byte σε κάποιο ελεύθερο μητρώο και το μετατόπισα προς τα δεξιά και κοίταξα το bit μεταφοράς. Μόλις η ενδοεπικοινωνία ρίξει το δίαυλο στο μηδέν, τότε αν έχω τη σημαία μεταφοράς ρυθμισμένη σε ένα, τότε απλώς παραμένω σιωπηλός σε αυτόν τον παλμό και περιμένω τη δημιουργία του επόμενου παλμού ανάγνωσης bit από τον κύριο. Εάν έχω ένα μηδέν στη σημαία μεταφοράς, τότε αφού η ενδοεπικοινωνία ρίξει το δίαυλο στο μηδέν, βάζω τη θύρα του μικροελεγκτή σε λειτουργία εξόδου και κρατάω τον δίαυλο στο μηδέν για λίγο, μετά τον αφήνω και αλλάζω τη θύρα του ελεγκτή ξανά στη θέση λειτουργία ανάγνωσης. Με τη διάρκεια του παλμού στο έδαφος, η κύρια συσκευή κατανοεί εάν μια μονάδα ή μηδέν μεταδόθηκε σε αυτήν. Κατ 'αρχήν, τα πάντα, τότε η ενδοεπικοινωνία θα πρέπει να ηχήσει χαρούμενα και να ανοίξει την πόρτα.

Πρακτική.

Πίνακας δοκιμής. Μπορώ να δω την επιγραφή ντάλας.

Μετά από λίγες αιμορροΐδες και πόλεμο με τον εντοπισμό σφαλμάτων, βγήκε ο κωδικός. Ακολουθεί ένα παράδειγμα κώδικα για την έξοδο δεδομένων στην ενδοεπικοινωνία στο AT89C2051. (Γενικά το AT89C2051 είναι δημοφιλές αλλά ξεπερασμένο χειριστήριο. Από τα πρώτα που προγραμμάτισα. Τα ελάχιστα περιφερειακά, η μνήμη είναι επίσης τίποτα. Είναι ραμμένο μόνο με προγραμματιστή υψηλής τάσης. Αν και υπάρχει ο νέος αντικαταστάτης του AT89S2051 , μπορεί ήδη να αναβοσβήνει σε κύκλωμα μέσω κάποιου είδους ISP AVR, και ίσως μέσω AVRDUDE - δεν το έλεγξα. Το πιο περίεργο είναι ότι είναι συμβατό με το ATTiny2313 στα πόδια, οπότε ο κωδικός μπορεί να μεταφερθεί σε Tinka. Σημείωση DI HALT)

D.I. HALTS:
Γράψαμε αυτόν τον κολασμένο κώδικα με τον Λονγκ το 2006 στο διαμέρισμά του. Έσπευσε να λόξυγκας πάνω από τα αμβλύματά τους. Τότε ένιωσα το AVR για πρώτη φορά. Καθόμουν σε έναν εντελώς άγνωστο assembler για τη διαδικασία ανάγνωσης από την EEPROM, ενώ ο Long διάλεγε έναν πίνακα επίδειξης για τον μελλοντικό του εξομοιωτή. Θυμάμαι ιδιαίτερα το αστείο μου με τον φύλακα όταν το MK μου έγινε επαναφορά ενώ έγραφα στο EEPROM και έκοβα το τσιπ μνήμης i2c από την πλακέτα χρησιμοποιώντας έναν τροχό κοπής. Ε... τίποτα, οδηγώ στη Μόσχα, θα το ξανακάψουμε!

;========================================= ; Έκδοση σειριακού αριθμού. σε: R0- διεύθυνση όπου είναι η σειρά με τον τύπο tablet και CRC8. ΧΡΗΣΕΙΣ: A,B,R0,R1,R2 ;================================================================== ================= DEMUL_SendSer: mov R2,#8 SS3: mov ACC,@R0 mov R1,#8 SS2: JB TouchFuck,$ ; μηδέν 1->0 RRC A ;C:=A.0; βάρδια Α; mov TouchFuck,C ;TouchFuck:=C; MOV B,#9 DJNZ B,$ ;Καθυστέρηση 20 us setb TouchFuck JNB TouchFuck,$ ;loop μέχρι 0 DJNZ R1,SS2 inc R0 DJNZ R2,SS3 ret ;================ =========================================

Αποτελέσματα.
Ως αποτέλεσμα, πήρα πολλούς εξομοιωτές. Είναι αλήθεια ότι μερικά από αυτά πρέπει ακόμα να τα θυμάστε. Αν και μερικά λειτουργούν 100%. Παραδείγματα εξομοιωτών μπορείτε να δείτε στις εικόνες.



Φωτογραφίες εξομοιωτών

Το πιο ενδιαφέρον είναι ο έλεγχος CRC, ο οποίος πραγματοποιείται από την ενδοεπικοινωνία. Θα χρειαστείτε αυτό εάν θέλετε να βάλετε το Dallas lock στον υπολογιστή σας για παράδειγμα. Ένα παράδειγμα υπολογισμού του CRC στο A89C2051 (αν και αυτός ο κωδικός θα λειτουργεί σε όλους τους μικροελεγκτές της οικογένειας 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 ;αποθήκευση συσσωρευτή PUSH B ;αποθήκευση του καταχωρητή B PUSH ACC ;αποθήκευση bits προς μετατόπιση MOV B,#8 ;ρυθμίστε τη μετατόπιση = 8 bit ; CRC_LOOP: XRL A,CRC ;υπολογίστε το CRC RRC A ;μετακινήστε το στη μεταφορά MOV A,CRC ;λάβετε την τελευταία τιμή CRC JNC ZERO ;παράβλεψη εάν δεδομένα = 0 XRL A,#18H ;ενημερώστε την τιμή CRC ; ZERO: RRC A ;τοποθετήστε το νέο CRC MOV CRC,A ;αποθηκεύστε το νέο CRC POP ACC ;λάβετε τα υπόλοιπα bit RR A ;τοποθετήστε το επόμενο bit PUSH ACC ;αποθηκεύστε τα υπόλοιπα bit DJNZ B,CRC_LOOP ;επαναλάβετε για οκτώ bit POP ACC ;εκκαθάριση της στοίβας POP B ;επαναφορά του καταχωρητή B POP ACC ;επαναφορά του συσσωρευτή RET

DO_CRC: PUSH ACC ;αποθήκευση συσσωρευτή PUSH B ;αποθήκευση του καταχωρητή B PUSH ACC ;αποθήκευση bits προς μετατόπιση MOV B,#8 ;ρυθμίστε τη μετατόπιση = 8 bit ; CRC_LOOP: XRL A,CRC ;υπολογίστε το CRC RRC A ;μετακινήστε το στη μεταφορά MOV A,CRC ;λάβετε την τελευταία τιμή CRC JNC ZERO ;παράβλεψη εάν δεδομένα = 0 XRL A,#18H ;ενημερώστε την τιμή CRC ; ZERO: RRC A ;τοποθετήστε το νέο CRC MOV CRC,A ;αποθηκεύστε το νέο CRC POP ACC ;λάβετε τα υπόλοιπα bit RR A ;τοποθετήστε το επόμενο bit PUSH ACC ;αποθηκεύστε τα υπόλοιπα bit DJNZ B,CRC_LOOP ;επαναλάβετε για οκτώ bit POP ACC ;εκκαθάριση της στοίβας POP B ;επαναφορά του καταχωρητή B POP ACC ;επαναφορά του συσσωρευτή RET

Συμπέρασμα.
Όπως μπορείτε να δείτε, τα κλειδιά ενδοεπικοινωνίας δεν είναι τόσο απλά όσο φαίνονται. Ωστόσο, η εξομοίωση τους είναι διαθέσιμη σε όποιον διαθέτει προγραμματισμό και κολλητήρι.

D.I. HALTS:
Περιπτώσεις περασμένων εποχών, θρύλοι της αρχαιότητας βαθιά ... Long - WDR! (θα είναι σαφές μόνο στους μυημένους;)))))

Προεπεξεργασμένη έκδοση ενός άρθρου από το περιοδικό Hacker

Καλό απόγευμα! Κάπως βαρέθηκα να πληρώνω 150 ρούβλια για ένα αντίγραφο του κλειδιού ενδοεπικοινωνίας και αποφάσισα να συναρμολογήσω ένα απλό, οικονομικό αντιγραφικό iButton στο Arduino. Οι τιμές για τέτοιες έτοιμες συσκευές «δαγκώνουν», αν και η λειτουργικότητά τους είναι ευρύτερη, αντιγράφουν σχεδόν τα πάντα, συμπεριλαμβανομένων των ασύρματων dongles. Ένα απλό αντίγραφο του κλειδιού iButton a la "button" μου αρκεί. Ενδιαφέρων? Παρακαλώ κάτω από «κόψτε»!

Ας ξεκινήσουμε λοιπόν! Αρχικά, "τεχνική ανάθεση", τι πρέπει να μπορεί να κάνει αυτή η συσκευή:
1) Διαβάστε το περιεχόμενο του κλειδιού, έχει ενδιαφέρον τι είναι ραμμένο εκεί πάνω.
2) Αντιγράψτε τα πλήκτρα, όσο περίεργο κι αν ακούγεται :)
3) Αναβοσβήνει το πλήκτρο "Universal". Με τη λέξη «καθολική» εννοούμε οποιοδήποτε δικό μας κλειδί, το οποίο θα καταγράφεται από προεπιλογή.

UPD. Πολύ σημαντικό!Εάν το πρώτο byte, ο οικογενειακός κωδικός, είναι 00 , για παράδειγμα 00 :12:34:56:AB:CD:EF: AA, τότε μετά το υλικολογισμικό το κλειδί θα "πεθάνει", δεν θα διαβαστεί από αυτόν τον προγραμματιστή, και πιθανώς από άλλους. Βρέθηκε από την εμπειρία, χάρη σε έναν φίλο 16 :AB:CD:EF:E0 με ένα φυσικά εσφαλμένο άθροισμα ελέγχου Ε0. Δεδομένου ότι το άθροισμα ελέγχου είναι εσφαλμένο, η ενδοεπικοινωνία αγνοεί αυτήν τη σειρά κατά την ανάγνωση. Αυτή η ενδοεπικοινωνία κατέστρεψε όλα τα επανεγγράψιμα κλειδιά, ενώ κατάλαβα τι συνέβαινε και γιατί τα δεδομένα στα πλήκτρα αλλάζουν «από μόνα τους». Ως αποτέλεσμα, δεν ήταν δυνατό να δημιουργήσω ένα αντίγραφο για αυτήν την ενδοεπικοινωνία, έπρεπε να πάω σε έναν οργανισμό εξυπηρέτησης και να παραγγείλω ένα κλειδί για 100 ρούβλια. :)


Ως αποτέλεσμα, παίρνουμε κάτι χρήσιμο στο νοικοκυριό για γελοία χρήματα, πωλούνται "κενά" για εγγραφή, αν και μπορούμε να βρούμε εκτός σύνδεσης για 30 ρούβλια το ένα, για φωτοαντιγραφικά στην αγορά για 100 - 150 ρούβλια :).
UPD.Διαβάσαμε για το ποιοι τύποι κλειδιών μπορούν να γραφτούν με αυτόν τον αντιγραφέα. Ευχαριστώ για τη βοήθεια συνάδελφε.
UPD.Εάν το κλειδί δεν είναι γραμμένο, ακολουθήστε τον σύντροφο. Σκοπεύω να αγοράσω +197 Προσθήκη στα αγαπημένα Μου άρεσε η κριτική +95 +184

Όλοι γνωρίζουν ότι οποιοσδήποτε μηχανισμός φθείρεται με την πάροδο του χρόνου και πρέπει να αλλάξει, ειδικά για στοιχεία που υπόκεινται σε συχνή σωματική καταπόνηση.

Τα ηλεκτρονικά από αυτή την άποψη είναι πιο αξιόπιστα και εάν είναι καλά προστατευμένα ηλεκτρικά, μπορεί να διαρκέσουν αρκετά.

Η απώλεια κλειδιών από μια μηχανική κλειδαριά συνδέεται συχνά με την αντικατάσταση της τελευταίας. Χάνοντας ένα ηλεκτρονικό τσιπ, αρκεί να δημιουργήσετε ένα αντίγραφό του χρησιμοποιώντας.

Πώς είναι διατεταγμένο και λειτουργεί ένας αντιγραφέας

Ποια είναι τα μοντέλα και οι τύποι αντιγραφέων κλειδιών

Όλοι οι αντιγραφείς κλειδιών ενδοεπικοινωνίας που διατίθενται στη φύση μπορούν να ταξινομηθούν σε τρεις διαφορετικούς τύπους:

  1. Προγραμματιστές για αναβοσβήσιμο πλήκτρων χωρίς επαφή tmd;
  2. Αντιγραφείς για τη δημιουργία αντιγράφων των κλειδιών ενδοεπικοινωνίας επαφής.
  3. Ένας γενικός τύπος αντιγραφέων που μπορούν να ανανεώσουν κάθε είδους τσιπ ενδοεπικοινωνίας.

Κάθε ένας από αυτούς τους τύπους συσκευών έχει τις τροποποιήσεις του.

Ανεπαφικοί αντιγραφείς

Ανάμεσά τους υπάρχουν τρεις τροποποιήσεις συσκευών.

Η πρώτη τροποποίηση περιλαμβάνει προγραμματιστές που κάνουν το πρότυπο RFID EM-Marin, HID και Indala (tmd duplicators), η δεύτερη τροποποίηση υποστηρίζει το πρότυπο Mifare, η τρίτη τροποποίηση των αντιγραφέων λειτουργεί με κλειδιά του προτύπου TECH-COM ή TKRF.

Συσκευές τύπου επαφής

Οι συσκευές παρουσιάζονται σε δύο τύπους. Ο πρώτος τύπος έχει σχεδιαστεί για να λειτουργεί με πλήκτρα τύπου επαφής Ντάλας, ο δεύτερος τύπος προγραμματιστών αντιγράφει πλήκτρα τύπου ή.

Το τσιπ του Ντάλας έχει δεκαεξαδικό κωδικό και το ψηφιακό αναβοσβήνει με έναν κωδικό τύπου πρωτοκόλλου, ο οποίος είναι μεγάλος σε μέγεθος.

Συσκευές προγραμματισμού γενικών κλειδιών

Οι πολλαπλές αντιγραφές κλειδιών ενδοεπικοινωνίας γενικής χρήσης, εκτός από τη δυνατότητα δημιουργίας αντιγράφου οποιουδήποτε ψηφιακού τσιπ, διαθέτουν μια σειρά από πρόσθετες λειτουργίες:

  • Δυνατότητα ενημέρωσης.
  • Η παρουσία βάσης μνήμης.
  • Δημιουργία κώδικα.

Λαμβάνοντας υπόψη την πρώτη λειτουργία, πρέπει να ειπωθεί ότι όταν απελευθερωθούν νέες τροποποιήσεις πλήκτρων με την αρχική κωδικοποίηση, η βάση της συσκευής προγραμματισμού μπορεί να αναβοσβήσει για αυτά τα τσιπ και θα μπορεί να δημιουργήσει αντίγραφά τους.

Η δεύτερη λειτουργία καθιστά δυνατή την κλωνοποίηση κλειδιών χωρίς το πρωτότυπο. Δηλαδή, μετά το πρώτο φλας, ο κωδικός του τσιπ απλώς γράφεται στη βάση της συσκευής και αναπαράγεται όπως απαιτείται.

Η τρίτη λειτουργία σάς επιτρέπει να αναβοσβήνουν τα κλειδιά με αρχικούς κωδικούς, για παράδειγμα, για υπαλλήλους της εταιρείας, καθένας από τους οποίους πρέπει να έχει τον δικό του προσωπικό κωδικό πρόσβασης στην κλειδαριά. Στη συνέχεια, μπορείτε να παρακολουθείτε τον αριθμό των επισκέψεων σε ένα συγκεκριμένο αντικείμενο από ένα συγκεκριμένο άτομο.

Τι χρειάζεσαι για να φτιάξεις μόνος σου ένα αντιγραφικό κλειδιών ενδοεπικοινωνίας

Όταν φτιάχνετε ένα αντιγραφικό κλειδιού με τα χέρια σας, μπορείτε να χρησιμοποιήσετε τη μονάδα Arduino ως βάση.

Η βάση στοιχείων που θα χρειαστεί για την κατασκευή της συσκευής:

  1. Ο μικροελεγκτής τύπου "Arduino Nano" είναι ο κύριος "εγκέφαλος" της συσκευής, όπου γίνεται επεξεργασία πληροφοριών και καταγραφή δεδομένων.
  2. Πλακέτα RFID RC522, η οποία λειτουργεί ως μονάδα που διαβάζει κωδικούς και ανακατευθύνει πληροφορίες στον μικροελεγκτή.
  3. Βομβητής πιεζοηλεκτρικού τύπου;
  4. Δύο στοιχεία LED για την οθόνη.
  5. Δύο αντιστάσεις 330 ohm.
  6. Τύπος μπλοκ πληκτρολογίου 4Χ4;
  7. Προσαρμογέας οθόνης υγρών κρυστάλλων τύπου I2C (LCM1602), ο οποίος λειτουργεί ως μετατροπέας LCD σε μορφή συμβατή με Arduino.
  8. Οθόνη υγρών κρυστάλλων τύπου LCD16X2BL.

Η οθόνη υγρών κρυστάλλων συνδέεται με την ομάδα επαφών του προσαρμογέα χρησιμοποιώντας δεκαέξι ακίδες. Και στις δύο μονάδες, οι επαφές είναι αριθμημένες.

Στη συνέχεια, τα καλώδια τροφοδοσίας συνδέονται στον προσαρμογέα οθόνης από τη μονάδα rf ID RC522: κόκκινο - στην επαφή VCC (+) και μαύρο - στην επαφή GND (κοινή). Τα καλώδια ελέγχου είναι κολλημένα στους ακροδέκτες SDA και SCL. Τα στοιχεία LED εγκαθίστανται παράλληλα με αντιστάσεις περιορισμού ρεύματος.

Η αρχή των πλήκτρων που αναβοσβήνουν

Τα τσιπ ενδοεπικοινωνίας, τα οποία έχουν τη μορφή ταμπλέτας και των οποίων η επιφάνεια πρέπει να εφαρμοστεί στην επαφή ενδοεπικοινωνίας, δεν περιέχουν μαγνητικά στοιχεία στο εσωτερικό τους.

Το κύκλωμα της συσκευής βασίζεται στη χρήση μη πτητικής μνήμης (με άλλα λόγια, ROM).

Σε μια τέτοια μνήμη, γράφεται μια ακολουθία χαρακτήρων ενός ψηφιακού μοναδικού κωδικού.

Η αρχή της επανεγγραφής τέτοιων κλειδιών είναι ότι το tmd duplicator διαβάζει τον κώδικα και τον αναδημιουργεί σε μια καθαρή πλατφόρμα chip.

Το σύστημα RFID βασίζεται στη μετάδοση ενός κωδικού όχι με επαφή, αλλά από μια συγκεκριμένη ραδιοσυχνότητα.

Το κύκλωμα κλειδιού περιέχει ένα κύκλωμα ταλάντωσης. Εάν είναι διεγερμένο, τα δεδομένα από τη μνήμη θα μεταδοθούν στον αναγνώστη μέσω του χώρου.

Ένα τέτοιο συναρπαστικό σήμα θα είναι ένα σήμα που προέρχεται από την κεραία της ενδοεπικοινωνίας ή της συσκευής αναπαραγωγής. Διαφορετικά, η αρχή του τρόπου αντιγραφής του κώδικα στη μνήμη, η περαιτέρω αναπαραγωγή του δεν διαφέρει από την αρχή της λειτουργίας της συσκευής επαφής.

Η μόνη διαφορά είναι ότι οι προγραμματιστές μπορούν να αποθηκεύουν και να αναπαράγουν μόνο έναν συγκεκριμένο τύπο ψηφιακού σήματος. Η εξαίρεση είναι οι καθολικές συσκευές που μπορούν να προγραμματιστούν να λειτουργούν με οποιοδήποτε τύπο ψηφιακών δεδομένων.

συμπέρασμα

Η κατασκευή τσιπ για μια ενδοεπικοινωνία με τα χέρια σας μπορεί να είναι όχι μόνο μια λύση στο πρόβλημα της απώλειας προσωπικών κλειδιών, αλλά και μια ευκαιρία να χτίσετε την επιχείρησή σας σε αυτό.

Αρχικά, μπορείτε να φτιάξετε ένα απλό φωτοαντιγραφικό κλειδιού ενδοεπικοινωνίας για τα πιο δημοφιλή "κενά".

Το πιο σημαντικό είναι ότι τέτοια κέρδη δεν απαιτούν μεγάλες αρχικές επενδύσεις και οι υπηρεσίες θα είναι πάντα σε ζήτηση, ειδικά στις μεγάλες πόλεις.

Βίντεο: Φτιάξτο μόνος σου αντιγραφέας κλειδιών ενδοεπικοινωνίας

mob_info