====== RS232 Sniffer ====== ich bin nun auf ein sehr nettes Programm gestoßen, das mehrere Datenströme von mehreren RS232-Geräten in einem Datenstrom darstellen kann: **jpnevulator** ===== Test Scenario ===== Zwei Arduino Nanos werden an den PC angeschlossen, /dev/ttyUSB0 und /dev/ttypUSB1 Beide liefern in zufälligen Zeitabständen Daten (Zähler). ==== Arduino Code ==== #include uint32_t seed = 0x93123789; uint32_t counter = 0; void setup() { Serial.begin(9600); srand(seed); } void loop() { uint32_t r = rand(); if(r%1024 < 10){ Serial.println(counter++); }else{ delay(1); } } Der seed ist für beide Arduinos unterschiedlich eingestellt. ===== Einstellungen ===== Die Parameter der verwendeten Schnittstellen können mit stty eingestellt werden. ==== Anzeigen aller Einstellungen ==== stty -F /dev/ttyUSB0 --all ==== Beispiele ==== === 9600 8N1 === stty -F /dev/ttyUSB0 9600 cs8 -parenb -cstopb * 9600: Baudrate * cs8: chracter size is set to 8 bits * -parenb: no parity bit * -cstopb: one stop bit === 115200 7E2 === stty -F /dev/ttyUSB0 115200 cs7 parenb -parodd cstopb * 115200: Baudrate * cs7: chracter size is set to 7 bits * parenb: enable parity bit * -parodd: set parity bit to even * cstopb: two stop bits ===== Minimaldarstellung ===== Hier werden nur das Gerät und die Daten in Hexcode dargestellt: jpnevulator --tty /dev/ttyUSB0:UFO --tty "/dev/ttyUSB1:Battery" --read UFO 33 35 0D 0A Battery 34 36 0D 0A 30 0D 0A UFO 30 0D 0A Battery 31 0D 0A UFO 31 0D 0A Battery 32 0D 0A 33 0D 0A 34 0D 0A 35 0D 0A UFO 32 0D 0A 33 0D 0A Battery 36 0D 0A UFO 34 0D 0A 35 0D 0A Battery 37 0D 0A 38 0D 0A UFO 36 0D 0A Battery 39 0D 0A 31 30 0D 0A 31 31 0D 0A UFO 37 0D 0A Battery 31 32 0D 0A 31 33 0D 0A UFO 38 0D 0A Battery 31 34 0D 0A 31 35 0D 0A 31 36 0D 0A UFO 39 0D 0A 31 30 0D 0A 31 31 0D 0A 31 32 0D 0A Battery 31 37 0D 0A UFO 31 33 0D 0A 31 34 0D 0A 31 35 0D 0A Battery 31 38 0D 0A 31 39 0D 0A ===== Ausgabe mit ASCII Inerpretation ===== jpnevulator --ascii --tty /dev/ttyUSB0:UFO --tty /dev/ttyUSB1:Battery --read UFO 32 33 31 0D 0A 231.. Battery 32 32 37 0D 0A 227.. 30 0D 0A 31 0D 0A 0..1.. UFO 30 0D 0A 31 0D 0A 0..1.. Battery 32 0D 0A 33 0D 0A 34 0D 0A 2..3..4.. 35 0D 0A 5.. UFO 32 0D 0A 33 0D 0A 2..3.. Battery 36 0D 0A 6.. UFO 34 0D 0A 4.. 35 0D 0A 5.. Battery 37 0D 0A 7.. 38 0D 0A 8.. UFO 36 0D 0A 6.. Battery 39 0D 0A 31 30 0D 0A 9..10.. 31 31 0D 0A 11.. UFO 37 0D 0A 7.. Battery 31 32 0D 0A 31 33 0D 0A 12..13.. UFO 38 0D 0A 8.. Battery 31 34 0D 0A 31 35 0D 0A 14..15.. 31 36 0D 0A 16.. UFO 39 0D 0A 31 30 0D 0A 31 31 0D 0A 31 32 0D 0A 9..10..11..12.. Battery 31 37 0D 0A 17.. UFO 31 33 0D 0A 31 34 0D 0A 31 35 0D 0A 13..14..15.. Battery 31 38 0D 0A 31 39 0D 0A 18..19.. UFO 31 36 0D 0A 16.. Battery 32 30 0D 0A 20.. UFO 31 37 0D 0A 17.. Battery 32 31 0D 0A 21.. UFO 31 38 0D 0A 18.. Battery 32 32 0D 0A 22.. UFO 31 39 0D 0A 19.. Battery 32 33 0D 0A 23.. UFO 32 30 0D 0A 20.. Battery 32 34 0D 0A 32 35 0D 0A 24..25.. 32 36 0D 0A 26.. UFO 32 31 0D 0A 21.. Battery 32 37 0D 0A 27.. UFO 32 32 0D 0A 22.. Battery 32 38 0D 0A 28.. 32 39 0D 0A 29.. UFO 32 33 0D 0A 32 34 0D 0A 23..24.. Battery 33 30 0D 0A 30.. UFO 32 35 0D 0A 25.. Battery 33 31 0D 0A 31.. UFO 32 36 0D 0A 26.. 32 37 0D 0A 32 38 0D 0A 27..28.. Battery 33 32 0D 0A 32.. UFO 32 39 0D 0A 29.. Battery 33 33 0D 0A 33 34 0D 0A 33 35 0D 0A 33 36 0D 0A 33..34..35..36.. 33 37 0D 0A 37.. 33 38 0D 0A 33 39 0D 0A 38..39.. UFO 33 30 0D 0A 33 31 0D 0A 33 32 0D 0A 30..31..32.. Battery 34 30 0D 0A 34 31 0D 0A 40..41.. UFO 33 33 0D 0A 33 34 0D 0A 33..34.. ===== Ausgabe mit Zeitstempel ===== jpnevulator --ascii --timing-print --tty /dev/ttyUSB0:UFO --tty "/dev/ttyUSB1:Battery" --read 2017-11-21 04:31:03.934740: Battery 30 0D 0A 0.. 2017-11-21 04:31:04.027795: UFO 30 0D 0A 0.. 2017-11-21 04:31:04.027906: Battery 31 0D 0A 1.. 2017-11-21 04:31:04.121071: UFO 31 0D 0A 1.. 2017-11-21 04:31:04.136501: Battery 32 0D 0A 33 0D 0A 34 0D 0A 2..3..4.. 2017-11-21 04:31:04.259163: Battery 35 0D 0A 5.. 2017-11-21 04:31:04.266844: UFO 32 0D 0A 33 0D 0A 2..3.. 2017-11-21 04:31:04.364761: Battery 36 0D 0A 6.. 2017-11-21 04:31:04.450527: UFO 34 0D 0A 4.. 2017-11-21 04:31:04.591394: UFO 35 0D 0A 5.. 2017-11-21 04:31:04.605142: Battery 37 0D 0A 7.. 2017-11-21 04:31:04.801424: Battery 38 0D 0A 8.. 2017-11-21 04:31:04.821649: UFO 36 0D 0A 6.. 2017-11-21 04:31:04.852260: Battery 39 0D 0A 31 30 0D 0A 9..10.. 2017-11-21 04:31:05.108643: Battery 31 31 0D 0A 11.. 2017-11-21 04:31:05.205930: UFO 37 0D 0A 7.. 2017-11-21 04:31:05.227054: Battery 31 32 0D 0A 31 33 0D 0A 12..13.. 2017-11-21 04:31:05.412041: UFO 38 0D 0A 8.. 2017-11-21 04:31:05.419467: Battery 31 34 0D 0A 31 35 0D 0A 14..15.. 2017-11-21 04:31:05.737963: Battery 31 36 0D 0A 16.. 2017-11-21 04:31:05.753133: UFO 39 0D 0A 31 30 0D 0A 31 31 0D 0A 31 32 0D 0A 9..10..11..12.. 2017-11-21 04:31:05.912160: Battery 31 37 0D 0A 17.. 2017-11-21 04:31:05.933009: UFO 31 33 0D 0A 31 34 0D 0A 31 35 0D 0A 13..14..15.. 2017-11-21 04:31:06.070336: Battery 31 38 0D 0A 31 39 0D 0A 18..19.. 2017-11-21 04:31:06.100373: UFO 31 36 0D 0A 16.. 2017-11-21 04:31:06.102528: Battery 32 30 0D 0A 20.. 2017-11-21 04:31:06.131038: UFO 31 37 0D 0A 17.. 2017-11-21 04:31:06.134453: Battery 32 31 0D 0A 21.. 2017-11-21 04:31:06.422916: UFO 31 38 0D 0A 18.. 2017-11-21 04:31:06.455092: Battery 32 32 0D 0A 22.. 2017-11-21 04:31:06.472657: UFO 31 39 0D 0A 19.. 2017-11-21 04:31:06.520700: Battery 32 33 0D 0A 23.. 2017-11-21 04:31:06.552793: UFO 32 30 0D 0A 20.. 2017-11-21 04:31:06.563918: Battery 32 34 0D 0A 32 35 0D 0A 24..25.. 2017-11-21 04:31:06.702372: Battery 32 36 0D 0A 26.. 2017-11-21 04:31:06.709112: UFO 32 31 0D 0A 21.. 2017-11-21 04:31:06.741452: Battery 32 37 0D 0A 27.. 2017-11-21 04:31:06.832089: UFO 32 32 0D 0A 22.. 2017-11-21 04:31:06.899534: Battery 32 38 0D 0A 28.. 2017-11-21 04:31:07.059454: Battery 32 39 0D 0A 29.. 2017-11-21 04:31:07.091973: UFO 32 33 0D 0A 32 34 0D 0A 23..24.. 2017-11-21 04:31:07.177673: Battery 33 30 0D 0A 30.. 2017-11-21 04:31:07.209634: UFO 32 35 0D 0A 25.. 2017-11-21 04:31:07.237664: Battery 33 31 0D 0A 31.. 2017-11-21 04:31:07.281342: UFO 32 36 0D 0A 26.. 2017-11-21 04:31:07.463054: UFO 32 37 0D 0A 32 38 0D 0A 27..28.. 2017-11-21 04:31:07.607040: Battery 33 32 0D 0A 32.. 2017-11-21 04:31:07.679791: UFO 32 39 0D 0A 29.. 2017-11-21 04:31:07.690290: Battery 33 33 0D 0A 33 34 0D 0A 33 35 0D 0A 33 36 0D 0A 33..34..35..36.. 33 37 0D 0A 37.. 2017-11-21 04:31:08.095972: Battery 33 38 0D 0A 33 39 0D 0A 38..39.. 2017-11-21 04:31:08.123383: UFO 33 30 0D 0A 33 31 0D 0A 33 32 0D 0A 30..31..32.. 2017-11-21 04:31:08.200833: Battery 34 30 0D 0A 34 31 0D 0A 40..41.. 2017-11-21 04:31:08.213495: UFO 33 33 0D 0A 33 34 0D 0A 33..34.. ===== Bug ===== Im Handbuch (manpage) wird erwähnt, dass die Reihenfolge der angezeigten Bytes nicht 100%ig exakt ist, wenn kaum Zeit dazwischen vergangen ist. Die Umschaltung zwischen den Geräten wird also leider nicht exakt dargestellt. {{tag>deutsch artikel software linux technik}}