Sommario:

HackerBox 0058: Codifica: 7 passaggi
HackerBox 0058: Codifica: 7 passaggi

Video: HackerBox 0058: Codifica: 7 passaggi

Video: HackerBox 0058: Codifica: 7 passaggi
Video: Decoder Digitale Terrestre DVD-T2 Telesystem TS6815 - Nuovo digitale terrestre 2024, Luglio
Anonim
HackerBox 0058: Codifica
HackerBox 0058: Codifica

Saluti agli hacker HackerBox di tutto il mondo! Con HackerBox 0058 esploreremo la codifica delle informazioni, i codici a barre, i codici QR, la programmazione di Arduino Pro Micro, i display LCD incorporati, l'integrazione della generazione di codici a barre all'interno dei progetti Arduino, gli exploit dei dispositivi di input umano e altro ancora.

HackerBoxes è il servizio di box in abbonamento mensile per gli appassionati di elettronica e tecnologia informatica - Hardware Hackers - The Dreamers of Dreams.

C'è una grande quantità di informazioni per i membri attuali e potenziali nelle FAQ di HackerBox. Quasi tutte le e-mail di supporto non tecnico che riceviamo hanno già una risposta lì, quindi apprezziamo davvero che tu abbia dedicato qualche minuto alla lettura delle FAQ.

Forniture

Questo Instructable contiene informazioni per iniziare con HackerBox 0058. Il contenuto completo della confezione è elencato nella pagina del prodotto per HackerBox 0058, dove la confezione è anche disponibile per l'acquisto fino ad esaurimento scorte. Se desideri ricevere automaticamente un HackerBox come questo direttamente nella tua casella di posta ogni mese con uno sconto di $ 15, puoi iscriverti a HackerBoxes.com e unirti alla rivoluzione!

Un saldatore, una saldatura e strumenti di saldatura di base sono generalmente necessari per lavorare sull'HackerBox mensile. È inoltre necessario un computer per l'esecuzione di strumenti software. Dai un'occhiata all'HackerBox Deluxe Starter Workshop per una serie di strumenti di base e una vasta gamma di attività introduttive ed esperimenti.

Soprattutto, avrai bisogno di un senso di avventura, spirito hacker, pazienza e curiosità. Costruire e sperimentare con l'elettronica, sebbene molto gratificante, può essere complicato, impegnativo e persino frustrante a volte. L'obiettivo è il progresso, non la perfezione. Quando persisti e ti godi l'avventura, una grande soddisfazione può derivare da questo hobby. Fai ogni passo lentamente, presta attenzione ai dettagli e non aver paura di chiedere aiuto

Passaggio 1: codifica

Codifica
Codifica

La comunicazione, la registrazione o la manipolazione delle informazioni richiede la codifica. Poiché l'elaborazione, l'archiviazione e la comunicazione delle informazioni sono l'essenza dell'elettronica moderna, dobbiamo preoccuparci di molte codifiche.

Come esempio molto semplice di codifica, si potrebbe rappresentare quanti occhi o orecchie hanno alzando due dita, o usando i numeri "2" o "][" o usando le parole "due" o "dos" o " Ehm" o "zwei". In realtà non è così semplice, vero? La codifica utilizzata nel linguaggio umano, in particolare per quanto riguarda argomenti come le emozioni o l'astrazione, può diventare molto complessa.

FISICA

Sì, tutto inizia sempre con la fisica. Nei sistemi elettronici, iniziamo rappresentando il più semplice dei valori tramite segnali elettrici, solitamente livelli di tensione. Ad esempio, ZERO può essere rappresentato come massa (circa 0V) e UNO come circa 5V (o 3,3V, ecc.) per creare un sistema binario di zero e uno. Anche con solo ZERO e ONE, c'è spesso ambiguità da risolvere. Quando si preme il pulsante, quello è ZERO o UNO? ALTO o BASSO? Il segnale di selezione del chip è "attivo alto" o "attivo basso"? A che ora può essere letto un segnale e per quanto tempo sarà valido? Nei sistemi di comunicazione si parla di "codifica di linea".

