赞
踩
目录
python3.7 windows环境
以下两个都可以扫描指定主机或者指定网段的 IP 对应的 MAC 地址,然后保存到 csv 文件中。用scapy模块写的脚本速度很快,几秒就可以全部扫描完,用python-nmap扫描的比较慢,建议用 scapy 模块写的。
-H 参数可以是一个ip地址,也可以是一个网段。例:192.168.10.100 或 192.168.10.10-20 或 192.168.10.0/24
- # -*- coding: utf-8 -*-
- """
- Created on Wed Nov 7 22:27:55 2018
- @author: 小谢
- """
- from scapy.all import *
- import csv
- import optparse
- import time
- def Ip_Mac(host):
- try:
- ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=host),timeout=2,verbose=False) #发送ARP请求包,verbose=False的话,就不显示发包信息
- except Exception as e:
- print("异常对象的类型是:%s"%type(e))
- print("异常对象的内容是:%s"%e)
- else:
- try:
- with open("ip.csv","w",newline="") as f:
- csv_writer=csv.writer(f)
- csv_writer.writerow(('IP','MAC'))
- for send,rec in ans:
- ip_mac=rec.sprintf("{ARP:%ARP.psrc%-%Ether.src%}") #将包按照固定的格式打印
- print(ip_mac)
- mac=ip_mac.split("-") #去除中间的 - ,返回元组型数据
- csv_writer.writerow(mac) #将元组写入到文件中
- except Exception as e:
- print("异常对象的类型是:%s"%type(e))
- print("异常对象的内容是:%s"%e)
- finally:
- f.close()
- def main():
- usage="python %proc -H 192.168.10.10 / 192.168.10.0/24"
- parser=optparse.OptionParser(usage)
- parser.add_option('-H',dest='Hosts',type='string',help='target hosts')
- (options,args)=parser.parse_args()
- Hosts=options.Hosts
- if Hosts==None:
- print(parser.usage)
- exit(0)
- else:
- Ip_Mac(Hosts)
- main()
既可以扫描一个ip地址,也可以扫描一个网段
这个模块扫描特别慢,不建议使用。
-H 参数可以是一个IP地址或者一个网段。例:192.168.10.100 或192.168.10.10-20 或 192.168.10.0/24
- # -*- coding: utf-8 -*-
- """
- Created on Sun Nov 4 19:58:51 2018
- @author: 小谢
- """
- ##列出给定网段的主机的MAC地址表
- import nmap
- import optparse
- import time
- import csv
- def ListMac(hosts):
- nm=nmap.PortScanner()
- nm.scan(hosts)
- targets=[]
- for t in nm.all_hosts():
- if nm[t]['status']['state']=="up":
- mac=nm[t]['addresses']['mac']
- print("ip: %s mac: %s"%(t,mac))
- targets.append((t,mac))
- else:
- pass
- return targets
-
- def main():
- usage="python %proc -H 192.168.10.10-20"
- parser=optparse.OptionParser(usage)
- parser.add_option('-H',dest='Hosts',type='string',help='target hosts')
- (options,args)=parser.parse_args()
- Hosts=options.Hosts
- if Hosts==None:
- print(parser.usage)
- exit(0)
- else:
- target=ListMac(Hosts)
- try:
- with open("ip.csv","w",newline="") as f:
- csv_writer=csv.writer(f)
- csv_writer.writerow(('IP','MAC'))
- for i in target:
- csv_writer.writerow(i)
- except Exception as e:
- print("异常对象的类型是:%s"%type(e))
- print("异常对象的内容是:%s"%e)
- finally:
- f.close()
- if __name__=='__main__':
- main()
相关文章: Python中Scapy网络嗅探模块的使用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。