-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
48 lines (34 loc) · 1.66 KB
/
main.py
File metadata and controls
48 lines (34 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
"""Network Security Toolkit - CLI Entry Point."""
import argparse
import sys
from src.scanner.port_scanner import PortScanner
from src.analyzer.vulnerability_checker import VulnerabilityChecker
def parse_args():
parser = argparse.ArgumentParser(description="Network Security Toolkit")
sub = parser.add_subparsers(dest="command")
scan_p = sub.add_parser("scan", help="Port scanning")
scan_p.add_argument("--target", required=True)
scan_p.add_argument("--ports", default="1-1024")
scan_p.add_argument("--common", action="store_true")
scan_p.add_argument("--timeout", type=float, default=2.0)
scan_p.add_argument("--threads", type=int, default=100)
sub.add_parser("analyze", help="Packet analysis").add_argument("--count", type=int, default=100)
sub.add_parser("monitor", help="Traffic monitoring").add_argument("--duration", type=int, default=60)
return parser.parse_args()
def main():
args = parse_args()
if not args.command:
print("Use --help for commands")
sys.exit(1)
if args.command == "scan":
scanner = PortScanner(timeout=args.timeout, max_threads=args.threads)
print(f"Scanning {args.target}...")
results = scanner.scan_common(args.target) if args.common else scanner.scan_range(args.target, *map(int, args.ports.split("-")))
for r in results:
print(f" {r.port:<8} {r.state:<10} {r.service}")
print(f"\n{len(results)} open ports found")
checker = VulnerabilityChecker()
for f in checker.check_open_ports(args.target, [r.port for r in results]):
print(f" [{f.severity.upper()}] {f.title}")
if __name__ == "__main__":
main()