Skip to content

Commit

Permalink
sniffer: get connection type from string format
Browse files Browse the repository at this point in the history
The KISS approach alternative to RIOT-OS#38 (also includes RIOT-OS#39, because...).
Disadvantage: we loose backwards compatibility for this tool.
  • Loading branch information
miri64 committed Jun 19, 2018
1 parent eba0b12 commit 6460e98
Showing 1 changed file with 18 additions and 28 deletions.
46 changes: 18 additions & 28 deletions sniffer/tools/sniffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,51 +108,41 @@ def generate_pcap(port, out):


def connect(args):
connType = args.conn_type

conn = None
if connType == "serial":
if args.conn.startswith("/dev/tty") or args.conn.startswith("COM"):
# open serial port
try:
conn = Serial(args.tty, args.baudrate, dsrdtr=0, rtscts=0,
conn = Serial(args.conn, args.baudrate, dsrdtr=0, rtscts=0,
timeout=1)
except IOError:
print("error opening serial port", file=sys.stderr)
print("error opening serial port %s" % args.conn, file=sys.stderr)
sys.exit(2)
else:
try:
port = args.conn.split(":")[-1]
host = args.conn[:-(len(port)+1)]
port = int(port)
except (IndexError, ValueError):
print("Can't parse host:port pair %s" % args.conn, file=sys.stderr)
sys.exit(2)
elif connType == "socket":
host = args.host
port = args.port

try:
sock = socket.socket()
sock.connect((host, port))
conn = sock.makefile("r+b", bufsize=0)
except IOError:
print("error connecting to %s:%s" % (host, port), file=sys.stderr)
sys.exit(2)
else:
print("error: unsupported connection type. Use \"serial\" or \"socket\"")
sys.exit(2)

return conn


def main():
p = argparse.ArgumentParser()
sp = p.add_subparsers(dest="conn_type")
serial_p = sp.add_parser("serial",
help="Parse output of sniffer application "
"connected via serial line")
serial_p.add_argument("tty", type=str,
help="Serial port to board with sniffer application")
serial_p.add_argument("-b", "--baudrate", type=int, default=112500,
nargs="?", help="Baudrate of the serial port")
socket_p = sp.add_parser("socket",
help="Parse output of a TCP-connected sniffer "
"application")
socket_p.add_argument("host", type=str,
help="Host of the TCP-based sniffer application")
socket_p.add_argument("port", type=int,
help="Port of the TCP-based sniffer application")
p.add_argument("-b", "--baudrate", type=int, default=112500,
help="Baudrate of the serial port (only evaluated "
"for non TCP-terminal)")
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=str, default=None, nargs="?",
help="PCAP file to output to")
Expand Down

0 comments on commit 6460e98

Please sign in to comment.