python獲取網卡
① python pywifi 模塊 如何識別(獲取外置網卡)多張網卡(python的其他模塊也可以)
不知道你是windows還是linux系統,用系統的網路配置命令查看,然後從結果里正則提取即可。
例如windows的 ipconfig /all 裡面就有你要的信息。netsh命令下面也能找到你要的更多參數。
② 在linux下,python怎麼才能抓到網卡上的所有TCP數據包
Ethereal 自帶許多協議的 decoder,簡單,易用,基於winpcap的一個開源的軟體.但是它的架構並不靈活,如何你要加入一個自己定義的的解碼器,得去修改 Ethereal的代碼,再重新編譯,很煩瑣.對於一般的明文 協議,沒有什麼問題,但是對於加密協議,比如網路游戲,客戶端程序一般會在剛連接上的時候,發送一個隨機密鑰,而後的報文都會用這個密鑰進行加密,如此. 要想破解,得要有一個可編程的抓包器.
libpcap是一個不錯的選擇,但是對於抓包這樣需要反復進行」試 驗->修改」這個過程的操作,c 語言顯然不是明智的選擇.
Python提供了幾個libpcapbind。在windows平台上,你需要先安裝winpcap,如果你已經安裝了Ethereal非常好用
一個規范的抓包過程
import pcap
import dpkt
pc=pcap.pcap() #注,參數可為網卡名,如eth0
pc.setfilter('tcp port 80') #設置監聽過濾器
for ptime,pdata in pc: #ptime為收到時間,pdata為收到數據
print ptime,pdata #...
對抓到的乙太網V2數據包(raw packet)進行解包
p=dpkt.ethernet.Ethernet(pdata)
if p.data.__class__.__name__=='IP':
ip='%d.%d.%d.%d'%tuple(map(ord,list(p.data.dst)))
if p.data.data.__class__.__name__=='TCP':
if data.dport==80:
print p.data.data.data # by gashero
一些顯示參數
nrecv,ndrop,nifdrop=pc.stats()
返回的元組中,第一個參數為接收到的數據包,(by gashero)第二個參數為被核心丟棄的數據包。
③ 為什麼用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"命令)。實現物理地址。之後,根據「短時間內該機器的網卡不會出現過大的變動這個前提」,我們可以根據返回內容,切片出我們需要的部分即可。
④ python語言怎麼獲取電腦上行下載的網速
通常網路協議層的驅動程序,都會將發包的數量通知一個服務。如果通過通過這個服務獲得數量就可以知道網速。
另外有一些命令行工具也可以查看網速。你找一找。
如果都沒有辦法,你找一個winpcap,它有python的介面。這個安裝完一定可以查看網路速度。
不過你仔細看一下windows的API中應該有查看適配器狀態的功能。雖然沒有網速,不過是否斷開的狀態是有的。
此外你也可以使用netstat工具,tcpmp工具,查看。把查看的結果變換一下,就是網路速度。