A questo livello più basso, le rappresentazioni riguardano in gran parte la fisica del sistema. Quali tensioni può supportare, quanto velocemente può passare, come si accende e si spegne il laser, come i segnali di informazione modulano una portante a radiofrequenza, qual è la larghezza di banda del canale, o anche come le concentrazioni di ioni generano potenziali d'azione in un neurone. Per l'elettronica, queste informazioni sono spesso fornite nelle imponenti tabelle della scheda tecnica del produttore.

Il livello fisico (PHY) o livello 1 è il primo e il livello più basso nel modello OSI a sette livelli di reti di computer. Il livello fisico definisce i mezzi per trasmettere bit grezzi su un collegamento dati fisico che collega i nodi di rete. Il livello fisico fornisce un'interfaccia elettrica, meccanica e procedurale al mezzo di trasmissione. Le forme e le proprietà dei connettori elettrici, le frequenze su cui trasmettere, il codice di linea da utilizzare e parametri simili di basso livello, sono specificati dal livello fisico.

NUMERI

Non possiamo fare molto solo con UNO e ZERO, altrimenti ci saremmo evoluti per "parlare" sbattendo le palpebre l'un l'altro. I valori binari sono comunque un ottimo inizio. Nei sistemi informatici e di comunicazione, combiniamo cifre binarie (bit) in byte e "parole" contenenti, ad esempio, 8, 16, 32 o 64 bit.

In che modo queste parole binarie corrispondono a numeri o valori? In un semplice byte a 8 bit, 00000000 è generalmente zero e 11111111 è generalmente 255 per fornire da 2 a 8 o 256 valori diversi. Ovviamente non si ferma qui, perché ci sono molti più di 256 numeri e non tutti i numeri sono interi positivi. Ancor prima dei sistemi di calcolo, abbiamo rappresentato valori numerici utilizzando diversi sistemi numerici, linguaggi, basi e impiegando tecniche come numeri negativi, numeri immaginari, notazione scientifica, radici, rapporti e scale logaritmiche di varie basi diverse. Per i valori numerici nei sistemi informatici, dobbiamo fare i conti con problemi come l'epsilon della macchina, l'endianness, le rappresentazioni in virgola fissa e in virgola mobile.

TESTO(CETERA)

Oltre a rappresentare numeri o valori, i byte binari e le parole possono rappresentare lettere e altri simboli di testo. La forma più comune di codifica del testo è l'American Standard Code for Information Interchange (ASCII). Ovviamente vari tipi di informazioni possono essere codificate come testo: un libro, questa pagina web, un documento xml.

In alcuni casi, come messaggi di posta elettronica o Usenet, potremmo voler codificare tipi di informazioni più ampi (come file binari generali) come testo. Il processo di uuencoding è una forma comune di codifica da binario a testo. Puoi anche "codificare" le immagini come testo: ASCII Art o meglio ancora ANSI Art.

TEORIA DEI CODICI

La teoria dei codici è lo studio delle proprietà dei codici e della loro rispettiva idoneità per applicazioni specifiche. I codici vengono utilizzati per la compressione dei dati, la crittografia, il rilevamento e la correzione degli errori, la trasmissione e l'archiviazione dei dati. I codici sono studiati da diverse discipline scientifiche allo scopo di progettare metodi di trasmissione dati efficienti e affidabili. Le discipline di esempio includono la teoria dell'informazione, l'ingegneria elettrica, la matematica, la linguistica e l'informatica.

COMPRESSIONE DEI DATI (rimozione della ridondanza)

La compressione dei dati, la codifica della sorgente o la riduzione della velocità in bit è il processo di codifica delle informazioni utilizzando meno bit rispetto alla rappresentazione originale. Qualsiasi compressione particolare è con perdita o senza perdita. La compressione senza perdite riduce i bit identificando ed eliminando la ridondanza statistica. Nessuna informazione viene persa nella compressione senza perdita di dati. La compressione con perdita riduce i bit rimuovendo le informazioni non necessarie o meno importanti.

