在网络扫描仪中过滤/标记MAC地址的打印结果

问题描述 投票:1回答:1

我是一个初学者,但我正在尝试制作一个网络扫描实用程序,该程序可以过滤特定需求的MAC地址;我工作的公司有网络连接的设备,这些设备根据序列号分配了MAC地址。我发现MAC地址的前6位数字是我们品牌的标志。我在下面做了一个str。 MAC地址的第4个字段是一小段常量,用于指示设备的型号。我已经准备好这些,但实际上是一些数字,例如“ 14”,“ 17”等。

我正在努力寻找一种方法,以“过滤”从扫描中检索出的MAC地址,并根据地址的字段对其进行标记。甚至更好的是,仅打印与startswith(mac_key)匹配的IP和Mac地址,并根据其MAC地址的第4个字段[9:11]标记其余对象。

[通过大量的阅读和帮助,到目前为止,我已经掌握了这一点:

    #!/usr/bin/env python
from scapy.all import ARP, Ether, srp
import socket
# importing main functions from Scapy and Socket

mac_key = '04:24:2f'
# Target value for first three fields of MAC address

hostname = socket.gethostname()
IPAddr = socket.gethostbyname(hostname)
target_ip = ("192.168.{}.0/24".format(IPAddr[6]))
# Assigning index value for third section of IP address
# To make third section of target_ip a variable determined by host
# "/24" denotes IP address spectrum for the ARP packet destination

arp = ARP (pdst=target_ip)
# Creating ARP packet assigned to "target_ip"

ether = Ether(dst="ff:ff:ff:ff:ff:ff")
# Creating Ether broadcast packet
# ff:ff:ff:ff:ff:ff MAC address indicates broadcasting

packet = ether/arp
# Stacking

result = srp(packet, timeout=5, verbose=3)[0]
# Defining result with timeout parameter

clients= []
# Client list to be finished below

for sent, received in result:
    clients.append({'ip': received.psrc, 'mac': received.hwsrc})
    # For each response, append ip and mac address to 'clients' list

print("Devices On This Network:")
print("IP" + " "*18+"MAC")
# Print table of accumulated data

for client in clients:
    print("{:24}    {}".format(client['ip'], client['mac'].startswith(mac_key)))
# Printing IP addresses and assosciated MACs from clients list
# With bool checking against mac_key

下图是终端中的结果;想法是只打印显示TRUE值的行,并根据MAC地址的字段[9:11]添加标签,例如:出现TRUE bool的“ Network Device Pro”,并完全忽略该行, FALSE bool被触发。

我是一个初学者,但我正在尝试制作一个网络扫描实用程序,该程序可以过滤特定需求的MAC地址;我工作的公司的网络连接设备分配了MAC ...

python networking scapy
1个回答
0
投票

使用Scapy内置函数比重写它们更有意义。在这种情况下,请使用arping。为了节省时间(如此处),请阅读the manual

© www.soinside.com 2019 - 2024. All rights reserved.