ap_scanner/cli.py (2171B)
1 """Command-line argument parsing."""
2
3 import argparse
4
5 from ap_scanner import __version__
6
7
8 def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
9 """Parse command-line arguments."""
10 parser = argparse.ArgumentParser(
11 prog="uaf",
12 description="UAF (Ultimate AP Finder) - wireless AP scanner for PCI-DSS auditing",
13 )
14 parser.add_argument(
15 "-V", "--version",
16 action="version",
17 version=f"%(prog)s {__version__}",
18 )
19 parser.add_argument(
20 "-i", "--interface",
21 type=str,
22 default=None,
23 help="Wireless interface to use (default: auto-detect)",
24 )
25 parser.add_argument(
26 "-c", "--channels",
27 type=str,
28 default=None,
29 help="Channels to scan, e.g. '1,6,11' or '36-48' (default: all)",
30 )
31 parser.add_argument(
32 "-b", "--band",
33 type=str,
34 choices=["2.4", "5", "6", "all"],
35 default="all",
36 help="Band filter: 2.4, 5, 6 (6GHz), or all (default: all)",
37 )
38 parser.add_argument(
39 "-w", "--write",
40 type=str,
41 default=None,
42 help="CSV output file path (auto-saves on exit)",
43 )
44 parser.add_argument(
45 "--sort",
46 type=str,
47 choices=["rssi", "channel", "essid", "enc"],
48 default="rssi",
49 help="Sort by field (default: rssi)",
50 )
51 parser.add_argument(
52 "--no-color",
53 action="store_true",
54 default=False,
55 help="Disable colored output",
56 )
57 parser.add_argument(
58 "-v", "--verbose",
59 action="store_true",
60 default=False,
61 help="Enable verbose (DEBUG level) logging",
62 )
63 parser.add_argument(
64 "--log-file",
65 type=str,
66 default=None,
67 help="Write log output to file",
68 )
69 parser.add_argument(
70 "--dwell",
71 type=float,
72 default=None,
73 help="Channel dwell time in seconds (default: 0.5)",
74 )
75 parser.add_argument(
76 "--config",
77 type=str,
78 default=None,
79 help="Path to config file (default: ~/.config/ap-scanner/config.ini)",
80 )
81 return parser.parse_args(argv)