Si les vous etes concernes par les ecoutes telephoniques, ce texte peut vous interesser. Si l'internet est pour vous un moyen de communication que vous jugez trop reglementé, trop surveillé, ou trop peu sécurisé, vous pourrez préférer les connexions directes par ligne telephonique pour effectuer vos transfers "top-secret" d'unemachine client a une machine serveur. Il y a seulement quelques annees, il etait tres courant de trouver dans les docs des hackeurs des numeros de BBS qui offraient des acces a des donnees pas toujours tres honnetes. Grace a la combinaison de l'informatique et de l'electronique, nous allons expliquer dans cet article comment pouvoir ajouter un niveau de securite a une connexion directe de modem a modem.
Pour que ca marche il faudra vous equiper de :
2 ordinateurs equipes de modems EXTERNES
2 piles de 9 volts
2 inverseurs CMOS 74hc/hct04 (ca coute 10 balles)
Quelques connaissances basiques en electronique peuvent aider, un fer a souder et un peu de soudure aussi. Si vous etes meticuleux, vous pouvez meme vous equiper d'un connecteur correspondant aux bornes de votre pile. Une bonne connaissance du port serie et du processus de transport de donnees (fourni dans cet article).
Note : Si vraiment vous etes maniaque, vous pouvez utiliser une vieille carte ISA pour PC et utiliser le courant de la carte mere. Le standrad ISA sera decrit plus en detail dans un prochain article.
L'idee de base derriere ce schema se presente ainsi :
Les infos entrantes et sortantes de votre modem (cote ordinateur) sont converties en 0 et 1. En transformant tous les 0 en 1 et tous les 1 en 0, on obtient un systeme d'envryption de donnees relativement simple (pour ne pas dire basique). C'est justement le boulot que fera l'inverseur hexadecimal cmos (voir liste equipement). Quand il recoit un 0 il en fait un 1, quand il recoit un 1, il en fait un 0.
Donc l'operation ocnsistera a mettre un inverseur sur la ligne d'envoi et un inverseur sur la ligne de reception. Il faut que l'ordinateur auquel vous vous connectez ait subi les memes transformations, sans quoi la communication risque d'etre un gros merdage..
Connexions:
L'inverseur CMOS
Prenez le delicatement entre vos gros doigts et reperez la petite encoche presente sur un des cotes de facon a le positionner comme sur le schema :
(80 colonnes)
______________________________
| |
14 13 11 12 10 9 8 |
| | | | | | | |
__________________ |
| | |_ A brancher sur le "+" de la pile
\ 74hc/hct04 |
/ |
|__________________| -A brancher sur le "-" de la pile
| | | | | | | |
1 2 3 4 5 6 7______________|
| | | |
| | | |_________________________________sortie ordinateur
| | |_______________________________entree modem
| |________________________________________________sortie modem conn.
|________________________________________________ entree ordinateur
(les autres connecteurs ne sont pas utilises)
Pour ceux qui ne sont pas familiers avec l'utilisation des connectiques du port serie, allez jeter un coup d'oeil un peu plus bas au petit cours sur le port serie et sa programmation.
-Reliez le "+" de la pile de 9v avec le pin 14 et le "-" avec le pin 7. Ce petit circuit CMOS est capable de gerer 6 inverseurs en meme temps mais ici on n'en utilisera que 2.
-Ouvrez le cable de votre modem avex un scalpel en faisant gaffe a ne pas couper de fil quand ca n'est pas necessaire.
-Trouvez le fil envoi de donnees (TX) partant de votre machine et allant vers votre modem. Coupez le et reliez le fil cote ordi au pin1 et le fil cote modem au pin2.
-Trouvez le fil de reception de donnees (RX) partant de votre machine et allant ver votre modem. Coupez le et reliez le fil cote ordi au pin4 et le fil cote modem au pin3.
C'est pret !
Si vous voulez utiliser les 4 autres inverseurs dispos sur le circuit CMOS, voici la liste complete des pins :
Pin# Name and function ---- ----------------- 1,3,5,9,11,13 Entree de donnees --------------------------------- 2,4,6,8,10,12 Sortie de donnees --------------------------------- 7 "-" --------------------------------- 14 "+" ---------------------------------
N'oubliez pas qu'il faut que les deux machines emettrice/receptrice soient equipees d'un tel systeme pour que ca marche.
PROCESSUS DE TRANSPORT DE DONNEES
[bps] [baud]
CPU Data Port Ligne
Bus --> octets -->Serie -- bits --> Modem -- analogique --> Telephonique
|
|
CPU Data Port |
Bus <-- octets -- Serie <-- bits -- Modem <-- analogique --------
(1) (2) (3)
LE PORT SERIE
1) Introduction :
La prise série est généralement utilisée en conjonction avec une souris ou un modem. Ce port a l'avantage d'être compact et de ne posséder que quelques signaux utiles. Plus difficile à mettre en oeuvre que le port parallèle, la prise série se révèle cependant plus puissante et plus universelle (jusqu'a l'apparition du port USB evidemment). Ce petit cours decrit le port serie utilise au traver d'un modele d'UART 8250. La plupart d'entre vous possedent (je l'espere) des UART 16550, mais dans le contexte de cet article, il n'est pas important de souligner la difference etant donne le caractere purement hardware de l'activite.
2) Géométrie :
A l'origine, tous les compatibles PC possèdent 2 ports séries: COM1 et COM2. L'un d'entre-eux se présente sous la forme d'une prise DB9 mâle et le deuxième, sous la forme d'une DB25 mâle.
DB9 Mâle (vue de devant) ------------- \ 1 2 3 4 5 / \ 6 7 8 9 / --------- DB25 Mâle (vue de devant) ------------------------------ \ 1 2 3 4 5 7 8 ... 13 / \ 14 15 16 17 18 .......25 / -------------------------- Description et attribution des signaux : Broche DB9 Borche DB25 Nom ----------------------------------- 1 8 DCD 2 3 RX 3 2 TX 4 20 DTR 5 7 GND 6 6 DSR 7 4 RTS 8 5 CTS 9 22 RI DCD (Data Carrier Detect): cette ligne est une entrée active haute. Elle signale à l'ordinateur qu'une liaison a été établie avec un correspondant. RX (Receive Data): cette ligne est une entrée. C'est ici que transitent les informations du correspondant vers l'ordinateur. TX (Transmit Data): cette ligne est une sortie. Les données de l'ordinateur vers le correspondant sont vehiculées par son intermédiaire. DTR (Data Terminal Ready): cette ligne est une sortie active haute. Elle permet à l'ordinateur de signaler au correspondant que le port série a été libéré et qu'il peut être utilisé s'il le souhaite. GND (GrouND): c'est la masse. DSR (Data Set Ready). Cette ligne est une entrée active haute. Elle permet au correspondant de signaler qu'une donnée est prête. RTS (Request To Send): cette ligne est une sortie active haute. Elle indique au correspondant que l'ordinateur veut lui transmettre des données. CTS (Clear To Send): cette ligne est une entrée active haute. Elle indique à l'ordinateur que le correspondant est prêt à recevoir des données. RI (Ring Indicator): cette ligne est une entrée active haute. Elle permet à l'ordinateur de savoir qu'un correspondant veut initier une communication avec lui. D'un point de vue électronique, les signaux TX et RX en sortie des prises répondent aux normes RS232, c'est à dire: 1 logique compris entre -3 et -25V 0 logique compris entre +3 et +25V
3) Programmation :
La programmation du port série passe par la description de son fonctionnement et par une petite explication des protocoles de transmission. Les PC possèdent en général deux ports série: COM1, généralement réservé à l'indispensable souris, et COM2 utilisé parfois en conjonction avec un modem externe.
4) Le fonctionnement d'une liaison série :
La communication série nécessite trois fils au minimum: une masse pour référencer les signaux, un fil émetteur et un fil récepteur. Notre liaison série est en effet full-duplex, c'est à dire que l'on peut émettre et recevoir en même temps (comme le téléphone par exemple). La différence principale entre le port parallèle et le port série est que les informations ne sont pas transmises simultanément sur des fils séparés (D0 à D7) mais les unes après les autres sur un même fil. Cela amène une économie de câble (un fil au lieu de 8) mais un montage décodeur devient nécessaire pour retransformer les données sérialisées. La figure ci-dessous montre comment l'octet 10110101 est transformé pour être transmis sur un seul fil. Vous voyez qu'en plus de l'information utile (10110101) se greffent d'autres bits comme le bit de start. Ces bits sont utiles pour la synchronisation de l'émetteur et du récepteur.
LSB 1011010 en serie MSB
_______________________________
/ \
1 _____ _____ _____ _________ _________
| | | | | | | | | | |
| | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | |
0 |___| |___| |___| | |___| | |____
\___/ \___/
START STOP
En effet, la liaison série est totalement asynchrone. Aucune horloge n'est transmise. Il faut donc se mettre d'accord sur la vitesse de transfert des bits et rajouter des bits de synchronisation.
Voici un petit résumé des différents paramètres rentrant en jeu lors d'une communication série:
longueur de mot: sur le PC, le BIOS ne permet une longueur de mot que de 7 ou 8 bits.
Parité: le mot transmis peut être suivi d'un bit de parité qui sert à détecter les erreurs éventuelles de transmission. Il existe deux parités: la parité paire et la parité impaire. Dans le cas de la parité paire, et pour le mot 10110101 contenant 5 états à 1, le bit de parité sera 1 amenant ainsi le nombre total de 1 à un nombre pair (6). Dans le cas de la parité impaire, le bit de parité aurait été 0 car le nombre total de 1 est déjà impair. L'intérêt de ce rajout est le suivant: si jamais lors de la transmission un état 1 est transformé en état 0 (perturbation du canal par des parasites par exemple) le nombre total de 1 change et donc le bit de parité recalculé par le récepteur ne correspond plus à celui reçu. L'erreur est donc détectée. Evidemment, si deux états à 1 passent à 0, l'erreur ne sera pas détectée mais la probabilité pour que cela arrive est très faible.
Bit de start: lorsque rien ne circule sur la ligne, celle-ci est à l'état haut. Pour indiquer qu'un mot va être transmis, la ligne passe à bas avant de commencer le transfert. Cette précaution permet de resynchroniser le récepteur.
Bits de stop: ces bits signalent la fin de la transmission. Selon le protocole utilisé, il peut y avoir 1, 1.5, ou 2 bits de stop (ces bits sont toujours à 1).
Vitesse de transmission: la plupart des cartes série permettent de choisir une vitesse entre 300 et 115000 bauds (par exemple à 300 bauds, un bit est transmis tout les un trois-centième de seconde). Ces vitesses ne vous paraissent peut-être pas énormes mais il faut garder à l'esprit que la liaison série est avant tout pensée pour les liaisons téléphoniques par modems, dont la bande passante est très limitée.
5) Les protocoles de transmission :
On ne peut réussir une transmission qu'à partir du moment où l'émetteur et le récepteur se sont entendus sur la vitesse, le nombre de bit de stop, la longueur du mot et la parité. A ce niveau là, savoir à quel voltage correspond un état haut n'a aucune importance. D'une manière générale, la parité est toujours présente car elle permet de détecter la plus grande partie des erreurs de transmission. Exemple de protocole: la figure ci-dessous montre la transmission du caractère " A " (01000001 en binaire) avec un protocole prévoyant 8 bits de données, un bit de stop et un contrôle de parité pair. La logique est supposée positive (à un état haut correspond un voltage positif) et la vitesse à été fixée à 1200 bauds.
1/200 s
<--->
1 _____ _____ _____
| | | | |
| | | | |
0 ____| |___________________| |_______|
|
| | | | | | | | | | | |
| \_______________________________/ | |
| 01000001 = 'A' | |
----> Start Parite <-- --> Stop
6) C'est quoi une UART ?
En angliche dans le texte "Universal Asynchronous Receiver-Transmitter" Receveur-transmetteur asynchrone universel. En gros ca transforme un flux de donnees paralleles en donnees serie et vice-versa. Ce composant est tres important dans la communication car il joue un role de buffer entrele bus de l'ordinateur et les ports de communication serie. Ce diagramme decrit la conversion de donnees paralleles en donnees serie. Evidemment ca marche dans les deux sens.
BUS du PC __________ Port serie
1 ------------> | |
1 ------------> | UART |
0 ------------> | |
1 ------------> | | ---------> 11010001
0 ------------> | |
0 ------------> | |
0 ------------> | |
1 ------------> |________|
Si cette doc vous a laisses sur votre faim, une description complete en anglais sur les UART, les ports serie, la programmation d'API BIOS et les standards est consultable a cette adresse : ftp://x2ftp.oulu.fi/pub/msdos/programming/serial/ser_port
Tobozo - Tobozo@yahoo.com