SmokeofCerber
Member
Python:
#!/usr/bin/env python
import scapy.all as scapy
import optparse
def get_arguments():
parser = optparse.OptionParser()
parser.add_option("-t", "--target", dest="target", help="Target IP / IP range")
(options, arguments) = parser.parse_args()
return options
def scan(ip):
arp_pac = scapy.ARP(pdst=ip)
broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
arp_request_broadcast = broadcast / arp_pac
answered_list = scapy.srp(arp_request_broadcast, timeout=1, verbose=False)[0]
clients_list = []
for element in answered_list:
client_dict = {"ip": element[1].psrc, "mac": element[1].hwsrc}
clients_list.append(client_dict)
return clients_list
def print_result(results_list):
print("IP\t\t\t MAC Address\n----------------------------------------------")
for client in results_list:
print(client["ip"] + "\t\t" + client["mac"])
options = get_arguments()
scan_result = scan(options.target)
print_result(scan_result)
делал все по уроку, но у меня он выдает ошибку в виде
root@0:~/PycharmProjects/scan# python scan.py --target 192.168.0.1/24
IP MAC Address
----------------------------------------------
Traceback (most recent call last):
File "scan.py", line 35, in <module>
print_result(scan_result)
File "scan.py", line 29, in print_result
for client in results_list:
TypeError: 'NoneType' object is not iterable
root@0:~/PycharmProjects/scan#
что с этим делать
и ещё
до того как добавить аргументы прога абы как работала, но выдавала информацию только по моему роутеру хотя там и прописаном /24
я подумал, что я что-то не так сделал и заменил таким кодом
import scapy.all as scapy
def scan(ip):
scapy.arping(ip)
scan("192.168.1.1/24")
где это работало исправно