用python查找統(tǒng)一局域網(wǎng)下ip對(duì)應(yīng)的mac地址
MAC地址也叫物理地址、硬件地址,由網(wǎng)絡(luò)設(shè)備制造商生產(chǎn)時(shí)燒錄在網(wǎng)卡(Network lnterface Card)的EPROM(一種閃存芯片,通常可以通過(guò)程序擦寫(xiě))。IP地址與MAC地址在計(jì)算機(jī)里都是以二進(jìn)制表示的,IP地址是32位的,而MAC地址則是48位的 [3] 。
MAC地址的長(zhǎng)度為48位(6個(gè)字節(jié)),通常表示為12個(gè)16進(jìn)制數(shù),如:00-16-EA-AE-3C-40就是一個(gè)MAC地址,其中前3個(gè)字節(jié),16進(jìn)制數(shù)00-16-EA代表網(wǎng)絡(luò)硬件制造商的編號(hào),它由IEEE(電氣與電子工程師協(xié)會(huì))分配,而后3個(gè)字節(jié),16進(jìn)制數(shù)AE-3C-40代表該制造商所制造的某個(gè)網(wǎng)絡(luò)產(chǎn)品(如網(wǎng)卡)的系列號(hào)。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地說(shuō),MAC地址就如同身份證上的身份證號(hào)碼,具有唯一性
我們可以編寫(xiě)如下python代碼來(lái)查詢
# arp掃描,定義一個(gè)函數(shù),發(fā)送兩層的arp包,請(qǐng)求同一局域網(wǎng)內(nèi)其他IP地址的mac地址。
from scapy.all import *
import uuid,socket
# 獲取本機(jī)的IP地址。
def get_ip_address():
# 獲取本機(jī)電腦名
myname = socket.getfqdn(socket.gethostname())
# 獲取本機(jī)ip
myaddr = socket.gethostbyname(myname)
return myaddr
# 獲取本機(jī)的mac地址。
def get_mac_address():
mac = uuid.UUID(int=uuid.getnode()).hex[-12:]
return ":".join([mac[e:e + 2] for e in range(0, 11, 2)])
# arp掃描,獲取統(tǒng)一局域網(wǎng)下的IP地址的mac地址。
def arp_scan(ip):
# 獲取本機(jī)的mac地址。
local_mac = get_mac_address()
# 獲取本機(jī)的ip地址。
local_ip = get_ip_address()
# print(type(local_ip),type(local_mac))
# 分隔IP地址。
ip_split = ip.split('.')
ip_list = []
# 進(jìn)行重新定義ip地址段。
for i in range(1,25):
ip_list.append(ip_split[0] + '.' + ip_split[1] + '.' + ip_split[2] + '.' + str(i))
print(ip_list,local_ip,local_mac)
# arp_result = srp(Ether(src = local_mac,dst = 'ff:ff:ff:ff:ff:ff')/ARP(op = 1,hw = '00:00:00:00:00:00',psrc = local_ip,pdst = ip_list),timeout = 1,verbose = False)
# 構(gòu)造二層包,寫(xiě)入以太網(wǎng)層,這里每一層包需要填什么字段,可以取scapy界面看一下。
arp_result = srp(Ether(src=local_mac, dst='ff:ff:ff:ff:ff:ff')/ARP(op=1, hwsrc=local_mac, hwdst='00:00:00:00:00:00',psrc=local_ip, pdst=ip_list), timeout=1,verbose=False)
# 進(jìn)行解包操作。
mac_result = arp_result[0].res
mac_list = []
# 找到對(duì)應(yīng)的IP地址和MAC地址。
for i in range(len(mac_result)):
ip = mac_result[i][1][1].fields['psrc']
mac = mac_result[i][1][1].fields['hwsrc']
mac_list.append([ip,mac])
return mac_list
if __name__ == "__main__":
ip = '192.168.156.1'
mac_list = arp_scan(ip)
for i in range(len(mac_list)):
print("IP地址:",mac_list[i][0],'MAC地址:',mac_list[i][1])
以上就是用python查找統(tǒng)一局域網(wǎng)下ip對(duì)應(yīng)的mac地址的詳細(xì)內(nèi)容,更多關(guān)于python 查找mac地址的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
k-means 聚類算法與Python實(shí)現(xiàn)代碼
這篇文章主要介紹了k-means 聚類算法與Python實(shí)現(xiàn)代碼,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
Python全面解析json數(shù)據(jù)并保存為csv文件
這篇文章主要介紹了Python全面解析json數(shù)據(jù)并保存為csv文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
Python開(kāi)發(fā)圍棋游戲的實(shí)例代碼(實(shí)現(xiàn)全部功能)
圍棋是一種古老而復(fù)雜的策略棋類游戲,起源于中國(guó),已有超過(guò)2500年的歷史,本文介紹了如何用Python開(kāi)發(fā)一個(gè)簡(jiǎn)單的圍棋游戲,實(shí)例代碼涵蓋了游戲的基本規(guī)則、界面設(shè)計(jì)、棋盤實(shí)現(xiàn)、棋子管理、游戲邏輯等多個(gè)方面,通過(guò)逐步實(shí)現(xiàn)落子、吃子、判斷勝負(fù)等功能2024-12-12
使用python實(shí)現(xiàn)下拉選擇框和頁(yè)簽的方法
ttk是Python中的一個(gè)模塊,它提供了一組用于創(chuàng)建GUI界面的工具和控件,這些控件包括按鈕、標(biāo)簽、文本框等,可以幫助開(kāi)發(fā)者更方便地創(chuàng)建用戶界面,這篇文章主要介紹了使用python實(shí)現(xiàn)下拉選擇框和頁(yè)簽的方法,需要的朋友可以參考下2023-03-03
python實(shí)現(xiàn)Dijkstra算法的最短路徑問(wèn)題
這篇文章主要介紹了python實(shí)現(xiàn)Dijkstra算法的最短路徑問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Python中encode和encoding的區(qū)別小結(jié)
Python是一種非常流行的高級(jí)編程語(yǔ)言,它提供了許多內(nèi)置函數(shù)和庫(kù)來(lái)方便地處理文本數(shù)據(jù),其中,encode和encoding是處理文本編碼的重要概念,本文就來(lái)介紹一下Python中encode和encoding的區(qū)別小結(jié),感興趣的可以了解一下2023-11-11
Python使用Bokeh實(shí)現(xiàn)交互式圖表的創(chuàng)建
Bokeh?是一個(gè)流行的?Python?數(shù)據(jù)可視化庫(kù),可以生成高質(zhì)量的交互式圖表,這篇文章主要就介紹了Python如何使用Bokeh實(shí)現(xiàn)交互式圖表的創(chuàng)建,需要的可以參考一下2023-06-06
Django使用Profile擴(kuò)展User模塊方式
這篇文章主要介紹了Django使用Profile擴(kuò)展User模塊方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
詳解Python?itertools模塊中starmap函數(shù)的應(yīng)用
starmap是一個(gè)非常有用的函數(shù),它屬于itertools模塊中的一部分,本文將詳細(xì)介紹starmap函數(shù)的作用、用法以及實(shí)際應(yīng)用場(chǎng)景,希望對(duì)大家有所幫助2024-03-03

