Port série Sniff sous Linux

Réponses:

27

Il y a quelques options:

  • sersniff est un programme simple pour tunneler / renifler entre 2 ports série.

  • Serial to Network Proxy (ser2net) permet à un utilisateur de se connecter d'une connexion réseau à un port série.

  • SerialSpy agit comme un dispositif d' intercommunication série. Il écoute les données entrantes sur deux ports série et les transmet pour que les appareils agissent comme s'ils étaient directement connectés. Il enregistre également les données lors de leur déplacement dans les ports.

  • sercd est un redirecteur de port série compatible RFC 2217. Il vous permet de partager un port série via un réseau. Il est basé sur sredird. Le protocole RFC2217 est une extension de telnet et permet de modifier les paramètres du port de communication.

  • SerLooK est une application KDE pour inspecter les données passant par des lignes série. Il peut fonctionner comme un terminal binaire qui envoie et reçoit des données via un port défini (mode point à point) et les affiche sur des vues distinctes. Chaque vue peut être configurée pour afficher les données en ASCII hexadécimal, décimal, octal, binaire et brut. Il est également possible d'effectuer des E / S via des vues d'émulation de terminal et de définir un port secondaire et de surveiller le trafic entre deux hôtes externes à l'aide d'un câble "Y" (mode Snooper).

  • nullmodem crée un réseau virtuel de pseudo-terminaux. Il peut être utilisé comme adaptateur pour connecter deux programmes qui nécessitent normalement des cartes d'interface série.

  • ttywatch surveille, enregistre et multiplexe les E / S des terminaux. Il a une rotation complète des journaux intégrée et peut utiliser telnet ainsi que les ports TTY locaux.

  • Le renifleur de ligne série (slsnif) est un utilitaire de journalisation de port série. Il écoute le port série spécifié et enregistre toutes les données transitant par ce port dans les deux sens.

hlovdal
la source
2
Vous pouvez y parvenir avec des outils standard en utilisant socatet tee. 1) socat -d -d pty,raw,echo=0 pty,raw,echo=0. La sortie vous donnera deux ports ...N PTY is /dev/pts/27... N PTY is /dev/pts/28. 2) sudo cat /dev/ttyS0 | tee /dev/pts/27et dans un autre terminal sudo cat /deb/pts/27 | tee /dev/ttyS0. Enfin 3) Connectez votre programme à /dev/tty/28. Les deux commandes tee transfèrent les deux directions vers la console et les transmettent vers / depuis le port série réel. Notez que les paramètres de port tels que le débit en bauds doivent être configurés à l'avance.
jtpereyda
Vous pouvez enregistrer les trucs de tee dans un fichier aussi: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-capset xxdvous aider si c'est un protocole binaire: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd.
jtpereyda
@jtpereyda il semble que votre 3ème étape devrait être le programme de connexion à / dev / ttyS0. Par exemple, lorsque j'y connecte PUTTY à / dev / ttyS0, cela me montre correctement la sortie de l'étape 2 tout en communiquant avec la carte embarquée réelle. BTW vous avez une faute de frappe /deb/pts/27doit être /dev/pts/27. Devrait également cat /deb/pts/27 | tee /dev/ttyS0êtrecat /dev/pts/27 | sudo tee /dev/ttyS0
enthousiastegeek
Cette réponse est très ancienne, veuillez considérer l'interception pour le reniflage de port série
CharlesB
1
Vous pourriez fournir cela comme une autre réponse. @CharlesB Expliquer pourquoi c'est mieux serait bien aussi.
poussins
12

J'ai essayé interceptty ( copie sur GitHub ) et j'ai réussi à l'utiliser. Je l'ai d'abord exécuté sur le port d'intérêt:

interceptty /dev/ttyACM0 

J'ai ensuite connecté le programme en cours de test au pseudo-terminal /dev/pts/5créé par interceptty.


J'ai essayé d'utiliser slsnif , mais j'ai trouvé une erreur:

Failed to open a pty: No such file or directory

Cet élément de liste de diffusion indique que slsnif ne prend en charge que les pseudo-terminaux "hérités" ( /dev/ttyp0etc.) qui ne sont probablement pas utilisés sur les noyaux Linux actuels.

Craig McQueen
la source
1
Merci! Même erreur ici sur mon appareil embarqué. Ensuite, j'utilise intercepttyet j'ai travaillé!
gfleck
Comment savez-vous quel pseudo-terminal il crée?
chwi
@chwi Vous pouvez lui donner un deuxième paramètre, qui est le nom d'un "périphérique frontal" qui est un lien symbolique vers le pseudo-terminal qu'il crée.
Craig McQueen
Merci. J'ai trouvé que par défaut, il crée un / dev / intercepttydummy. J'ai pu regarder le trafic dans les deux sens, mais les données entrantes de l'appareil n'ont été lues que par interception, et non mon logiciel exécutant pyserial.
chwi
3

Essayez d'utiliser jpnevulator (paquet Debian) ou slsniff . Notez que slsniff utilise un modèle d'émulation de terminal obsolète.

sntg
la source