Sniffing su RS232: come si spiano le connessioni seriali

Lo standard RS232 identifica una metodologia asincrona di comunicazione attraverso quelli che noi definiamo DTE, ovvero Data Terminal Equipment (che possono essere computer, stampanti ma anche tastiere, e così via), ed i DCE, ovvero Data Communication Equipment (router, modem, etc.). Questo modo di comunicare ha perso il suo fascino iniziale oggi, tuttavia, risulta ancora piuttosto utile quando ci siano delle comunicazioni di tipo peer to peer da effettuare. In questo articolo ci proponiamo di sondare le caratteristiche di uno sniffer seriale, ovvero capire meglio come realizzarlo e programmarlo, e nello stesso tempo come funziona ed a cosa dobbiamo fare attenzione se vogliamo avere successo.

Introduzione

La struttura di questo protocollo prevede due linee di dati per ciascun canale. Una di queste viene utilizzata per trasmettere dati mentre l'altra per effettuare la ricezione (ovvero stiamo parlando di Tx ed Rx). Per via del fatto che queste due linee sono separate, la comunicazione che avviene grazie a questo protocollo è di tipo full duplex. Ciò vuol dire che i dati possono essere inviati contemporaneamente e che il protocollo permette sia la ricezione sia l'invio anche nello stesso momento, il che lo rende un protocollo più interessante di tanti altri che permettono solo comunicazioni di tipo half duplex (ovvero, protocolli in cui o si trasmette o si riceve, ma mai le due cose contemporaneamente!). I sistemi di questo tipo sono quelli dei dispositivi configurati come master-slave, ovvero sistemi in cui un dispositivo invia comandi e richiede all'altro di rispondere. In questo tipo di sistemi, o configurazioni, lo slave non invia dati che non siano stati richiesti ma solo risposte. Questo vuol dire che lo slave non inizierà mai la comunicazione. Il fatto che la maggior parte delle comunicazioni su protocollo RS232 sia effettuata in half-duplex può essere molto utile se il flusso di dati deve essere controllato (e qui cominceremo ad avvicinarci a quello che vogliamo fare), perché una comunicazione di tipo half-duplex può essere facilmente controllata grazie all'utilizzo di un computer che abbia semplicemente una porta seriale attaccata. Questa porta serve ad ascoltare, contemporaneamente, sulle due linee ma non ci sarà alcuna "confusione" tra i dati perché soltanto una linea per volta vedrà transitare i dati. Questo tipo di comunicazione può essere, quindi, spiato (monitorato) con un semplice software che faccia l'emulazione del terminale (HyperTerminal) che si trova all'interno del sistema operativo Windows. Quando, invece, siamo nella situazione in cui la comunicazione dovesse essere full duplex, non è esattamente così semplice. Non è possibile connettersi ad entrambe le linee contemporaneamente ed "ascoltarle". In questa situazione c'è la necessità di separare le porte e le comunicazioni grazie all'utilizzo del computer. Analogamente, sarà necessario disporre di un software configurato da sniffer e che sia capace di portare in uscita i dati sia sulla seconda porta sia su di un dispositivo che vogliamo utilizzare per la visualizzazione del traffico (ad esempio un monitor piuttosto che un hard disk).

Comunicazioni half-duplex

Cominciamo con il primo caso, certamente più semplice. Come dicevamo, non è particolarmente difficile monitorare un traffico RS232 half-duplex. Tutto ciò di cui si ha bisogno in questo caso è un pc (o valida alternativa!) e due dispositivi. Per fare questo, come mostrato nella prossima Figura 1, avremo due connettori di tipo DB9 connessi tra loro ed il computer (o qualunque altra cosa sia) connesso al cavo che effettui semplicemente la ricezione dei dati. Questo vuol dire che se i due dispositivi cominciano a parlare contemporaneamente, l'informazione monitorata risulterà confusa. Nella maggior parte delle situazioni il protocollo di comunicazione lavora effettivamente in maniera half-duplex, nel qual caso non avremmo assolutamente problemi di lettura o di comprensione del messaggio.

