bionic (1) jpnevulator.1.gz

Provided by: jpnevulator_2.3.4-1_amd64 bug

NAME

       jpnevulator - Just another serial sniffer

SYNOPSIS

       jpnevulator [OPTION]... <FILE>

DESCRIPTION

       jpnevulator  is  a handy serial sniffer. You can use it to send data on a serial device too. You can read
       or write from/to one or more serial devices at the same time.

       In write (--write) mode data to be sent on the serial device(s) is read from a  file  or  stdin  in  base
       (--base) defined notation. Data is sent on the serial device(s) line by line.

       In  read  (--read)  mode data to be read from the serial device(s) is written to a file or stdout in base
       (--base) defined notation. Skim through the options for several enhancements in  the  output.  It's  even
       possible to pass(--pass) on the data between the several serial devices.

       Mandatory arguments to long options are mandatory for short options too.

       Generic options:

       -B, --base=BASE
              Specify  the  base  unit  of  read/write  bytes.  Currently  only  2=binary and 16=hexadecimal are
              supported. The default base unit is hexadecimal.

              Selecting hexadecimal as the base unit, the input format is FD or 0xFD. Of  course  all  input  is
              treated  case-insensitive.  Spaces may or may not be included in the input. So DEADBEEF is exactly
              the same as DE AD   BE  EF.

              Selecting binary as the base unit, the input format is 01000010. Spaces may or may not be included
              in  the  input.  So  01000010111  is  exactely  the  same as 01000010 111. Yes, that's right! It's
              perfectly fine to write less than 8 bits, excluding the leading zeros. Please understand if  doing
              so,  spaces  are  needed  to separate the individual bytes in this case, but that's obvious. If no
              spaces are used, the parses reads the first 8 bits before it continues with the next, as shown  in
              the example above.

       -l, --alias-separator
              Use the given string as the alias separator. See --tty for more information.

       -f, --file=NAME
              In  write  mode  read  the contents of the file given and send them on the serial device(s) and in
              read mode write the contents of the serial device(s) to the file given.

       -h, --help
              Shows a brief list of options.

       -o, --count=BYTES
              Exit after reading / writing the given amount of bytes.

       -r, --read
              Put the program in read mode. This way you read the data from the given serial device(s) and write
              it to the file given or stdout if none given.  See the read options section for more read specific
              options.

       -t, --tty=NAME:ALIAS
              The serial device to read from or write to. Use multiple times to read/write from/to more than one
              serial  device(s).  For  handy  reference  you can also separate an alias from the tty name with a
              collon ':'. If a collon is for some strange reason part of your  device  name,  you  can  use  the
              --alias-separator  option  to  specify  another separation string. If an alias is given it will be
              used as the name of the serial device.

       -v, --version
              Output the version information, a small GPL notice and exit.

       -w, --write
              Put the program in write mode. This way you read data from a given file or stdin if none given and
              write  it  to  the  serial  device(s) given. See the write options section for more write specific
              options.

       Read options:

       -a, --ascii
              Besides the normal output of the data, also display an extra column with the  data  in  the  ASCII
              representation.  Non printable characters are displayed as a dot '.'.  The ASCII data is displayed
              after the normal data.

       -b, --byte-count
              Besides the normal output also display an extra column with the current index number of  the  byte
              in  the  output.  These  numbers  are  displayed  in  front of the normal output. When readin from
              multiple serial devices at the same time the index number will increase per serial device.

       -C, --control
              Monitor modem control bits (line enable, data terminal ready,  request  to  send,  secondary  TXD,
              secondary RXD, clear to send, carrier detect, ring and data set ready) too and notify changes. Use
              the --control-poll option to specify how often to poll for the bits.

       -D, --control-poll=MICROSECONDS
              The control poll is the amount of microseconds to wait in between two checks of the modem  control
              bits if nothing else is happening.

       -P, --pass
              This  one  passes  all  the  data between the serial devices. Handy if you want to put your serial
              sniffer in between the serial devices you want to sniff.

       -q, --pty=:ALIAS
              The pseudo-terminal device to read from. Use multiple times to read from  more  than  one  pseudo-
              terminal  device(s).  For  handy reference you can also use an alias to name the pty. Make sure it
              starts with a collon ':'. Use the --alias-separator option if you for some reason  don't  like  to
              use a collon.  If an alias is given it will be used as the name of the pseudo-terminal device.

       -e, --timing-delta=MICROSECONDS
              The  timing delta is the amount of microseconds between two bytes that the latter is considered to
              be part of a new package. The default is 100 miliseconds. Use this option in conjunction with  the
              --timing-print option.

       -g, --timing-print
              Print  a  line  of timing information before every continues stream of bytes. When multiple serial
              devices are given also print the name or alias of the device where the data is coming from.

       -i, --width=WIDTH
              The number of bytes to display on one line. The default is 16.

       -A, --append
              Append to the output file instead of overwriting. The default is to overwrite.

       -S, --append-separator
              Use the given string as the append separator. The  string  is  processed  and  the  '\n'  sequence
              transforms  into  a  real newline. So far no other sequences do anything special. The default is a
              single newline character.

       Write options:

       -c, --checksum
              Append a single checksum byte to the line of data written to the  serial  device(s)  chosen.  This
              checksum is a simple modulo 256 addition of all input bytes on a line.

       -z, --crc8=POLY
              Append  a  crc8  checksum  to  the  line  of data written to the serial device(s) chosen.  Use the
              optionally given poly as the polynomial. Specify the polynomial as hexadecimal value, as  in  0x07
              (the default).

       -y, --crc16=POLY
              Append  a  crc16  checksum  to  the  line of data written to the serial device(s) chosen.  Use the
              optionally given poly as the polynomial. Specify the polynomial as hexadecimal value, as in 0xA001
              (the default).

       -k, --delay-byte=MICROSECONDS
              This  delay  is  an optional amount of microseconds to wait in between every input byte is sent on
              the serial device(s).

       -d, --delay-line=MICROSECONDS
              This delay is an optional amount of microseconds to wait in between every input line  is  sent  on
              the serial device(s).

       -j, --fuck-up
              This is the special fuck up option. When the calculation of a checksum is chosen (see checksum and
              crc* options) the checkum will be crippled on purpose. Carefully named after the special Jan  Arie
              de Bruin 'fuck up crc' button.

       -n, --no-send
              Do  not actually send the bytes on the serial device(s). Rather pointless, but seemed one day long
              ago to be a rather handy feature.

       -p, --print
              Besided sending the data on the serial device(s) also write the data to stdout.

       -s, --size=SIZE
              The maximum number of bytes per line to send on the serial device(s). The default  is  22,  coming
              from back in the Cham2 days of the program.

