F12E14
Network Scanning Toolunknown
python
9 months ago
1.7 kB
10
Indexable
import 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()Editor is loading...
Leave a Comment