1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

Merge pull request https://github.com/RIOT-OS/applications/pull/43 from miri64/sniffer/fix/doc

sniffer: various documentation improvements
This commit is contained in:
Martine Lenders 2018-10-02 11:34:40 +02:00 committed by GitHub
commit 24ea80fb41
3 changed files with 18 additions and 33 deletions

View File

@ -1,7 +1,7 @@
About
=====
This application is build to run together with the script `RIOTBASE/dist/tools/sniffer/sniffer.py` as sniffer for (wireless) data traffic. This application works with any board with any network device that supports the gnrc network stack (or precisely the gnrc parts up to the link-layer). Further the network device (and it's driver) needs to support promiscuous and raw mode for usable output. Finally the board needs to include auto-initialization code for the targeted network device.
This application is build to run together with the script `./tools/sniffer.py` as sniffer for (wireless) data traffic. This application works with any board with any network device that supports the gnrc network stack (or precisely the gnrc parts up to the link-layer). Further the network device (and it's driver) needs to support promiscuous and raw mode for usable output. Finally the board needs to include auto-initialization code for the targeted network device.
Usage

View File

@ -46,36 +46,18 @@ $ RIOTBASE=<path/to/RIOT> BOARD=<name> make clean all flash
2. Run the `sniffer.py` script (change to subfolder `tools/`) as follows :
For serial port:
```
$ ./sniffer.py serial <tty> <baudrate> <channel> [outfile]
$ ./sniffer.py [-b baudrate] <tty> <channel> [outfile]
```
For network socket:
```
$ ./sniffer.py socket <host> <port> <channel> [outfile]
$ ./sniffer.py <host>:<port> <channel> [outfile]
```
The script has the following parameters:
- **connType:** The type of connection to use. Either `serial` for serial ports or
`socket` for network sockets.
- **host:** The host if the `socket` connection type is in use.
- **port:** The port of the host if the `socket` connection type is in use.
- **tty:** The serial port the RIOT board is connected to. Under Linux, this is
typically something like /dev/ttyUSB0 or /dev/ttyACM0. Under Windows,
this is typically something like COM0 or COM1. This option is used
for the `serial` connection type.
- **baudrate:** The baudrate the serial port is configured to. The default in
RIOT is 115200, though this is defined per board and some boards
have some other value defined per default. NOTE: when sniffing
networks where the on-air bitrate is > baudrate, it makes sense
to increase the baudrate so no data is skipped when sniffing.
This option is used for the `serial` connection type.
- **channel:** The radio channel to use when sniffing. Possible values vary and
depend on the link-layer that is sniffed. This parameter is
ignored when sniffing wired networks.
- **[outfile]:** When this parameter is specified, the sniffer output is saved
into this file. See the examples below for alternatives to
specifying this parameter. (optional)
For detailed information on the parameters use the scripts on-line help:
```
./sniffer.py -h
```
### Examples
@ -88,14 +70,14 @@ is used.
Dump packets to a file:
```
$ ./sniffer.py serial /dev/ttyUSB1 500000 17 > foo.pcap
$ ./sniffer.py -b 500000 /dev/ttyUSB1 17 foo.pcap
```
This .pcap can then be opened in Wireshark.
Alternatively for live captures, you can pipe directly into Wireshark with:
```
$ ./sniffer.py serial /dev/ttyUSB1 500000 17 | wireshark -k -i -
$ ./sniffer.py -b 500000 /dev/ttyUSB1 17 | wireshark -k -i -
```
#### Windows (serial)
@ -104,7 +86,7 @@ For windows you can use the optional third argument to output to a
.pcap:
```
$ ./sniffer.py serial COM1 500000 17 foo.pcap
$ ./sniffer.py -b 500000 COM1 17 foo.pcap
```
#### IoT-Lab Testbed (socket)
@ -119,6 +101,6 @@ ssh -L 20000:_node-id_:20000 _user_@_site_.iot-lab.info
Then you can dump or observe the traffic generated by the other nodes running the `gnrc_networking`
application via one of the following commands:
```
$ ./sniffer.py socket localhost 20000 26 > foo.pcap
$ ./sniffer.py socket localhost 20000 26 | wireshark -k -i -
$ ./sniffer.py localhost:20000 26 foo.pcap
$ ./sniffer.py localhost:20000 26 | wireshark -k -i -
```

View File

@ -50,6 +50,8 @@ SIG = 0
SNAPLEN = 0xffff
NETWORK = 230 # 802.15.4 no FCS
DEFAULT_BAUDRATE = 115200
def configure_interface(port, channel):
line = ""
@ -141,16 +143,17 @@ def main():
else:
default_outfile = sys.stdout
p = argparse.ArgumentParser()
p.add_argument("-b", "--baudrate", type=int, default=115200,
p.add_argument("-b", "--baudrate", type=int, default=DEFAULT_BAUDRATE,
help="Baudrate of the serial port (only evaluated "
"for non TCP-terminal)")
"for non TCP-terminal, default: %d)" %
DEFAULT_BAUDRATE)
p.add_argument("conn", metavar="tty/host:port", type=str,
help="Serial port or TCP (host, port) tuple to "
"terminal with sniffer application")
p.add_argument("channel", type=int, help="Channel to sniff on")
p.add_argument("outfile", type=argparse.FileType("w+b"),
default=default_outfile, nargs="?",
help="PCAP file to output to")
help="PCAP file to output to (default: stdout)")
args = p.parse_args()
conn = connect(args)