目录

用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

# -*- 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地址,也可以扫描一个网段

用 python-nmap 模块写

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

-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网络嗅探模块的使用

Python中python-nmap模块的使用

Python脚本扫描给定网段的MAC地址表(scapy或 python-nmap)的更多相关文章

  1. (转载)详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    郑重声明:原文转载于http://dengqi.blog.51cto.com/5685776/1223132 向好文章致敬!!! 一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理 ...

  2. 网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...

  3. MAC地址表、ARP缓存表以及路由表

    一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...

  4. 详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dengqi.blog.51cto.com/5685776/1223132 一:M ...

  5. 交换机工作原理、MAC地址表、路由器工作原理详解

    一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...

  6. [转载]详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    [转载]详解网络传输中的三张表,MAC地址表.ARP缓存表以及路由表 虽然学过了计算机网络,但是这部分还是有点乱.正好在网上看到了一篇文章,讲的很透彻,转载过来康康. 本文出自 "邓奇的Bl ...

  7. Network基础(四):MAC地址表及邻居信息查看、配置接口速率及双工模式、配置交换机管理IP

    一.MAC地址表及邻居信息查看 目标: 本例要求为修改计算机名并加入工作组: 查看交换机MAC地址表 查看CISCO设备邻居信息 方案: 网络拓扑,如下图所示. 步骤: 步骤一:查看交换机sw1的ma ...

  8. MAC地址表、ARP缓存表、路由表及交换机、路由器基本原理

    在网上找到了这篇讲述MAC地址,ARP协议和路由表的文章,如获至宝.一篇文章把组网中的相关概念讲的明明白白. 原文是发布在51cto博客上,但不知道为什么点进去却是404.让我没想到的是这个技术论坛上 ...

  9. MAC地址表配置与绑定

    MAC地址表分类 ---静态MAC地址表项由用户手工配置,表项不老化: ---黑洞MAC地址表项包括源黑洞MAC地址表项和目的黑洞MAC地址表项,用于丢弃含有特定源MAC地址或目的MAC地址的报文(例 ...

随机推荐

  1. vs2019远程调试

    VS2019远程调试 这几天遇到个很是纠结的问题,同样的源代码,放在测试服务器,完美运行.但是上线正式环境就是死活显示不出来.于是想到了微软的远程调试功能,这里用VS2019举例. 下载远程访问工具 ...

  2. 推荐模型AutoRec:原理介绍与TensorFlow2.0实现

    1. 简介 本篇文章先简单介绍论文思路,然后使用Tensoflow2.0.Keras API复现算法部分.包括: 自定义模型 自定义损失函数 自定义评价指标RMSE 就题目而言<AutoRec: ...

  3. 主机回来以及,简单的环境配置(RTX3070+CUDA11.1+CUDNN+TensorRT)

    紧接着前几天的事: 特殊的日子,想起了当年的双(1080TI)显卡装机实录 和 炼丹炉买不起了:聊一聊这段日子的显卡行情 之后,决定买一台整机玩玩. 而现在,主机终于回!来!了!主机回来干什么,当然是 ...

  4. Windows下常用测试命令

      (1)ping 127.0.0.1 (测试本地网卡,127.0.0.1是本地循环地址,如果本地址无法Ping通,则表明本地机TCP/IP协议不能正常工作) (2)ping 127.0.0.1  - ...

  5. Java标识符,关键字,保留字三者区分(主要是从官网摘抄)

    区分 标识符(Identifiers) An identifier is an unlimited-length sequence of Java letters and Java digits, t ...

  6. Codeforces Round #537 C. Creative Snap

    题面: 传送门 题目描述: 灭霸想要摧毁复仇者联盟的基地.基地的长度为2的n次方,基地可以看成是一个长度为2的n次方的数组.基地的每一个位置可以由很多个超级英雄,但是一个超级英雄只能站一个位置.灭霸想 ...

  7. wget 爬取网站网页

    相应的安装命名 yum -y install wget yum -y install setup yum -y install perl wget -r   -p -np -k -E  http:// ...

  8. 关于生产环境改用G1垃圾收集器的思考

    背景 由于我们的业务量非常大,响应延迟要求高.目前沿用的老的ParNew+CMS已经不能支撑业务的需求.平均一台机器在1个月内有1次秒级别的stop the world.对系统来说是个巨大的隐患.所以 ...

  9. arthas使用

    博客原地址:https://blog.csdn.net/u013076044/article/details/83626202 arthas使用 文章目录 准备 启动Demo 进入arthas控制台 ...

  10. Dynamics CRM开发参考资料

    Developer Guide for Dynamics 365 Customer Engagement https://docs.microsoft.com/en-us/dynamics365/cu ...