Benutzer-Werkzeuge

Webseiten-Werkzeuge


rs232_sniffer

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 <stdlib.h>
 
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.

rs232_sniffer.txt · Zuletzt geändert: 2017/12/20 10:12 von karl