-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNetwork_Client_Scanner.py
More file actions
66 lines (44 loc) · 2.06 KB
/
Copy pathNetwork_Client_Scanner.py
File metadata and controls
66 lines (44 loc) · 2.06 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env python
import scapy.all
import argparse
import sys
from pyfiglet import Figlet
def get_arguments():
parser = argparse.ArgumentParser(prog='python Network_Client_Scanner', usage='%(prog)s [optional arguments] '
'required arguments')
req_arg = parser.add_argument_group("Required Arguments")
req_arg.add_argument("-t", "--target", dest="target_ip", help="Specify Target IP in CIDR Notation", required=True)
options = parser.parse_args(args=None if sys.argv[1:] else ['--help'])
return options
def client_scanner(target_ip):
req_packet = scapy.all.ARP(pdst=target_ip)
broad_packet = scapy.all.Ether(dst="ff:ff:ff:ff:ff:ff")
broad_req = broad_packet / req_packet
(answered_packets, unanswered_packets) = scapy.all.srp(broad_req, timeout=2, verbose=False)
return answered_packets
def info_packets(answered_packets_list):
clients_data = []
for info in answered_packets_list:
client_data_dict = {"IP" : info[1].psrc, "MAC" : info[1].hwsrc}
clients_data.append(client_data_dict)
return clients_data
def main_result(clients_data):
# print("[*] Scanning All Clients on the subnet " + "\'" + target_ip + "\'" + " ...\n")
print("Clients\' IP Addresses\t\t\tClients\' MAC Addresses")
print("--------------------------------------------------------------\n")
for info in clients_data:
print(info["IP"] + "\t\t\t\t " + info["MAC"] + "\n")
print("\n[+] Done!")
def render_text():
print("\n\n----------------------Client Scanner Script made by----------------------\n")
f = Figlet(font='slant')
print(f.renderText('shIVam') + "\t\t\t\t\tv1.0\n\n\n")
def main():
render_text()
options = get_arguments()
print("[*] Scanning all Clients connected to the subnet " + "\'" + options.target_ip + "\'" + " ...\n")
answered_packets_list = client_scanner(options.target_ip)
clients_data = info_packets(answered_packets_list)
main_result(clients_data)
if __name__ == '__main__':
main()