Comment puis-je renifler des paquets communiqués via un port série sous Linux?
Comment puis-je renifler des paquets communiqués via un port série sous Linux?
Réponses:
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.
socat
et 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/27
et 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.
cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps
et xxd
vous aider si c'est un protocole binaire: cat /dev/pts/27 | sudo tee /dev/ttyS0 serial-caps | xxd
.
/deb/pts/27
doit être /dev/pts/27
. Devrait également cat /deb/pts/27 | tee /dev/ttyS0
êtrecat /dev/pts/27 | sudo tee /dev/ttyS0
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/5
créé 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/ttyp0
etc.) qui ne sont probablement pas utilisés sur les noyaux Linux actuels.
interceptty
et j'ai travaillé!
Essayez d'utiliser jpnevulator (paquet Debian) ou slsniff . Notez que slsniff utilise un modèle d'émulation de terminal obsolète.