機器特徵碼

2021-05-01 14:20:56 字數 2443 閱讀 4334

在計算機硬體裝置中 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位的進...