I metodi di compressione Lempel-Ziv (LZ) sono tra gli algoritmi più popolari per l'archiviazione senza perdita di dati. A metà degli anni '80, in seguito al lavoro di Terry Welch, l'algoritmo Lempel–Ziv–Welch (LZW) divenne rapidamente il metodo di scelta per la maggior parte dei sistemi di compressione generici. LZW è utilizzato in immagini GIF, programmi come PKZIP e dispositivi hardware come i modem.

Utilizziamo costantemente dati compressi per DVD, streaming di video MPEG, audio MP3, grafica JPEG, file ZIP, tar ball compressi e così via.

RILEVAMENTO E CORREZIONE ERRORI (aggiunta di ridondanza utile)

Il rilevamento e la correzione degli errori o il controllo degli errori sono tecniche che consentono la consegna affidabile di dati digitali su canali di comunicazione inaffidabili. Molti canali di comunicazione sono soggetti a rumore di canale e quindi possono essere introdotti errori durante la trasmissione dalla sorgente a un ricevitore. Il rilevamento degli errori è il rilevamento di errori causati da rumore o altri disturbi durante la trasmissione dal trasmettitore al ricevitore. La correzione degli errori è il rilevamento degli errori e la ricostruzione dei dati originali e privi di errori.

Il rilevamento degli errori viene eseguito più semplicemente utilizzando la ripetizione della trasmissione, i bit di parità, i checksum, i CRC o le funzioni hash. Un errore di trasmissione può essere rilevato (ma di solito non corretto) dal destinatario che può quindi richiedere la ritrasmissione dei dati.

I codici di correzione degli errori (ECC) vengono utilizzati per controllare gli errori nei dati su canali di comunicazione inaffidabili o rumorosi. L'idea centrale è che il mittente codifica il messaggio con informazioni ridondanti sotto forma di ECC. La ridondanza consente al ricevitore di rilevare un numero limitato di errori che possono verificarsi in qualsiasi punto del messaggio e spesso di correggere questi errori senza ritrasmissione. Un esempio semplicistico di ECC è trasmettere ogni bit di dati 3 volte, che è noto come codice di ripetizione (3, 1). Anche se vengono trasmessi solo 0, 0, 0 o 1, 1, 1, gli errori all'interno del canale rumoroso possono presentare al ricevitore uno qualsiasi degli otto possibili valori (tre bit). Ciò consente di correggere un errore in uno qualsiasi dei tre campioni mediante "voto di maggioranza" o "voto democratico". La capacità di correzione di questo ECC sta quindi nel correggere 1 bit di errore in ogni tripletta trasmessa. Sebbene semplice da implementare e ampiamente utilizzata, questa ridondanza modulare tripla è un ECC relativamente inefficiente. Codici ECC migliori in genere esaminano le ultime decine o anche le ultime centinaia di bit ricevuti in precedenza per determinare come decodificare l'attuale piccola manciata di bit.

Quasi tutti i codici a barre bidimensionali come QR Code, PDF-417, MaxiCode, Datamatrix e Aztec Code utilizzano Reed–Solomon ECC per consentire una lettura corretta anche se una parte del codice a barre è danneggiata.

CRITTOGRAFIA

La codifica crittografica è progettata attorno a ipotesi di durezza computazionale. Tali algoritmi di codifica sono intenzionalmente difficili da violare (in senso pratico) da qualsiasi avversario. È teoricamente possibile violare un tale sistema, ma è impossibile farlo con qualsiasi mezzo pratico noto. Questi schemi sono quindi definiti computazionalmente sicuri. Esistono schemi teoricamente sicuri dell'informazione che non possono essere violati anche con una potenza di calcolo illimitata, come l'one-time pad, ma questi schemi sono più difficili da usare nella pratica rispetto ai migliori meccanismi teoricamente infrangibili ma computazionalmente sicuri.