Immagine tratta da: http://www.lammertbies.nl/comm/cable/RS-232-spy-monitor.html

Figura 1: Sniffer per comunicazione half-duplex

Grazie alla prossima Tabella 1 riassumiamo come vengono effettuate le connessioni.

Connettore 1

Connettore 2

Spia

Funzione

1

1

-

Portante

2

2

2 via R1

Rx

RxSpia

3

3

2 via D1

Tx

RxSpia

4

4

-

Data terminal ready

5

5

5

Massa di segnale

6

6

-

Data set ready

7

7

-

Request to send

8

8

-

Clear to send

9

9

-

Ring indicator

-

-

1 + 4 + 6

DTR

CD + DSR

-

-

7 + 8

RTS

CTS

Tabella 1: Connessioni seriali half-duplex

Lo schema di connessione sembra molto semplice ma anche strano per via del fatto che si utilizza un unico diodo ed un unico resistore. Tuttavia, la funzionalità è garantita; il computer che effettua lo "spionaggio" viene connesso attraverso il connettore, così come indicato in Figura 1. Quando la porta RS232 è nello stato idle, come abbiamo visto nell'introduzione a questo standard, ovvero nel mark state, avrà una tensione negativa. Supponendo che sulla sinistra ci sia il trasmettitore e che la periferica sia sulla destra, al momento in cui il livello del segnale sulla terza linea cambia, e diventa alto, inizia la trasmissione; in queste condizioni la corrente attraverserà il diodo e verrà indirizzata anche sul computer che effettua il monitoring. Supponiamo che il dispositivo connesso sia nello stato idle; la tensione sulla linea due sarà circa -12 V, mentre all'altro capo del resistore sarà applicata una tensione pari a + 12 V. Fortunatamente, la matematica non è un'opinione, e la legge di Ohm ci aiuta, pertanto possiamo calcolare una corrente che scorre all'interno del resistore di circa 11 mA. Questo non è assolutamente un problema per i circuiti integrati che svolgono funzioni di driver per RS232, dal momento che la maggior parte di essi supporta valori di corrente nell'ordine dei 45 mA. Dal momento che la caduta di tensione ai capi del diodo è pari a 0.7 V, indipendentemente dal valore di corrente che scorre al suo interno, il computer "spia" vedrà sulla sua porta RS232 la stessa tensione presente sulla porta di trasmissione del dispositivo trasmettitore. Così i dati dal trasmettitore verso la periferica saranno intercettati. Nel secondo caso, il computer ha terminato l'invio dei dati ed attende la risposta del dispositivo sulla destra. Il livello di segnale sulla seconda linea diventa positivo ed ancora il diodo interromperà il percorso della corrente deviandolo sulla terza linea in modo tale che il monitor possa effettuare la lettura dei dati. Così la spia sarà in grado di prelevare i dati inviati e di leggerli. Successivamente, verranno ritrasmessi in modo tale che il master riceva la risposta che attende. Nel diagramma di funzionamento (Figura 1) della configurazione half-duplex, sono stati effettuati alcuni cortocircuiti tra pin del computer spia. Questi servono alla procedura di loopback dei segnali di handshaking del computer. Nella maggior parte dei casi questi cortocircuiti non saranno necessari, ma se il software spia utilizza l’handshaking, questo eviterà blocchi non previsti. Non è necessario utilizzare un software particolarmente complesso per svolgere questa funzione. Come dicevamo, infatti, sarà sufficiente creare un emulatore del terminale seriale, simile ad HyperTerminal. L'unica cosa che è necessario fare è modificare baud rate e configurazione dei bit di start e stop, rendendoli coerenti con quelli della trasmissione. In caso contrario, non saremo certamente in grado di rilevarla. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 1935 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici e potrai fare il download in formato PDF eBook e Mobi per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Una risposta

  1. Nello Roscini 12 Settembre 2020

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend