DICTIONARIES
- Similar to lists but use key instead of an index.
LISTS
- List of values/elements, all can be stored in one variable.
Improving the Program Using a List of Dictionaries:
#!/usr/bin/env python import scapy.all as scapy def scan(ip): arp_request = scapy.ARP(pdst=ip) broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff") arp_request_broadcast = broadcast/arp_request answered_list = scapy.srp(arp_request_broadcast, timeout=1, verbose=False)[0] clients_list = [] for element in answered_list: clients_dict = {"ip": element[1].psrc, "mac": element[1].hwsrc} clients_list.append(clients_dict) return clients_list def print_result(results_list): print("IP MAC Address ------------------------------------------") for client in results_list: print(client["ip"] + " " + client["mac"]) scan_result = scan("10.0.0.1/24") print_result(scan_result)
Result:
Complete the Python code:
#!/usr/bin/env python import scapy.all as scapy import argparse def get_arguments(): parser = argparse.ArgumentParser() parser.add_argument("-t", "--target", dest="target", help="Target IP / IP range.") options = parser.parse_args() return options def scan(ip): arp_request = scapy.ARP(pdst=ip) broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff") arp_request_broadcast = broadcast/arp_request answered_list = scapy.srp(arp_request_broadcast, timeout=1, verbose=False)[0] clients_list = [] for element in answered_list: clients_dict = {"ip": element[1].psrc, "mac": element[1].hwsrc} clients_list.append(clients_dict) return clients_list def print_result(results_list): print("IP MAC Address ------------------------------------------") for client in results_list: print(client["ip"] + " " + client["mac"]) options = get_arguments() scan_result = scan(options.target) print_result(scan_result)