Sommario:

Cryptap: una serratura per porte basata sul ritmo: 5 passaggi
Cryptap: una serratura per porte basata sul ritmo: 5 passaggi

Video: Cryptap: una serratura per porte basata sul ritmo: 5 passaggi

Video: Cryptap: una serratura per porte basata sul ritmo: 5 passaggi
Video: 💰 CryptoTab ¿Qué es y como funciona? Tutorial Agosto 2023 | Opinión usuario ¿Es fiable y legal? 💰 2024, Dicembre
Anonim
Cryptap: una serratura per porte basata sul ritmo
Cryptap: una serratura per porte basata sul ritmo
Cryptap: una serratura per porte basata sul ritmo
Cryptap: una serratura per porte basata sul ritmo
Cryptap: una serratura per porte basata sul ritmo
Cryptap: una serratura per porte basata sul ritmo

Ispirato da diversi meccanismi di sblocco delle porte che ho visto su hackaday.com, ho deciso di crearne uno per conto mio. Questo ha un'interfaccia a due pulsanti; uno per iniziare e terminare l'invio della password e uno per toccare effettivamente il ritmo che è la tua password. C'è anche una luce di stato. Sono stato in grado di costruirlo in modo davvero economico utilizzando parti che avevo recuperato negli ultimi mesi. Le uniche cose per cui ho dovuto pagare erano il microcontrollore stesso, che costava $ 21 (https://www.pjrc.com/teensy/), e alcuni cavi per appendere quadri che avevo prima.

È molto divertente toccare il tema di Star Wars o qualcosa per entrare nella mia stanza. Ora, non devo preoccuparmi di chiudermi di nuovo fuori dalla mia stanza! Inoltre, si sente bene e geek.

Passaggio 1: parti e strumenti

Parti e strumenti
Parti e strumenti
Parti e strumenti
Parti e strumenti

Ho scelto il Teensy perché questo è il mio primo microcontrollore e non ho ancora un programmatore. Il Teensy richiede solo un cavo USB A-miniB e un software gratuito da installare, compatibile con Mac/Windows/Linux. Inoltre, è davvero facile caricare il file esadecimale; basta compilare e premere il pulsante sul Teensy.

Il costo di questo progetto per me è stato di 21 dollari, più il filo per appendere i quadri. Parti dalla strada provenivano da una caffettiera (relè, LED, condensatore) e da un router (LED, jack modulare, jack di alimentazione, condensatori). Campioni gratuiti erano il regolatore, i pulsanti e l'interruttore a 5 volt 7805. Ho anche trovato molte cose nella scatola delle "parti rotte" nel mio laboratorio EE: connettori e cavi a banana, fili, il driver sn754410, un'intestazione a quattro pin e resistori. Avevo un caricatore per laptop in più in giro che usavo per l'alimentazione e un cavo modem Apple la cui linguetta era rotta. Altro hardware: una piastra a muro. Ho usato una pistola per colla a caldo, un saldatore, una lima ad ago e un trapano elettrico, che sono piuttosto standard. La cosa più insolita che ho usato è stato uno strumento di presa lungo e flessibile.

Passaggio 2: hardware preesistente

Hardware preesistente
Hardware preesistente
Hardware preesistente
Hardware preesistente
Hardware preesistente
Hardware preesistente
Hardware preesistente
Hardware preesistente

Sono stato molto fortunato che fosse già installato così tanto. La mia stanza è accessibile tramite ADA, e c'erano già vari tubi, scatole elettriche e un apriporta elettrico. Rimuovendo lo sciopero della porta per curiosità, ho scoperto che non era collegato. C'era un tubo dallo sciopero della porta a una piastra a muro vuota all'interno della mia stanza, e un altro tubo da lì a una piastra a muro vuota all'esterno.

Lo sciopero della porta dice che ha bisogno di 24 V @ 3 A per funzionare, ma sono riuscito a cavarmela con un alimentatore da 19 V, 7,9 A che avevo. Lo sciopero della porta era polarizzato, quindi assicurati di avere la polarità corretta!

Passaggio 3: circuiti

circuiti
circuiti
circuiti
circuiti
circuiti
circuiti
circuiti
circuiti

Per controllare lo sciopero della porta, ho usato il relè che ho trovato nella caffettiera. Questo relè aveva bisogno di più di 5 V TTL per pilotarlo, quindi sn754410 è stato utilizzato per tradurre TTL in 19 V, che ha guidato il relè. L'sn754410 è in realtà un driver quad half-H, quindi stavo sprecando 3/4 del chip, ma non avevo transistor di potenza, quindi è quello che ho usato.

Il chip sn754410 ha due pin VCC, uno per 5V, l'altro per qualsiasi voltaggio vuoi che venga fuori, che per me era 19V. È un chip davvero fantastico. Puoi usarlo per pilotare direttamente motori e relè, perché può commutare 1A per quarto di chip e ha diodi di protezione integrati. Dai un'occhiata alla scheda tecnica. Nel mio circuito, ho collegato l'SN754410 direttamente al pin di uscita del mio Teensy. I pulsanti sono collegati come active-low, che è molto comune per i microcontrollori. Sono direttamente collegati al Teensy, il che significa che devo fare l'antirimbalzo nel software. La spia di stato è collegata al Teensy tramite un resistore da 1K ohm; niente di speciale. Il circuito funzionava senza condensatori, ma li ho inseriti comunque per ogni evenienza. Ci sono cappucci di protezione su entrambi i binari di alimentazione da 19 V e 5 V a terra. Durante la programmazione di Teensy, 5V provenivano dall'USB, ma quando funziona da solo, l'alimentazione proviene dal power brick del laptop. Quando ho collegato il regolatore 7805 direttamente a 19V, è diventato DAVVERO caldo, quindi ho inserito una rete di resistori per limitare la tensione e la corrente in ingresso al regolatore. Questo era un kludge, ma ora tutto è a una temperatura gestibile.

