python獲取ipmac
主要利用python的wmi模塊,提供非常多的信息。
importwmi
defsys_version():
c=wmi.WMI()
#操作系統版本,版本號,32位/64位
print(' OS:')
sys=c.Win32_OperatingSystem()[0]
print(sys.Caption,sys.BuildNumber,sys.OSArchitecture)
#CPU類型CPU內存
print(' CPU:')
processor=c.Win32_Processor()[0]
print(processor.Name.strip())
Memory=c.Win32_PhysicalMemory()[0]
print(int(Memory.Capacity)//1048576,'M')
#硬碟名稱,硬碟剩餘空間,硬碟總大小
print(' DISK:')
fordiskinc.Win32_LogicalDisk(DriveType=3):
print(disk.Caption,'free:',int(disk.FreeSpace)//1048576,'M ','All:',int(disk.Size)//1048576,'M')
#獲取MAC和IP地址
print(' IP:')
forinterfaceinc.Win32_NetworkAdapterConfiguration(IPEnabled=1):
print("MAC:%s"%interface.MACAddress)
forip_addressininterface.IPAddress:
print(" IP:%s"%ip_address)
#BIOS版本生產廠家釋放日期
print(' BIOS:')
bios=c.Win32_BIOS()[0]
print(bios.Version)
print(bios.Manufacturer)
print(bios.ReleaseDate)
sys_version()
顯示:
OS:
MicrosoftWindows10專業版1713464位
CPU:
Intel(R)Core(TM)[email protected]
8192M
DISK:
C:free:34165M All:120825M
D:free:265648M All:390777M
E:free:35669M All:204796M
F:free:5814M All:28163M
G:free:328650M All:329999M
IP:
MAC:00:50:56:C0:00:01
IP:192.168.182.1
IP:fe80::e0fb:efd8:ecb0:77f4
MAC:00:50:56:C0:00:08
IP:192.168.213.1
IP:fe80::8da1:ce76:dae:bd48
MAC:54:E1:AD:77:57:AB
IP:192.168.199.105
IP:fe80::aca8:4e6f:46e7:ef4a
BIOS:
LENOVO-1
LENOVO
20170518000000.000000+000
② 如何自動獲取ip地址
在大多數情況下,無法直接從本機自動獲取IP地址,因為IP地址是由計算機網路中的路由器或DHCP伺服器分配的。然而,你可以使用編程語言或命令行工具來獲取你的IP地址。
1. 使用命令行工具獲取IP地址:
- 在Windows上,打開命令提示符(按下Win + R鍵,然後鍵入cmd並按回車鍵),輸入"ipconfig"命令,查找"IPv4地址"(通常是以"192.168."開頭的地址)。
- 在Mac上,打開終端(通過應用程序->實用工具->終端),然後輸入"ifconfig"命令,查找"inet"關鍵字旁邊的IP地址。
- 在linux上,打開終端,然後輸入"ifconfig"命令或者"ip addr"命令,查找"inet"關鍵字旁邊的IP地址。
2. 使用編程語言獲取IP地址:
- Python: 使用socket庫中的gethostname()和gethostbyname()函數來獲取主機名和IP地址。示例代碼如下:
```python
import socket
hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)
print("Hostname:", hostname)
print("IP Address:", ip_address)
```
- java: 使用java.net包中的InetAddress類來獲取本機IP地址。示例代碼如下:
```java
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetIPAddress {
public static void main(String[] args) {
try {
InetAddress ip = InetAddress.getLocalHost();
System.out.println("IP Address: " + ip.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
```
- C#: 使用System.Net命名空間中的Dns類來獲取IP地址。示例代碼如下:
```csharp
using System;
using System.Net;
class GetIPAddress {
static void Main(string[] args) {
string hostName = Dns.GetHostName();
string ipAddress = Dns.GetHostEntry(hostName).AddressList[0].ToString();
Console.WriteLine("Hostname: " + hostName);
Console.WriteLine("IP Address: " + ipAddress);
}
}
```
無論使用哪種方法,你都可以獲得本機的IP地址。注意,如果你的計算機連接到區域網或使用了代理伺服器,獲取的IP地址可能是區域網地址或代理伺服器的地址,而不是公共IP地址。
③ 我想用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地址
④ Python網路編程5-實現DHCP Client
DHCP(Dynamic Host Configuration Protocol,動態主機配置協議),前身是BOOTP協議,是一個區域網的網路協議,使用UDP協議工作,統一使用兩個IANA分配的埠:67(伺服器端),68(客戶端)。主要作用是集中的管理、分配IP地址,使client動態的獲得IP地址、Gateway地址、DNS伺服器地址等信息。
option欄位
DHCP報文中的Options欄位可以用來存放普通協議中沒有定義的控制信息和參數。如果用戶在DHCP伺服器端配置了Options欄位,DHCP客戶端在申請IP地址的時候,會通過伺服器端回應的DHCP報文獲得Options欄位中的配置信息。
獲取IP地址過程
實驗使用的linux 主機由兩個網路介面,其中ens33使用DHCP獲取IP地址,ens37使用靜態IP地址;因此需要使用ens33來發送數據包。
Change_MAC.py用於MAC地址與Bytes類型相互轉換。
DHCP_Discover.py用於發送DHCP Discover報文;其中GET_MAC.py見ARP章節。
DHCP_Request.py用於發送DHCP Request報文。
DHCP_FULL.py用於完成DHCP Client與DHCP Server的報文交互
Wireshark對遠程linux主機抓包,結果如下
客戶端以廣播發送DHCP Discover包,其中報文操作類型為1(請求報文),DHCP客戶端的MAC地址設置為00:0c:29:03:a1:08,option53設置報文類型為Discover,option55(請求選項列表)中包含請求的參數。
伺服器以單播向客戶端回復信息,其中報文操作類型為2(應答報文),分配給客戶端的IP為192.168.160.146,option 53設置報文類型為offer,Option 54設置伺服器標識為192.168.160.254,其他option為客戶端請求列表的應答。
值得注意的是,交互的四個報文中Transaction ID均為0x00000000,表明是同一次DHCP交互報文。
⑤ MacOS 怎麼用Python3獲取當前用戶的IP地址
首先,你獲取的是什麼內網IP和公網IP沒有說清楚,如果是內網IP可以利用執行命令獲取的返回值來得到mac肯定有對應的命令,利用os.popen函數來執行命令,如果是公網IP隨便找一個介面然後請求一下就有返回值了,這玩意網路還找不到?
⑥ 為什麼我用python做 獲取 mac地址,獲取的是我電腦上藍牙的IP地址
上述代碼和網路設備沒有任何關系