fenlan

Everything gonna be fine in the end, if it's not fine, it's not the end.

0%

获取局域网连接设备mac地址

使用工具

nmap: 也就是Network Mapper,最早是linux下的网络扫描和嗅探工具包
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络端口。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。他是网络管理员比用的软件之一,以及用以评估网络系统安全。

步骤

1.通过nmap扫描出连接同一局域网的设备的ip 地址以及 mac 地址,扫描完成再以xml 文件形式储存起来。具体命令如下:

1
# nmap -sP -oX myscan.xml 192.168.1.0/24

需要注意的问题: 如果要获取mac 地址,需要操作系统的管理者权限,对于Linux来说就是root 权限;另外,由于是通过发包探测,如果遇上有防火墙的路由器,会比较麻烦。
缺点: 在扫描设备多的情况下,时间会偏长,亲试最长时间21秒,这根被扫描设备的状态有关。

2.使用python 获取xml 文件中的mac 地址存入指定文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# readxml.py
from xml.dom import minidom

f = open("maclist.txt", 'wb') # 存入mac 地址的目标文件
xmldoc = minidom.parse('myscan.xml') # 获取 nmap 导出的 xml 文件

addrlist = xmldoc.getElementsByTagName('address')
len = (len(addrlist)-1) / 2 # 计算连接设备数量
# 在addrlist 中有 IP 地址 和 mac 地址,因此要减半

print "len :", len
f.write(str(len))
f.write("\n")
for s in addrlist :
if s.attributes['addrtype'].value == "mac" :
f.write(s.attributes['addr'].value)
f.write("\n")

f.close()

3.将两个命令写在一个脚本里面:

1
2
3
4
#!/bin/bash

nmap -sP -oX myscan.xml 192.168.1.0/24
python readxml.py

4.运行脚本搞定