IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Matériel Discussion :

Espionner les données sur un port série


Sujet :

Matériel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 24
    Points : 7
    Points
    7
    Par défaut Espionner les données sur un port série
    Salut,

    Voilà, j'aimerai pouvoir espionner les données qui passent sur un port série (UART en RS232).
    J'ai 2 équipements, qui communiquent en RS232, et je voudrais pouvopir rajoutter un cable "espion" qui se placera entre les 2 appareils. Ce cable serait relier à mon PC sous Linux et je voudrais pouvoir lire toutes les données qui passent sur le port série (Rx et Tx).
    Comme il faut configurer le driver pour pouvoir lire Rx ET Tx, je ne sais pas faire...
    Je voudrais savoir si vous connaissiez un soft capable de faire ca pour moi?
    Si en plus il pouvait horodater les caractères se serait parfait

    Alexis

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Beuh... personne pour me répondre?

  3. #3
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    déjà au niveau electronique ton cable vampire sera à 3 fils
    masse+RX+TX

    après pour le lire je sais pas trop sous dos à l'époque on faisait genre

    more < com1 > LPT1 par exemple pour pomper les password telnet et faire des blagues sur le PC du prof d'informatique...

    peut etre que tu peux essayer avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    more < /dev/serial1 > fichier.dump
    mais j'ai jamais testé ce genre de choses...
    et y'a surement plus sur et efficace parceque là ça va copier brut bitàbit c'est à dire avec le protocolage les flags les adresses et toute l'encapsulation
    par exemple dans le meilleur des cas tu vas avoir un truc style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XXXXFDDDDDDFXXXXXXXXFDDDDDDFXXXXXXXXFDDDDDDFXXXXXXXXFDDDDDDFXXXXXXXXFDDD
    où seul les D sont de la donnée utilisateur.
    bonjour la galère pour analyser derriere...

    encore que pour l'analyse tu peux te fier à cette doc


    PS: tu dois avoir sttyS0 ou sttyS1 au lieu de serial1
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    C'est justement les données brut que je veux, mais en RS232 il n'y aura pas de bourrage entre les données
    Par contre un ne donnera à mon avis pas grand chose, puisque le driver est configuré en émission sur TX. Cela dit, je n'ai pas essayé. Mais j'attend d'etre à peu prè sur que ca puisse fonctionner avant de faire le cable.
    A défaut d'un soft existant, ce qu'il me faudrait c'est pouvoir configurer RX et TX en réception. Mais je ne sais pas comment faire...

  5. #5
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    pas mais sinon bien sur ça ne risque pas du tout de marcher...
    j'ai pas de cable serie sinon j'aurai fait un test pour intercepter un telnet entre deux machine par une troisieme histroire de tester....
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Tu ne penses pas que le driver risque de posé des problèmes pour la lecture de TX ?
    Je vais essayer de faire un cable et tester alors

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Je viens de tester la commande Elle me retourne:
    usage: more [-dflpcsu] [+no-de-ligne | +/patron] nom1 nom2 ...
    a marche pô

  8. #8
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    peut etre avec cat tail ou tout autre commande texte...

    peut etre qu'un pipage serait plus approprié comme

    :
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  9. #9
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    more /dev/ttyS1
    et
    cat < /dev/ttyS1
    Le résultat est le même, je ne vois que les caractères sur RX.
    De plus, je perturbe le signal TX qui devient illisible pour tout le monde

  10. #10
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    si tu vois le flux RX c'est qu'on touche à la solution et qu'un détail nous échappe....

    mais lequel :
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Pour moi c'est au niveau hard, la carte de mon PC émet un signal sur le TX, un des 2 autres apareils aussi, les signaux s'aditionne et c'est le zonzon. De plus comme le TX est en émission sur mon PC, je suis incapable de lire ce qui y passe.
    C'est pourquoi j'aimerai être capable, via le driver du port série, de configurer TX comme une entrée.
    Est-ce possible, là est la question...

  12. #12
    Membre confirmé
    Avatar de bster
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    372
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2005
    Messages : 372
    Points : 497
    Points
    497
    Par défaut
    alors élimine pour l'instant la connection TX ça te permetra d'avoir une analyse RX propre.

    ensuite tu cable le TX inter-appareil vers le RX du pc et tu refais l'analyse pour intercepter le signal TX inter-appareil

    déjà tu devrait plus etre perturbé par les signaux emis par le PC sur les calbes inter-appreils. Pfiou ça me rappele bien des souvenir ce genre de bricolages la belle époque ou pour faire de l'informatique il fallait etre un peu éléctricien voir mécanicien....
    Comité de lutte contre le langage SMS sur les forums
    Veuillez écrire dans un langage compréhensible par les humains, merci.

  13. #13
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    C'est pas bete ca comme idée, mais en fait j'ai besoin de faire des captures simultanées de RX et TX (un horodatage précis de chaque caractère serait top moumoutte, mais faut que j'arrete de revé... )
    Sinon il resterait la possibilité de capturer RX sur /dev/ttyS0 et de cabler TX sur le RX de /dev/ttyS1. Mais je n'ai alors plus aucun moyen de controler la synchro des 2 flux!
    Qué misère ....

    A part en arrivant je ne sais comment à reconfigurer le chip du port série, il reste une autre possibilié, c'est de mettre le PC entre les 2 équipements.
    Je me suis déjà fait un micro soft pour ca, mais je me suis rendu compte que j'ai aussi besoin de certains signaux (DTR en l'occurence). Et ca je ne sais pas les recopier...
    En plus mon soft est un peu pourris au niveau de la gestion des vitesses, et ca merde aussi un peu de temps en temps.... bref il m'en faudrait un tout fais
    Un peu comme le soft de HHD pour Windows: "Free serial port monitor"

    Pour info, le code de mon soft "pourri" (c'est juste comme ca, faut pas s'embeter à débugger):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <errno.h>
    #include <string.h>
    #include <fcntl.h>
    #include <sys/select.h>
    #include <sys/time.h>
    #include <math.h>
    #include <ctype.h>
     
    #define MAX_BUF		2048
     
    int max(int a, int b) {
    	if (a>b) 
    		return a;
    	else
    		return b;
    }
     
    int main(int argc, char **argv) {
    	int fda, fdb;
    	int ret;
    	int i, n;
    	unsigned char buffer[MAX_BUF];
    	struct timeval tv, now;
    	fd_set rfd;
     
    	tv.tv_sec = 1;
    	tv.tv_usec = 0;
     
    	fda = open (argv[1], O_RDWR);
    	fdb = open (argv[2], O_RDWR);
     
    	while (1) {
    		FD_ZERO (&rfd);
    		FD_SET (fda, &rfd);
    		FD_SET (fdb, &rfd);
    		tv.tv_sec = 1;
    		tv.tv_usec = 0;
     
    		ret = select (max(fda, fdb) + 1, &rfd, NULL, NULL, &tv);
    		if (ret == -1 && errno == EINTR) {
    			continue;
    		}
    		if (ret < 0) {
    			perror ("select()");
    			exit (1);
    		}
    		gettimeofday (&now, NULL);
    		if (FD_ISSET (fda, &rfd)) {
    			n = read (fda, buffer, MAX_BUF-1);
    			buffer[n]=0;
    			printf("%d,%06d--(%02d):", (int)now.tv_sec, (int)now.tv_usec, n);
    			for (i=0; i<n; i++) {
    				if (isprint(buffer[i]))
    					printf("%c  ", buffer[i]);
    				else
    					printf("   ");
    			}
    			printf("\n\t\t\t");
    			for (i=0; i<n; i++) {
    				printf("%02x ", buffer[i]);
    			}
    			printf("\n");
    			write (fdb, buffer, n);
    		}
    		if (FD_ISSET (fdb, &rfd)) {
    			n = read (fdb, buffer, MAX_BUF-1);
    			buffer[n]=0;
    			printf("\t\t\t\t\t\t\t\t");
    			printf("%d,%06d--(%02d):", (int)now.tv_sec, (int)now.tv_usec, n);
    			for (i=0; i<n; i++) {
    				if (isprint(buffer[i]))
    					printf("%c  ", buffer[i]);
    				else
    					printf("   ");
    			}
    			printf("\n\t\t\t\t\t\t\t\t\t\t\t");
    			for (i=0; i<n; i++) {
    				printf("%02x ", buffer[i]);
    			}
    			printf("\n");
    			write (fda, buffer, n);
    		}
     
    	}
     
    	return EXIT_SUCCESS;
    }

  14. #14
    Futur Membre du Club
    Inscrit en
    Mai 2004
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 24
    Points : 7
    Points
    7
    Par défaut
    Bon, finalement j'ai developper un soft qui lit sur les Rx de 2 ports distincts.
    J'ai bidouillé un cable "normal" sur lequel j'ai rajoutté 2 DB9 sur lesquelles je raporte TX et RX sur les RX des 2 DB9. (plus la masse évidement).
    Et voilà
    Y'a plus qu'a lire normalement sur 2 ports distincts.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Imprimante] Lire les données qui transitent sur un port paralléle
    Par gastoncs dans le forum Périphériques
    Réponses: 7
    Dernier message: 29/07/2011, 21h15
  2. recuperer les données en FTP sur serveur distant.
    Par bigs3232 dans le forum Langage
    Réponses: 2
    Dernier message: 29/10/2010, 17h02
  3. Réponses: 2
    Dernier message: 16/01/2010, 11h52
  4. comment récupérer les données dans contact sur une feuille excel?
    Par Granfred dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/01/2009, 15h02
  5. exporter les donneés qui arrivent sur un port TCP
    Par zaki_1982 dans le forum Développement
    Réponses: 3
    Dernier message: 22/04/2008, 01h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo