F12E14
Network Scanning Toolimport socket from concurrent.futures import ThreadPoolExecutor def banner_grab(ip, port): """Attempts to grab the service banner from the target port.""" try: with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.settimeout(2) s.connect((ip, port)) s.sendall(b'GET / HTTP/1.1\r\n\r\n') banner = s.recv(1024).decode().strip() return banner except Exception: return None def scan_port(ip, port): """Scans a single port to check if it's open.""" try: with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.settimeout(1) result = s.connect_ex((ip, port)) if result == 0: banner = banner_grab(ip, port) print(f"[+] Open Port: {port} - Service: {banner or 'Unknown'}") return port, banner except Exception: pass return None def scan_target(ip, ports): """Scans the target IP for open ports.""" print(f"Scanning Target: {ip}") with ThreadPoolExecutor(max_workers=50) as executor: results = executor.map(lambda port: scan_port(ip, port), ports) print("[*] Scan Complete!") def main(): print("=== Simple Python Network Scanner ===") target_ip = input("Enter Target IP Address: ").strip() ports = input("Enter Port Range (e.g., 1-1000): ").strip() try: start_port, end_port = map(int, ports.split('-')) ports_to_scan = range(start_port, end_port + 1) except ValueError: print("Invalid port range. Use format: start-end (e.g., 1-65535)") return scan_target(target_ip, ports_to_scan) if __name__ == "__main__": main()
Leave a Comment