La cifratura tradizionale si basa su una cifratura a trasposizione, che riorganizza l'ordine delle lettere in un messaggio (ad esempio, "ciao mondo" diventa "ehlol owrdl" in uno schema di riarrangiamento banalmente semplice) e cifrari a sostituzione, che sostituiscono sistematicamente lettere o gruppi di lettere con altre lettere o gruppi di lettere (ad esempio, 'fly at once' diventa 'gmz bu podf' sostituendo ogni lettera con quella successiva dell'alfabeto latino). Le versioni semplici di entrambi non hanno mai offerto molta riservatezza da parte di avversari intraprendenti. Un primo cifrario a sostituzione era il cifrario di Cesare, in cui ogni lettera nel testo in chiaro era sostituita da una lettera con un numero fisso di posizioni più in basso nell'alfabeto. ROT13 è un semplice cifrario a sostituzione di lettere che sostituisce una lettera con la 13a lettera dopo di essa, nell'alfabeto. È un caso speciale del cifrario di Cesare. Provalo qui!

Passaggio 2: codici QR

Codici QR
Codici QR

I codici QR (wikipedia) o "codici di risposta rapida" sono un tipo di codice a barre a matrice o bidimensionale progettato per la prima volta nel 1994 per l'industria automobilistica in Giappone. Un codice a barre è un'etichetta ottica leggibile da una macchina che contiene informazioni sull'articolo a cui è attaccata. In pratica, i codici QR contengono spesso dati per un localizzatore, identificatore o tracker che punta a un sito Web o un'applicazione. Un codice QR utilizza quattro modalità di codifica standard (numerica, alfanumerica, byte/binario e kanji) per archiviare i dati in modo efficiente.

Il sistema Quick Response è diventato popolare al di fuori dell'industria automobilistica grazie alla sua rapida leggibilità e alla maggiore capacità di memorizzazione rispetto ai codici a barre UPC standard. Le applicazioni includono il monitoraggio dei prodotti, l'identificazione degli articoli, il monitoraggio dei tempi, la gestione dei documenti e il marketing generale. Un codice QR è costituito da quadrati neri disposti in una griglia quadrata su uno sfondo bianco, che può essere letto da un dispositivo di imaging come una fotocamera ed elaborato utilizzando la correzione degli errori Reed-Solomon fino a quando l'immagine può essere interpretata in modo appropriato. I dati richiesti vengono quindi estratti dai modelli presenti nelle componenti orizzontali e verticali dell'immagine.

Gli smartphone moderni di solito leggono automaticamente i codici QR (e altri codici a barre). Basta aprire l'app della fotocamera, dirigere la fotocamera sul codice a barre e attendere un secondo o due affinché l'app della fotocamera indichi che si è bloccata sul codice a barre. L'app a volte visualizzerà il contenuto del barcone istantaneamente, ma di solito l'app richiederà la selezione della notifica del codice a barre per visualizzare qualsiasi informazione sia stata estratta dal codice a barre. Durante il mese di giugno 2011, 14 milioni di utenti mobili americani hanno scansionato un codice QR o un codice a barre.

Hai usato il tuo smartphone per leggere i messaggi codificati all'esterno di HackerBox 0058?

Video interessante: puoi inserire un intero gioco in un codice QR?

I veterani potrebbero ricordare la Cauzin Softstrip dalle riviste di computer degli anni '80. (video dimostrativo)

Passaggio 3: Arduino Pro Micro 3.3V 8MHz

Arduino Pro Micro 3.3V 8MHz
Arduino Pro Micro 3.3V 8MHz

Arduino Pro Micro è basato sul microcontrollore ATmega32U4 che ha un'interfaccia USB integrata. Ciò significa che non esiste FTDI, PL2303, CH340 o qualsiasi altro chip che funge da intermediario tra il computer e il microcontrollore Arduino.

Suggeriamo prima di provare il Pro Micro senza saldare i pin in posizione. È possibile eseguire la configurazione e il test di base senza utilizzare i pin dell'intestazione. Inoltre, ritardare la saldatura del modulo fornisce una variabile in meno di cui eseguire il debug in caso di complicazioni.

Se non hai l'IDE Arduino installato sul tuo computer, inizia scaricando il modulo IDE arduino.cc. AVVERTENZA: assicurarsi di selezionare la versione a 3,3 V in Strumenti > Processore prima di programmare Pro Micro. Avere questo set per 5V funzionerà una volta e poi sembrerà che il dispositivo non si connetta mai al tuo PC finché non segui le istruzioni "Ripristina su Bootloader" nella guida discussa di seguito, il che può essere un po' complicato.

