当前位置:   article > 正文

Python脚本扫描给定网段的MAC地址表(scapy或 python-nmap)_python-nmap怎么扫描出mac地址,和操作系统

python-nmap怎么扫描出mac地址,和操作系统

目录

用scapy模块写

用 python-nmap 模块写


python3.7  windows环境

以下两个都可以扫描指定主机或者指定网段的 IP 对应的 MAC 地址,然后保存到 csv 文件中。用scapy模块写的脚本速度很快,几秒就可以全部扫描完,用python-nmap扫描的比较慢,建议用 scapy 模块写的。

用scapy模块写

-H 参数可以是一个ip地址,也可以是一个网段。例:192.168.10.100  或   192.168.10.10-20 或  192.168.10.0/24

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Wed Nov 7 22:27:55 2018
  4. @author: 小谢
  5. """
  6. from scapy.all import *
  7. import csv
  8. import optparse
  9. import time
  10. def Ip_Mac(host):
  11. try:
  12. ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=host),timeout=2,verbose=False) #发送ARP请求包,verbose=False的话,就不显示发包信息
  13. except Exception as e:
  14. print("异常对象的类型是:%s"%type(e))
  15. print("异常对象的内容是:%s"%e)
  16. else:
  17. try:
  18. with open("ip.csv","w",newline="") as f:
  19. csv_writer=csv.writer(f)
  20. csv_writer.writerow(('IP','MAC'))
  21. for send,rec in ans:
  22. ip_mac=rec.sprintf("{ARP:%ARP.psrc%-%Ether.src%}") #将包按照固定的格式打印
  23. print(ip_mac)
  24. mac=ip_mac.split("-") #去除中间的 - ,返回元组型数据
  25. csv_writer.writerow(mac) #将元组写入到文件中
  26. except Exception as e:
  27. print("异常对象的类型是:%s"%type(e))
  28. print("异常对象的内容是:%s"%e)
  29. finally:
  30. f.close()
  31. def main():
  32. usage="python %proc -H 192.168.10.10 / 192.168.10.0/24"
  33. parser=optparse.OptionParser(usage)
  34. parser.add_option('-H',dest='Hosts',type='string',help='target hosts')
  35. (options,args)=parser.parse_args()
  36. Hosts=options.Hosts
  37. if Hosts==None:
  38. print(parser.usage)
  39. exit(0)
  40. else:
  41. Ip_Mac(Hosts)
  42. main()

既可以扫描一个ip地址,也可以扫描一个网段 

 用 python-nmap 模块写

这个模块扫描特别慢,不建议使用。

-H 参数可以是一个IP地址或者一个网段。例:192.168.10.100 或192.168.10.10-20 或  192.168.10.0/24

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sun Nov 4 19:58:51 2018
  4. @author: 小谢
  5. """
  6. ##列出给定网段的主机的MAC地址表
  7. import nmap
  8. import optparse
  9. import time
  10. import csv
  11. def ListMac(hosts):
  12. nm=nmap.PortScanner()
  13. nm.scan(hosts)
  14. targets=[]
  15. for t in nm.all_hosts():
  16. if nm[t]['status']['state']=="up":
  17. mac=nm[t]['addresses']['mac']
  18. print("ip: %s mac: %s"%(t,mac))
  19. targets.append((t,mac))
  20. else:
  21. pass
  22. return targets
  23. def main():
  24. usage="python %proc -H 192.168.10.10-20"
  25. parser=optparse.OptionParser(usage)
  26. parser.add_option('-H',dest='Hosts',type='string',help='target hosts')
  27. (options,args)=parser.parse_args()
  28. Hosts=options.Hosts
  29. if Hosts==None:
  30. print(parser.usage)
  31. exit(0)
  32. else:
  33. target=ListMac(Hosts)
  34. try:
  35. with open("ip.csv","w",newline="") as f:
  36. csv_writer=csv.writer(f)
  37. csv_writer.writerow(('IP','MAC'))
  38. for i in target:
  39. csv_writer.writerow(i)
  40. except Exception as e:
  41. print("异常对象的类型是:%s"%type(e))
  42. print("异常对象的内容是:%s"%e)
  43. finally:
  44. f.close()
  45. if __name__=='__main__':
  46. main()

相关文章: Python中Scapy网络嗅探模块的使用

                   Python中python-nmap模块的使用

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/157025?site
推荐阅读
相关标签
  

闽ICP备14008679号