Reverse Engineering: perché è così importante?

Reverse Engineering

Il Reverse Engineering (ingegneria inversa – NDR) è un termine che, sempre più spesso, troviamo all’interno di articoli o libri inerenti al making. Ma di cosa si tratta realmente? Diamone una definizione e poi presentiamone un esempio per meglio comprenderne il concetto.

L’ingegnerizzazione inversa ha una definizione ben precisa: si tratta, infatti, di un insieme di analisi delle funzionalità, degli impieghi, della collocazione, dell’aspetto progettuale, geometrico e materiale di un manufatto o di un oggetto che è stato rinvenuto e del quale non si ha documentazione. Esso può essere un dispositivo, un componente elettrico, un meccanismo, oppure un software. Immaginate di passeggiare in un bosco e di rinvenire un oggetto del quale non sapete nulla. Lo portate a casa, lo mettete sul banco e iniziate a osservarlo, a smontarlo, a ripulirlo e a cercare di farlo funzionare. Ecco, se vi è già capitato di farlo, sappiate che avete fatto anche voi reverse engineering. Vediamo quindi un esempio grazie a uno dei maggiori esperti della materia: Ken Shirriff. Non sapete chi sia? Male male! Tra le altre cose, è il creatore della libreria IRemote per Arduino.

 

Reverse Engineering

 

Ken Shirriff ha rivolto la sua attenzione a una scheda progettata per UNIVAC 1004 negli anni ’60, identificando il componente insolito come una scheda logica AND-OR-INVERT con alcune caratteristiche sconosciute. Per chi non lo sapesse, L’UNIVAC 1004 era un sistema di elaborazione dati per schede perforate programmato plug-board, introdotto nel 1962 da UNIVAC. La memoria totale era di 961 caratteri (6 bit) della memoria principale. Le periferiche erano un lettore di schede (400 schede/minuto), una perforatrice (200 schede/minuto) che utilizzava schede proprietarie a 90 colonne, con fori rotondi o schede compatibili con IBM, a 80 colonne, una stampante a tamburo (400 righe/minuto) e un’unità nastro Uniservo. Il 1004 è stato anche supportato come lettore e stampante di schede remoti tramite servizi di comunicazione sincrona

“Il team IBM 1401 del Computer History Museum accumula molti componenti misteriosi da donazioni e altre fonti”, spiega Shirriff delle origini della sua ultima scheda. “Dentro una scatola, abbiamo rinvenuto questo circuito stampato piuttosto insolito. All’inizio sembrava una scheda IBM SMS (Standard Modular System), l’elemento costitutivo dei computer IBM della fine degli anni ’50 e dell’inizio degli anni ’60. Tuttavia, questa scheda è più grande, ha un cablaggio a doppia faccia, il connettore è diverso e l’etichettatura è diversa”.

 

Reverse Engineering

 

La scheda, che ha un connettore perimetrale su un lato, è stata identificata da Robert Garner come plug-in per il “Card Processor” basato su plugboard Univac 1004, in grado di eseguire programmi fino a 31 passaggi di lunghezza, “codificati” tramite l’uso di un groviglio di fili su una spina.

“La funzione della scheda non era immediatamente ovvia e avevamo varie teorie su cosa potesse fare. Per scoprirlo, ho decodificato la scheda tracciando i circuiti”, scrive Shirriff. “La scheda ha 32 diodi, che sembrano molti, oltre a resistori, transistor e condensatori. I transistor non sono transistor al silicio, ma transistor PNP al germanio”.

Ecco il risultato di un’attenta analisi: L’identificazione della scheda come una scheda logica AND-OR-INVERT, implementata in logica diodo-transistor (DTL). “Ovvero, i vari input vengono combinati in AND, i risultati AND vengono quindi combinati in OR e infine il risultato viene invertito”, spiega Shirriff. “Dopo aver tracciato la parte logica della scheda, ho notato che ha implementa un sommatore completo, oltre ad alcuni circuiti aggiuntivi come l’inverter. La scheda ha anche 4 ingressi che sono ANDed, soggetto al valore di carico. Infine, la scheda ha anche un ingresso di disabilitazione che blocca le uscite. Senza saperne di più sui circuiti, non posso determinare il ruolo di questi circuiti”.

Leggendo sia la definizione di Reverse Engineering che i vari tentativi fatti da Shirriff per arrivare a comprendere parte del funzionamento della scheda UNIVAC 1004, potreste pensare che ci siano effettive analogie tra questa pratica e il “cracking” di hardware e software. Volendo fare un parallelo con il retrogaming, sappiate che per realizzare un emulatore (software) o un sistema basato su FPGA (hardware) che ricalchi il funzionamento di una determinata macchina, è necessaria una pesante e approfondita opera di ingegneria inversa. Prima di emulare o riprodurre un’architettura hardware, infatti, bisogna capirne prima di tutto il funzionamento. Sì, ma questo non vuol dire che basti trincerarsi dietro al concetto di Reverse Engineering per commettere atti di pirateria indisturbata. La R.E. è un’operazione necessaria per comprenderne il funzionamento di una macchina o di un programma che non avete realizzato voi, tutto qui. Se lo fate per aggirare blocchi o per evitare di comprare software o hardware closed-source, state commettendo un reato.

Se volete saperne di più sul lavoro di Ken Shirriff, potete consultare il suo blog. Non ve ne pentirete!

 

Iscriviti ai nostri gruppi Telegram

Seguici per non perdere le prossime novità!

###Da sempre appassionato di tecnologia, soffro di insaziabile curiosità scientifica. Adoro sperimentare e approfondire le mie conoscenze sulle ultime novità sul mercato in termini di hardware, alta tecnologia e videogiochi. Attratto e coinvolto nella prototipazione hardware dalla piattaforma Arduino, Raspberry Pi e Nvidia Jetson.### ###Always passionate about technology, I am suffering from insatiable scientific curiosity. I love experimenting and deepening of my knowledge on the latest news on the market in terms of hardware, hi-tech and video games. Got attracted and involved in hardware prototyping by the Arduino platform, Raspberry Pi and Nvidia Jetson.###

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.