Sparkfun ha un'ottima guida Pro Micro Hookup. La Guida ai collegamenti ha una panoramica dettagliata della scheda Pro Micro e quindi una sezione per "Installazione: Windows" e una sezione per "Installazione: Mac e Linux". Segui le istruzioni nella versione appropriata di queste istruzioni di installazione per configurare il tuo IDE Arduino per supportare Pro Micro. Di solito iniziamo a lavorare con una scheda Arduino caricando e/o modificando lo sketch Blink standard. Tuttavia, il Pro Micro non include il solito LED sul pin 13. Fortunatamente, possiamo controllare i LED RX/TX. Sparkfun ha fornito un piccolo schizzo per dimostrare come. Questo è nella sezione della Guida ai collegamenti intitolata "Esempio 1: Blinkies!" Verifica di essere in grado di compilare e programmare questo Blinkies! esempio sul Pro Micro prima di andare avanti.

Una volta che tutto sembra funzionare per programmare il Pro Micro, è il momento di saldare con cura i pin dell'intestazione sul modulo. Dopo la saldatura, testare di nuovo attentamente la scheda.

Cordiali saluti: grazie al suo ricetrasmettitore USB integrato, Pro Micro può essere facilmente utilizzato per emulare un dispositivo di interfaccia umana (HID) come una tastiera o un mouse e giocare con l'iniezione di tasti.

Passaggio 4: codici QR sul display LCD a colori

Codici QR su display LCD a colori
Codici QR su display LCD a colori

Il display LCD dispone di 128 x 160 pixel a colori e misura 1,8 pollici sulla diagonale. Il chip driver ST7735S (scheda tecnica) può essere interfacciato da quasi tutti i microcontrollori utilizzando un bus SPI (Serial Peripheral Interface). L'interfaccia è specificata per la segnalazione e l'alimentazione a 3,3V.

Il modulo LCD può essere collegato direttamente al Pro Micro da 3,3 V utilizzando 7 cavi jumper FF:

LCD----Pro Micro

GND----GND VCC----VCC SCL----15 SDA----16 RES----9 DC-----8 CS-----10 BL----- Non connesso

Questa specifica assegnazione dei pin consente agli esempi di libreria di funzionare per impostazione predefinita.

La libreria denominata "Adafruit ST7735 e ST7789" può essere trovata nell'IDE di Arduino utilizzando il menu Strumenti > Gestisci librerie. Durante l'installazione, il gestore della libreria suggerirà alcune librerie dipendenti che vanno con quella libreria. Lascia che installi anche quelli.

Una volta installata la libreria, apri File > Esempi > Libreria Adafruit ST7735 e ST7789 > graphicstest

Compila e carica graphicstest. Genererà una demo grafica sul display LCD, ma con alcune righe e colonne di "pixel rumorosi" sul bordo del display.

Questi "pixel rumorosi" possono essere corretti modificando la funzione di inizializzazione TFT utilizzata nella parte superiore della funzione di configurazione (void).

Commenta la riga di codice:

tft.initR(INITR_BLACKTAB);

E decommenta la riga un paio di righe più in basso:

tft.initR(INITR_GREENTAB);

Riprogramma la demo e tutto dovrebbe apparire a posto.

Ora possiamo usare l'LCD per visualizzare i codici QR

Torna al menu IDE di Arduino Strumenti > Gestisci librerie.

Individua e installa la libreria QRCode.

Scarica lo sketch QR_TFT.ino allegato qui.

Compila e programma QR_TFT in ProMicro e verifica se puoi utilizzare l'app della fotocamera del tuo telefono per leggere il codice QR generato sul display LCD.

Alcuni progetti che utilizzano la generazione di codici QR come ispirazione

Controllo di accesso

QR Clock

Passaggio 5: cavo piatto flessibile

Cavo piatto flessibile
Cavo piatto flessibile

