mirror of
https://github.com/CyberSecurityUP/NeuroSploit.git
synced 2026-02-12 14:02:45 +00:00
65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
NetworkScanner - A tool for scanning networks to find open ports.
|
|
"""
|
|
import socket
|
|
import logging
|
|
from typing import Dict, List
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class NetworkScanner:
|
|
"""
|
|
A class to scan for open ports on a target machine.
|
|
"""
|
|
def __init__(self, config: Dict):
|
|
"""
|
|
Initializes the NetworkScanner.
|
|
|
|
Args:
|
|
config (Dict): The configuration dictionary for the framework.
|
|
"""
|
|
self.config = config
|
|
self.common_ports = [
|
|
21, 22, 23, 25, 53, 80, 110, 111, 135, 139, 143, 443, 445,
|
|
993, 995, 1723, 3306, 3389, 5900, 8080
|
|
]
|
|
|
|
def scan(self, target: str) -> Dict:
|
|
"""
|
|
Scans a target for open ports.
|
|
|
|
Args:
|
|
target (str): The IP address or hostname to scan.
|
|
|
|
Returns:
|
|
Dict: A dictionary containing the list of open ports found.
|
|
"""
|
|
logger.info(f"Starting network scan on {target}")
|
|
open_ports = []
|
|
|
|
try:
|
|
target_ip = socket.gethostbyname(target)
|
|
logger.info(f"Resolved {target} to {target_ip}")
|
|
|
|
for port in self.common_ports:
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
socket.setdefaulttimeout(1)
|
|
|
|
result = sock.connect_ex((target_ip, port))
|
|
if result == 0:
|
|
logger.info(f"Port {port} is open on {target}")
|
|
open_ports.append(port)
|
|
sock.close()
|
|
|
|
except socket.gaierror:
|
|
logger.error(f"Hostname could not be resolved: {target}")
|
|
return {"error": "Hostname could not be resolved."}
|
|
except socket.error:
|
|
logger.error(f"Could not connect to server: {target}")
|
|
return {"error": "Could not connect to server."}
|
|
|
|
logger.info(f"Network scan finished. Found {len(open_ports)} open ports.")
|
|
return {"target": target, "open_ports": open_ports}
|
|
|