-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNetPulseV2.py
102 lines (85 loc) · 2.72 KB
/
NetPulseV2.py
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import socket
import json
import nmap
import logging
import sys
import art
import scapy.all as scapy
from scapy import *
from art import *
#initialize loggin
logging.basicConfig(filename='netpulse.log', level=logging.INFO, format='%(asctime)s - %(message)s')
tprint("NetPulse", font="rnd-larger")
print("Basic Network Scanner Tool by Toughrebel4041")
print("\n")
#host discovery
def discover_hosts(network):
arp = scapy.ARP(pdst=network)
ether = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
packet = ether/arp
result = scapy.srp(packet, timeout=3, verbose=0)[0]
hosts = []
for sent, received in result:
device_info = {
'ip': received.psrc,
'mac': received.hwsrc
}
hosts.append(device_info)
return hosts
#open port detection
def scan_ports(ip, ports):
open_ports = []
for port in ports:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((ip, port))
if result == 0:
open_ports.append(port)
sock.close()
return open_ports
#service detection
def detect_service(ip, port):
try:
sock = socket.socket()
sock.connect((ip, port))
sock.send(b'HEAD / HTTP/1.0\r\n\r\n')
banner = sock.recv(1024)
sock.close()
return banner.decode()
except:
return None
#OS detection
def os_detection(network):
nm = nmap.PortScanner()
nm.scan(hosts=network, arguments='-O') #flag O for OS Detection
return nm.get_nmap_last_output()
#main func
def netpulse():
network = input("Enter the IP range to scan (e.g., 192.168.1.0/24): ")
ports = list(range(20, 1025))
print("Scanning Network . . .")
devices = discover_hosts(network)
print(f"Discovered Hosts: {len(devices)}")
logging.info(f"Discovered Hosts: {len(devices)}")
print("\nHosts:")
for i, device in enumerate(devices):
print(f"{i+1}. IP: {device['ip']}, MAC: {device['mac']}")
print("\nOS Detection Results:")
os_info = os_detection(network)
print(os_info)
logging.info(f"OS Detection Results: {os_info}")
for device in devices:
ip = device['ip']
print(f"\nScanning {ip}...")
open_ports = scan_ports(ip, ports)
print(f"Open Ports: {open_ports}")
logging.info(f"Open Ports for {ip}: {open_ports}")
print("\nPort Details:")
for port in open_ports:
service = detect_service(ip, port)
print(f"Port {port}: {service}")
logging.info(f"Service on {ip}:{port}: {service}")
print("\nScan complete. Results saved to netpulse.log")
logging.info("Scan complete.")
if __name__ == "__main__":
netpulse()