Un cavo piatto flessibile (FFC) è una qualsiasi varietà di cavo elettrico piatto e flessibile, con conduttori piatti solidi. Un FFC è un cavo formato da o simile a un circuito stampato flessibile (FPC). I termini FPC e FFC sono talvolta usati in modo intercambiabile. Questi termini si riferiscono generalmente a un cavo piatto estremamente sottile che si trova spesso in applicazioni elettroniche ad alta densità come laptop e telefoni cellulari. Sono una forma miniaturizzata di cavo a nastro che di solito consiste in una base di film plastico piatto e flessibile, con più conduttori metallici piatti legati a una superficie.

Gli FFC sono disponibili in una varietà di passi dei pin con 1,0 mm e 0,5 mm come due opzioni comuni. La scheda breakout FPC inclusa ha tracce per entrambi questi passi, uno su ciascun lato del PCB. Viene utilizzato solo un lato del PCB a seconda del passo desiderato, in questo caso 0,5 mm. Assicurarsi di utilizzare la numerazione dei pin dell'intestazione stampata sullo stesso lato da 0,5 mm del PCB. La numerazione dei pin sul lato da 1,0 mm non corrisponde e viene utilizzata per un'applicazione diversa.

I connettori FFC sia sul breakout che sullo scanner di codici a barre sono connettori ZIF (forza di inserimento zero). Ciò significa che i connettori ZIF hanno un cursore meccanico che viene aperto incernierato prima dell'inserimento dell'FFC e quindi chiuso incernierato per serrare il connettore sull'FFC senza esercitare forza di inserimento sul cavo stesso. Due cose importanti da notare su questi connettori ZIF:

1. Sono entrambi "contatto inferiore", il che significa che i contatti metallici sull'FFC devono essere rivolti verso il basso (verso il PCB) quando inseriti.

2. Il cursore incernierato sul breakout si trova sulla parte anteriore del connettore. Ciò significa che l'FFC andrà sotto/attraverso il cursore incernierato. Al contrario, il cursore incernierato sullo scanner di codici a barre si trova sul retro del connettore. Ciò significa che l'FFC entrerà nel connettore ZIF dal lato opposto e non attraverso il cursore incernierato.

Tieni presente che altri tipi di connettori ZIF FFC/FPC hanno cursori laterali rispetto agli slider incernierati che abbiamo qui. Invece di incernierarsi su e giù, i cursori laterali scivolano dentro e fuori all'interno del piano del connettore. Osservare sempre attentamente prima di utilizzare per la prima volta un nuovo tipo di connettore ZIF. Sono piuttosto piccoli e possono essere facilmente danneggiati se forzati al di fuori della loro portata o piano di movimento previsto.

Passaggio 6: scanner di codici a barre

Scanner di codici a barre
Scanner di codici a barre

Una volta che lo scanner di codici a barre e il breakout FPC sono collegati tramite il cavo piatto flessibile (FFC), è possibile utilizzare cinque cavi jumper femmina per collegare il PCB breakout all'Arduino Pro Micro:

FPC ---- Pro Micro

3------GND 2------VCC 12-----7 4------8 5------9

Una volta connesso, programma lo sketch barscandemo.ino nel Pro Micro, apri il monitor seriale e scansiona tutto! Può essere sorprendente quanti oggetti nelle nostre case e nei nostri uffici abbiano codici a barre. Potresti anche conoscere qualcuno con un tatuaggio con codice a barre.

Il manuale dello scanner di codici a barre allegato contiene codici che possono essere scansionati per configurare il processore integrato nello scanner.

Passaggio 7: hackerare il pianeta

Hackera il pianeta
Hackera il pianeta

Ci auguriamo che l'avventura di HackerBox di questo mese nell'elettronica e nella tecnologia informatica ti stia godendo. Raggiungi e condividi il tuo successo nei commenti qui sotto o su altri social media. Inoltre, ricorda che puoi inviare un'e-mail a [email protected] in qualsiasi momento se hai una domanda o hai bisogno di aiuto.

Qual è il prossimo? Unisciti alla Rivoluzione. Vivi l'hackLife. Ricevi ogni mese una bella scatola di attrezzatura hackerabile direttamente nella tua casella di posta. Naviga su HackerBoxes.com e iscriviti al tuo abbonamento HackerBox mensile.

Consigliato: