1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python # 扫描端口功能 # 获取网卡的Mac地址 # 局域网扫描器IP地址和MAC地址

Python # 扫描端口功能 # 获取网卡的Mac地址 # 局域网扫描器IP地址和MAC地址

时间:2019-12-28 04:37:03

相关推荐

Python # 扫描端口功能 # 获取网卡的Mac地址 # 局域网扫描器IP地址和MAC地址

#!/usr/bin/env python# -*- coding: utf-8 -*-# 开发人员:# time: -09-07 20:37# 开发工具: PyCharm# Version: 1.0.0"""**声明:# 扫描端口功能,get_ip_status()# 获取网卡的Mac地址 ,network_card_mac()# 局域网扫描器,scapy ,IP地址和MAC地址, scapy_network_ip_mac()# 网段IP&Mac ARP协议扫描器,ip_mac_scanner()# 获取网卡名称和其ip地址,get_netcard()**"""def get_ip_status(ip,port):""" # 扫描指定IP 端口功能 """import socketserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:server.connect((ip,port))print('{0} port {1} is open'.format(ip, port))except Exception as err:print(err)print('{0} port {1} is not open'.format(ip,port))finally:server.close()host = '192.168.9.123'for port in range(20,100):get_ip_status(host,port)def network_card_mac():""" 获取网卡的Mac地址 """from psutil import net_if_addrsfor k, v in net_if_addrs().items():for item in v:address = item[1]if '-' in address and len(address) == 17:print(address.replace("-", ":"))def scapy_network_ip_mac():""" 局域网扫描器,scapy ,IP地址和MAC地址 """#from scapy.all import *from scapy.layers.l2 import Ether, ARPfrom scapy.sendrecv import srpimport socketimport retry:# 局域网扫描器,scapy# 首先要选择网卡的接口,就需要查看网卡接口有什么,在进行选择# name = (show_interfaces())wind_host_name = socket.gethostname() # 获取当前主机名wind_ip = socket.gethostbyname(wind_host_name) # 获取当前主机ipudp_gw_ip = str(re.findall(r'(?<!\d)\d{1,3}\.\d{1,3}\.\d{1,3}(?=\.\d)', wind_ip)[0]) + '.0'# wifi = 'Realtek PCIe GBE Family Controller'wifi = '以太网'if wifi:# 模拟发包,向整个网络发包,如果有回应,则表示活跃的主机p = Ether(dst='ff:ff:ff:ff:ff:ff') / ARP(pdst='%s/24' % udp_gw_ip)# ans表示收到的包的回复ans, unans = srp(p, iface=wifi, timeout=5)print("一共扫描到%d台主机:" % len(ans))# 将需要的IP地址和Mac地址存放在result列表中result = []for s, r in ans:# 解析收到的包,提取出需要的IP地址和MAC地址result.append([r[ARP].psrc, r[ARP].hwsrc])# 将获取的信息进行排序,看起来更整齐一点result.sort()# 打印出局域网中的主机for ip, mac in result:print(ip, '------>', mac)except Exception as e:print(e)def ip_mac_scanner(hosts: str, local_mac: str, detail: bool = False):# ip_mac_scanner('ip地址/24', local_mac=Mac网卡地址, detail=True)# ip_mac_scanner('192.168.199.0/24', local_mac= '3C:2C:30:E7:**:**', detail=True)"""网段IP&Mac ARP协议扫描器:param hosts: 网段 e.g.‘*.*.*.*/*’:param local_mac: 本地MAC地址,e.g.‘**-**-**-**-**-**’:param detail: 是否显示详细信息:return: dict { IP: MAC, .... }"""from scapy.layers.l2 import Ether, ARPfrom scapy.sendrecv import srpimport warningsif detail:print('scanning %s by ARP...' % hosts)packet = Ether(dst="ff:ff:ff:ff:ff:ff", src=local_mac) / ARP(pdst=hosts)if detail:_Answer, _unAnswer = srp(packet, timeout=2, verbose=3)else:_Answer, _unAnswer = srp(packet, timeout=2, verbose=0)if detail:print("%d host(s) found:" % len(_Answer))result = {}for Send, Receive in _Answer:_IP = Receive[ARP].psrc_Mac = Receive[ARP].hwsrcif _IP not in result:result[_IP] = _Macelse:warnings.warn('{_IP_} -> {_nowMac_} unexpected. {_IP_} -> {_existMac_} is ''already exist.'.format(_IP_=_IP, _nowMac_=_Mac, _existMac_=result[_IP]))if detail:print(result)return resultdef get_netcard():"""获取网卡名称和其ip地址 """import psutil# 获取网卡名称和其ip地址,不包括回环netcard_info = []info = _if_addrs()for k, v in info.items():for item in v:if item[0] == 2 and not item[1] == '127.0.0.1':netcard_info.append((k, item[1]))return netcard_infoif __name__ == '__main__':pass

Python # 扫描端口功能 # 获取网卡的Mac地址 # 局域网扫描器IP地址和MAC地址 获取网卡名称和其ip地址

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。