在計算機硬體裝置中 cpu id、bios、主機板、記憶體、硬碟、卷sn,網絡卡mac位址可作為機器特徵碼,通過硬體檢測工具如everest可以看到這一點。
cpu id
cpu id並不具備唯一性,同一批號的cpu其id可能相同
1、wmi
select processorid from win32_processor
2、api
貌似沒有相關win32 api可以用於獲取cpu id的
基本上是返回「0000000000」
2、api
沒有找到相關api
3、asm
沒有找到c#相關
主機板 sn
1、wmi
select serialnumber from win32_baseboard
基本上返回空
2、api
沒有找到相關api
3、asm
沒有找到c#相關
記憶體 sn
1、wmi
select serialnumber from win32_physicalmemory
基本上返回空
2、api
沒有找到相關api
3、asm
沒有找到c#相關
硬碟 sn
scsi硬碟據說是沒有id的
1、wmi
select serialnumber from win32_physicalmedia
對sata硬碟無效
2、api
deviceiocontrol 這是乙個複雜的函式,以下是乙個摘自網路可以直接呼叫的cs
3、使用dll
提取硬碟id動態鏈結庫 v2.00
卷 id
由format命令生成,ghost可複製,同時也存在卷id修改軟體
1、wmi
select volumeserialnumber from win32_logicaldisk
2、api
getvolumeinformation
網絡卡 mac
獲取mac的方法有很多,常規方法如wmi、api、com、networkinte***ce類等,請參考「網絡卡mac位址修改」一章,網絡卡的mac位址是可以偽造的,要獲取韌體中的mac位址,應使用deviceiocontrol api
以下是摘自網路的乙個可以直接呼叫的css
可以以networkinte***ce類的id屬性呼叫getnicaddress
注意:
硬體的id也好sn也好,甚至包括網絡卡的mac並不是絕對具備的或可讀取的,不同的硬體產商可能有不同的作法,因此在處理硬體特徵碼時應作好空判斷及異常捕獲
deviceioconstrol是可以被hook的
可以考慮用其它資訊,如硬體的guid、deviceid等作為特徵
推薦使用cpuid+硬碟sn+卷sn+網絡卡韌體mac作為機器特徵碼,並對組成作最底限制,如必須有某些特,否則生成的相應特徵碼是不安全的
參考資料:
c#獲取電腦硬體資訊(cpu id、主機板id、硬碟id、bios編號)說明
獲取網絡卡mac、硬碟序列號、cpu id、bios編號
c#取機器碼
c#應用:讀取指定碟符的硬碟序列號
c#讀硬碟序列號的原**
c#**獲取網絡卡位址
c#實現啟用、禁用本地網路的三種方式
C 特徵碼定位
include include include bool getprocessmodulehandle dword pid,const char szmodulename,moduleentry32 pmodule 獲取模組資訊的 bool stringtobyte const char inbuf...
機器學習 特徵工程 特徵篩選
1 冗餘 部分特徵相關度太高,消耗計算效能,影響決策樹分支的選擇。2 雜訊 部分特徵是對 結果有負影響 3 降維 減少特徵數量 降維,使模型泛化能力更強,減少過擬合 4 特徵選擇與降維的關係 特徵選擇只篩選掉原本特徵裡和結果 關係不大的,後者做特徵的計算組合構成新特徵。svd pca降維也能解決一定...
機器數機器碼
定點數的機器碼中零的表示形式 正數的補碼就是其本身,負數的補碼其最高位 符號位 為1,其餘各位是對原碼取反再加1。所以,對於8位二進位制數,正0的原碼 補碼就是00000000,負數的原碼是10000000,反碼為11111111,被碼是反碼加1,就是 1 00000000。其中 1 是超出8位的進...