Passaggio 4: cablarlo insieme

Cablandolo insieme
Cablandolo insieme
Cablandolo insieme
Cablandolo insieme

Il Teensy non era un problema. Viene fornito con pin, quindi puoi collegarlo direttamente alla breadboard.

Ho deciso di codificare a colori i fili per l'attacco della porta con cavi a banana rosso (+) e nero (-) dalla scatola delle parti rotte del laboratorio. C'erano alcune spine tagliate dai loro fili, quindi ho rimosso un po' di plastica per esporre un punto di saldatura. Mi piace molto il modo in cui le spine a banana del laboratorio possono collegarsi l'una all'altra. Ho usato il cavo telefonico di Apple per collegare i pulsanti e la spia di stato fuori dalla stanza al Teensy all'interno. Dato che un lato era rotto, ho tagliato quell'estremità e saldato l'intestazione a quattro pin, sigillandola con la colla a caldo. Questo si è collegato bene alla mia breadboard. Il lato su cui ho lasciato la spina è andato nel jack modulare che ho recuperato dal router. Sono stati utilizzati tutti e quattro i fili (GND, spia di stato, pulsante di avvio/arresto, pulsante di codice). Nel caso non l'avessi notato, mi piacciono le spine e i connettori. Il power brick collegato al jack di alimentazione che ho rimosso dal router. Infilare i cavi attraverso i tubi a muro non è stato troppo difficile, a causa della cosa flessibile dell'afferratrice. Questo mi ha davvero salvato la giornata.

Passaggio 5: codice

Codice
Codice
Codice
Codice

Ho provato a commentare il mio codice. Tieni presente che questo è un software 1.0, il che significa che non è esente da bug.## FUNZIONAMENTO ## 1. Premere il pulsante di avvio/arresto per segnalare che si è pronti per iniziare l'immissione del codice. La spia di stato inizia a lampeggiare lentamente. 2. Tocca il tuo codice sul pulsante del codice. La spia di stato lampeggerà a 120 BPM, quindi puoi usarla come metronomo se lo desideri. Tuttavia, il programma cryptap misurerà le lunghezze degli impulsi l'una rispetto all'altra in modo proporzionale, quindi puoi anche usare il tuo tempo. Assicurati solo di essere abbastanza preciso! 3. Al termine dell'immissione del codice, premere nuovamente il pulsante di avvio/arresto. Il programma deciderà quindi se farti entrare. Dato che gli umani non sono dei cronometristi molto precisi (il tuo non lo è davvero), ho impostato il rapporto di tolleranza a +/- 30%. Ciò significa che le lunghezze dei battiti possono essere imprecise di quella quantità e comunque passare l'adunata. Questo è abbastanza buono per distinguere tra brani abbastanza simili. C'è una piccola quantità di sovrapposizione difficile da raggiungere tra i battiti di lunghezza doppia e tripla, ma il codice è ancora piuttosto difficile da decifrare. Per sbloccare la porta, le battute devono essere nelle giuste proporzioni tra loro (+/- il rapporto di tolleranza) e il numero di battute deve essere corretto. Se viene inserita una password non valida, il programma attende alcuni secondi ignorando qualsiasi input dell'utente. Farà anche lampeggiare rapidamente la spia di stato. Se viene inserito il codice corretto, la spia di stato si accenderà in modo fisso e la porta si sbloccherà per 8 secondi.## CONFIGURAZIONE UTENTE ## La chiave è memorizzata in un array come questo: #define keylength 5 const int key = { 2, 1, 3, 3, 3}; // "Tanti auguri a te" L'array memorizza la quantità di tempo che trascorre TRA i battiti. Quindi, se la tua password ha SEI note come "Tanti auguri a te", dovrebbero esserci CINQUE elementi nell'array. Se la tua password è davvero lunga e hai più di 16 battute, (davvero difficile, non te lo consiglio), devi aumentare il numero definito in questa riga: #define inputCodeLength 16## IL RESTO DEL CODICE # # Ero curioso degli interrupt, quindi ho fatto in modo che i miei pulsanti attivassero gli interrupt. Per rendere questi interrupt facili da usare, ho fatto controllare ai miei gestori di interrupt alcuni puntatori a funzione. Se il puntatore non è impostato su NULL, viene richiamata la funzione a cui punta. Questi vengono impostati con le varie funzioni di "impostazione della modalità" all'interno di cryptap.c. Ho fatto uno sforzo per evitare il buffer overflow impostando un numero massimo di impulsi immessi. Se viene immesso il numero massimo di impulsi, il programma avvia immediatamente l'analisi della password e decide se sbloccare la porta. Spero che i miei commenti nel codice aiutino. ## BUG ## Ho provato a rimuovere il codice di debug USB, ma se lo faccio il codice non funzionerà. Quindi, ho lasciato in usb_init() e le varie istruzioni print(). Apprezzerei se qualcuno potesse rimuoverli e far funzionare ancora il programma. Ancora meglio se possono spiegare perché non ha funzionato per me. Subito dopo essere stato programmato, il Teensy a volte non accetta l'inserimento del codice. Per risolvere questo problema, spegnere e riaccendere il circuito.

Consigliato: