A. python怎麼通過ip獲取mac地址
mac自帶python安裝/usr/bin/python目錄
進入終端直接鍵入python即進入交互模式
或python xxx.py 運行 寫python程序
B. python編寫函數判斷輸入是否為有效的物理地址
Mac地址是由12個16進製表示,分成6組,每組2個,中間用:分隔,那麼就是6對16進制數用冒號分隔,可以嘗試使用以下正則來判斷
import re
def validateMac(mac):
# 匹配5個2對16進制的數據後面用冒號結尾:,最後一個沒有冒號:
#匹配16進制數據,0-9,A,B,C,D,E,F(大小寫),一對2個16進制數
if re.match(r"^\s*([0-9a-fA-F]{2,2}:){5,5}[0-9a-fA-F]{2,2}\s*$", mac):
return true
else:
return false
if __name__ == '__main__':
validateMac("F0:76:1C:FB:5B:3B")
大概這個思路,希望能夠幫到你!
C. mac文件路徑怎麼寫python
你好,這個可以去嗶哩嗶哩上面找一個學習教程,然後可以跟著他們一起學習,慢慢你就會知道怎麼寫python路徑了。
D. 我想用python掃描區域網內的ip和mac地址,需要什麼第三方庫
MAC地址也叫物理地址、硬體地址或鏈路地址,由網路設備製造商生產時寫在硬體內部。IP地址與MAC地址在計算機里都是以二進製表示的,IP地址是32位的,而MAC地址則是48位的。MAC地址的長度為48位(6個位元組),通常表示為12個16進制數,每2個16進制數之間用冒號隔開,如:08:00:20:0A:8C:6D就是一個MAC地址,其中前6位16進制數08:00:20代表網路硬體製造商的編號,它由IEEE(電氣與電子工程師協會)分配,而後3位16進制數0A:8C:6D代表該製造商所製造的某個網路產品(如網卡)的系列號。只要你不去更改自己的MAC地址,那麼你的MAC地址在世界是惟一的。
MAC地址的作用
IP地址就如同一個職位,而MAC地址則好像是去應聘這個職位的人才,職位可以既可以讓甲坐,也可以讓乙坐,同樣的道理一個節點的IP地址對於網卡是不做要求,基本上什麼樣的廠家都可以用,也就是說IP地址與MAC地址並不存在著綁定關系。本身有的計算機流動性就比較強,正如同人才可以給不同的單位幹活的道理一樣的,人才的流動性是比較強的。職位和人才的對應關系就有點像是IP地址與MAC地址的對應關系。比如,如果一個網卡壞了,可以被更換,而無須取得一個新的IP地址。如果一個IP主機從一個網路移到另一個網路,可以給它一個新的IP地址,而無須換一個新的網卡。當然MAC地址除了僅僅只有這個功能還是不夠的,就拿人類社會與網路進行類比,通過類比,我們就可以發現其中的類浦?Γ??玫乩斫釳AC地址的作用。
無論是區域網,還是廣域網中的計算機之間的通信,最終都表現為將數據包從某種形式的鏈路上的初始節點出發,從一個節點傳遞到另一個節點,最終傳送到目的節點。數據包在這些節點之間的移動都是由ARP(Address Resolution Protocol:地址解析協議)負責將IP地址映射到MAC地址上來完成的。其實人類社會和網路也是類似的,試想在人際關系網路中,甲要捎個口信給丁,就會通過乙和丙中轉一下,最後由丙 轉告給丁。在網路中,這個口信就好比是一個網路中的一個數據包。數據包在傳送過程中會不斷詢問相鄰節點的MAC地址,這個過程就好比是人類社會的口信傳送過程。相信通過這兩個例子,我們就可以進一步理解MAC地址的作用。
與MAC地址相關的命令與軟體
在人類社會社交中,我們認識一個人往往只會知道他的姓名,而身份證號碼在一般的人際交往中會被忽略。同樣在網路中,我們往往只會知道同事或者網友的IP地址,並不會去過多地關心對方的MAC地址。要成長為網路高手,我們可以使用一些方法去了解對方的MAC地址。在這里介紹兩種常用的方法,在Windows 9x 中可用WinIPcfg獲得,在Windows 2000/XP中可用IPconfig -all獲得。
使用命令只能單條獲得MAC地址,而且使用起來也是很麻煩的。對於網管人員,更希望有一款簡單化操作的軟體,我們可以利用「MAC掃描器」遠程批量獲取MAC地址。它是用於批量獲取遠程計算機網卡物理地址的一款網路管理軟體。該軟體運行於網路(區域網、Internet都可以)內的一台機器上,即可監控整個網路的連接情況,實時檢測各用戶的IP、MAC、主機名、用戶名等並記錄以供查詢,可以由用戶自己加以備注;能進行跨網段掃描,能和資料庫中得IP和MAC地址進行比較,有修改IP的或使用虛假MAC地址的,都能報警。
更改MAC地址
E. python中MAC地址打包問題
# -*- coding=utf8 -*-
import socket
import struct
def WOL(macaddress):
if len(macaddress) == 12:
pass
elif len(macaddress) == 12 + 5:
sep = macaddress[2]
macaddress = macaddress.replace(sep, '')
else:
raise ValueError('Incorrect MAC address format')
data = ''.join(['FFFFFFFFFFFF', macaddress * 16])
send_data = b''
for i in range(0, len(data), 2):
byte_dat = struct.pack('B', int(data[i: i + 2], 16))
send_data = send_data + byte_dat
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(send_data, ('255.255.255.255', 7))
sock.close()
if __name__ == '__main__':
WOL('6C626D4EF0B2')
F. 如何使用python獲取路由器所有mac
1. 安裝pip
sudo easy_install pip
pip 安裝成功就可以直接安裝pil或者pillow
2. 通過命令pip install pil
pip install Pil
Downloading/unpacking Pil
Could not find any downloads that satisfy the requirement Pil
Some externally hosted files were ignored (use --allow-external Pil to allow).
Cleaning up...
No distributions at all found for Pil
Storing debug log for failure in /Users/macbook/Library/Logs/pip.log
3. 所以就安裝pillow
pip install --use-wheel Pillow
Downloading/unpacking Pillow
Downloading Pillow-2.4.0.zip (6.5MB): 5.0MB downloaded
Cleaning up...
弄了會別的回來發現還沒有下載完,這叫一個慢呀,於是放棄
G. 為什麼我用python做 獲取 mac地址,獲取的是我電腦上藍牙的IP地址
上述代碼和網路設備沒有任何關系
H. python3.6 如何獲取區域網ip mac
不是可以孵化進程嗎?popen之類的可以嘗試一下。就是把輸入輸出重定向,你可以孵化一個進程執行nmap,向孵化出來的進程中輸入數據,把輸出讀出來。
I. python3.8下載後mac在哪
在文件夾下。
選擇軟體安裝位置,默認安裝在C盤,點擊Browse可更改軟體的安裝目錄,安裝路徑文件夾名稱均不能含有中文字元,這里將軟體安裝在D盤Python38文件夾下,然後點擊Install。
根據自己電腦系統的位數選擇對應的python38.2軟體安裝包到電腦磁碟根目錄或英文路徑文件夾下,並解壓縮,找到Python,滑鼠右擊選擇以管理員身份運行,這里以64位版本為例。
J. 為什麼用python獲取mac地址會變動
首先聲明,我本人還沒有研究出來問題的究竟。此處只是寫下我本人的一點小心得,大家一起進步。
因為我發現,使用uuid庫得到的mac地址,總有最後一位不對。所以,我就查看了python官方的uuid文檔,找到了問題的關鍵是調用UUID()的時候,會調用getnode()函數以得到物理地址。
這個是getnode()函數的定義:
我把它摘出來,考到下面。
def getnode(*, getters=None):
"""Get the hardware address as a 48-bit positive integer.
The first time this runs, it may launch a separate program, which could
be quite slow. If all attempts to obtain the hardware address fail, we
choose a random 48-bit number with its eighth bit set to 1 as recommended
in RFC 4122.
"""
global _node
if _node is not None:
return _node
if sys.platform == 'win32':
getters = _NODE_GETTERS_WIN32
else:
getters = _NODE_GETTERS_UNIX
for getter in getters + [_random_getnode]:
try:
_node = getter()
except:
continue
if (_node is not None) and (0 <= _node < (1 << 48)):
return _node
assert False, '_random_getnode() returned invalid value: {}'.format(_node)
我正在試圖通過研究這個問題來試圖研究。但同樣,我覺得我們可以直接讓python調用系統庫,從而執行系統自帶的命令:(類似於windows下cmd裡面"ipconfig -all"命令,或者ubuntu下terminal中"ifconfig"命令)。實現物理地址。之後,根據「短時間內該機器的網卡不會出現過大的變動這個前提」,我們可以根據返回內容,切片出我們需要的部分即可。