Python脚本扫描给定网段的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
# -*- 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脚本扫描给定网段的MAC地址表(scapy或 python-nmap)的更多相关文章
- (转载)详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
郑重声明:原文转载于http://dengqi.blog.51cto.com/5685776/1223132 向好文章致敬!!! 一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理 ...
- 网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...
- MAC地址表、ARP缓存表以及路由表
一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...
- 详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dengqi.blog.51cto.com/5685776/1223132 一:M ...
- 交换机工作原理、MAC地址表、路由器工作原理详解
一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的.在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据 ...
- [转载]详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
[转载]详解网络传输中的三张表,MAC地址表.ARP缓存表以及路由表 虽然学过了计算机网络,但是这部分还是有点乱.正好在网上看到了一篇文章,讲的很透彻,转载过来康康. 本文出自 "邓奇的Bl ...
- Network基础(四):MAC地址表及邻居信息查看、配置接口速率及双工模式、配置交换机管理IP
一.MAC地址表及邻居信息查看 目标: 本例要求为修改计算机名并加入工作组: 查看交换机MAC地址表 查看CISCO设备邻居信息 方案: 网络拓扑,如下图所示. 步骤: 步骤一:查看交换机sw1的ma ...
- MAC地址表、ARP缓存表、路由表及交换机、路由器基本原理
在网上找到了这篇讲述MAC地址,ARP协议和路由表的文章,如获至宝.一篇文章把组网中的相关概念讲的明明白白. 原文是发布在51cto博客上,但不知道为什么点进去却是404.让我没想到的是这个技术论坛上 ...
- MAC地址表配置与绑定
MAC地址表分类 ---静态MAC地址表项由用户手工配置,表项不老化: ---黑洞MAC地址表项包括源黑洞MAC地址表项和目的黑洞MAC地址表项,用于丢弃含有特定源MAC地址或目的MAC地址的报文(例 ...
随机推荐
- Percona XtraDB Cluster之流量控制
什么是流量控制? Percona XtraDB Cluster具有一种称为流控制的自调节机制.该机制有助于避免集群中最弱/最慢的成员明显落后于集群中其他成员的情况. 当集群成员在写数据很慢(同时又继续 ...
- java下载文件指定目录下的文件
方法一: @RequestMapping('download')def download(HttpServletRequest request, HttpServletResponse respons ...
- Centos mini系统下的Hadoop集群搭建
1.事前了解 1.1 Hadoop 百度百科:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin Hadoop是一个由Apache基金会所开发 ...
- Andrew BP 神经网络详细推导
Lec 4 BP神经网络详细推导 本篇博客主要记录一下Coursera上Andrew机器学习BP神经网络的前向传播算法和反向传播算法的具体过程及其详细推导.方便后面手撸一个BP神经网络. 目录 Lec ...
- unittest系列(三)unittest用例如何执行
在前面的分享中,我们分别讲了unittest的相关流程以及相关断言,那么很多人,都会问了unittest的用例,应该如何执行呢,这次,我们就来看看,unittest用例如何执行.首先,我们可以使用py ...
- 如何对shell脚本中斜杠进行转义?
1.在编写shell脚本时,经常会遇到对某个路径进行替换,而路径中包含斜杠(/),此时我们就需要对路径中涉及的斜杠进行转义,否则执行失败.具体示例如下: 需求描述: 将sjk目录下的test文件中的p ...
- python-顺序串基本操作的实现
1 #*********************************************************************** ** 2 #> File Name: seq ...
- ubuntu修改默认启动内核
一.序言 新换的笔记本由于太新的主板芯片,驱动还没有完善.每次升级系统内核都要小心谨慎.经常发生部分硬件驱动失败的事情.系统Ubuntu 20.04.2 LTS x86_64 ,我现在使用的两个版本的 ...
- 学习C#第二天
变量 变量是什么? 在数学中,我们对变量的概念有一定的了解和认识,如y=x^2,其中,x,y都是变量. 定义 一个变量就是存储区(内存)中的一个存储单元 变量的声明及初始化 使用变量的步骤 声明一个变 ...
- LamPiao靶机work_through
前言 oscp靶机系列的第二篇.只追求做出来的话,这靶机蛮简单的.但是为了提升难度,尽量避免使用msf--毕竟考试只准用一次嘛,自己写了个exp. 正文 主机发现 nmap -sP 192.168.2 ...