DIAGNOSTICS

       Normally,  exit  status is 0 if the program did run with no problem whatsoever. If the exit status is not
       equal to 0 an error message is printed on stderr which should help you solve the problem.

BUGS

       Order of bytes broke when reading several tty devices at once

       The display of incoming bytes can be broke if you use multiple tty devices to read from. At the moment  I
       do  not have a solution for this problem. Since I use select() to watch the several tty devices and after
       the select() I have to read() them one by one, I can not completely 100% display which bytes  came  after
       which on different tty devices. Take the example below:

              $ jpnevulator --ascii --timing-print --tty /dev/ttyS0 --tty /dev/ttyUSB0 --read
              2006-05-30 13:23:49.461075: /dev/ttyS0
              00 00 05 3B 0D 00 00 05                         ...;....
              2006-05-30 13:23:49.461113: /dev/ttyUSB0
              00 05 3B 0D 00 00 05 3B 0D                      ..;....;.
              2006-05-30 13:23:49.473074: /dev/ttyS0
              3B 0D 00 00 05 3B 0D                            ;....;.
              2006-05-30 13:23:49.473105: /dev/ttyUSB0
              00 12 05 06 39 00 12 05 06 39 1F 00 22 80 00 0E ....9....9.."...
              $

       And now see the order in which things really got sent on the line:

              /dev/ttyS0:
              00 00 05 3B 0D
              /dev/ttyUSB0:
              00 00 05 3B 0D
              /dev/ttyS0:
              00 00 05 3B 0D
              /dev/ttyUSB0:
              00 00 05 3B 0D
              /dev/ttyS0:
              00 00 05 3B 0D
              /dev/ttyUSB0:
              00 00 05 3B 0D 00 12 05 06 39 00 12 05 06 39 ...

       As  you  can  see  /dev/ttyUSB0 receives the echo of all things sent by /dev/ttyS0.  This is exactly what
       happens. But since there does exist a small time between the select() who is happy  expressing  something
       is available and the read() who does get the available data, some extra data will be available. I have no
       idea on how I can use high level system call like select() and read() and be still able to put the  bytes
       in the correct order. Anyone an idea?

AUTHOR

       Written by Freddy Spierenburg.

REPORTING BUGS

       Report bugs to <freddy@snarl.nl>.

       Copyright © 2006-2016 Freddy Spierenburg