analyze performance upgrade
This commit is contained in:
@@ -1,25 +1,19 @@
|
||||
"""Headless CLI for IoT PreTester 4.6 Demo.
|
||||
|
||||
Examples:
|
||||
python -m analyzer.cli capture.pcapng
|
||||
python -m analyzer.cli capture.pcapng --format json -o report.json
|
||||
python -m analyzer.cli capture.pcapng --format txt --packet-limit 50000
|
||||
|
||||
Exit codes:
|
||||
0 Analysis completed without high or critical findings
|
||||
2 Analysis completed with at least one high or critical finding
|
||||
1 Capture or runtime dependency error
|
||||
Exit codes: 0 no high/critical findings, 2 at least one, 1 runtime error.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import logging
|
||||
import sys
|
||||
|
||||
from . import __version__
|
||||
from .engine import AnalysisEngine
|
||||
from .findings import Severity
|
||||
from .reporting import render, FORMATS
|
||||
from . import logutil
|
||||
|
||||
|
||||
def build_parser() -> argparse.ArgumentParser:
|
||||
@@ -34,6 +28,10 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
help="Output file (default: standard output)")
|
||||
p.add_argument("--packet-limit", type=int, default=None,
|
||||
help="Maximum packets to read from a large capture")
|
||||
p.add_argument("--device-ip", default=None,
|
||||
help="IP address of the device under test (focuses and attributes findings)")
|
||||
p.add_argument("-v", "--verbose", action="store_true", help="Debug logging on stderr")
|
||||
p.add_argument("--log-file", default=None, help="Write the analysis log to this file")
|
||||
p.add_argument(
|
||||
"--version",
|
||||
action="version",
|
||||
@@ -44,15 +42,22 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
|
||||
def main(argv=None) -> int:
|
||||
args = build_parser().parse_args(argv)
|
||||
logutil.configure_console("DEBUG" if args.verbose else "WARNING")
|
||||
|
||||
try:
|
||||
result = AnalysisEngine().analyze_pcap(args.capture, packet_limit=args.packet_limit)
|
||||
with logutil.run_log(args.log_file):
|
||||
result = AnalysisEngine().analyze_pcap(args.capture, packet_limit=args.packet_limit,
|
||||
device_ip=args.device_ip)
|
||||
except FileNotFoundError as exc:
|
||||
print(f"Error: {exc}", file=sys.stderr)
|
||||
return 1
|
||||
except RuntimeError as exc:
|
||||
print(f"Error: {exc}", file=sys.stderr)
|
||||
return 1
|
||||
except Exception as exc:
|
||||
logging.getLogger("analyzer.cli").exception("Unexpected failure")
|
||||
print(f"Error: {exc!r}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
report = render(result, args.format)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user