2011-11-09 22 views
5

我需要生成一個唯一的字符串,它會隨着機器的不同而不同 - 「設備指紋」。生成機器指紋的最佳方法?

什麼是...

  • 定製實現可行的辦法? (我有一些想法,但我認爲你們可能有更好的)
  • 現有的解決方案? (包括商業/非商業是可以接受的)
+1

測試WMI你想讓指紋在用戶升級CPU /內存/硬盤/網卡/等時改變或保持不變... –

+0

你可以給我們一個更詳細的用例嗎?你的機器是移動的嗎?您是否可以安裝證書等(而不是專用設備)?你有控制/所有權的機器或他們居住的網絡? – phatfingers

+0

只是擡起頭來興趣的人 - 爲我所用的情況下,我們最終決定該設備的指紋並不那麼重要。 –

回答

1

設備指紋識別是一個複雜的話題,如果你想覆蓋的許多邊緣的情況下(如硬件升級,操作系統升級等),如果你是擔心人們消耗能量要麼建立一個已知良好的設備指紋(好意味着您已知道指紋並獲得一些好處,例如軟件使用權),或者創建您不知道的全新指紋(例如指紋位於某種黑名單中,並且用戶希望創建一個新的指紋不在黑名單上的設備的設備ID)。

有些東西相當靜態,是一個簡單指紋的合理基礎。 MAC地址最適合該類別,但也很容易改變。另外,有些計算機有幾個MAC地址(包括虛擬機的MAC地址),所以您需要處理這種複雜性。一些網絡設備是短暫的,例如,繫繩手機。

計算機的其他方面很難僞造,但並不是不可能的,例如CPU信息,BIOS校驗和,硬盤序列號等等。然而,這些往往難以僞造的東西也是更可能發生變化(BIOS升級,新硬盤驅動器,可移動硬盤驅動器等)。

您還需要仔細考慮保護實際生成指紋的代碼。如果該代碼很容易(足夠)破解,那麼試圖破解解決方案的人會直接在收集和評估組件的代碼中插入他們想要的任何指紋。

1

那麼什麼我做我的應用程序通常是由與我的應用程序的名稱的散列值取散在Environment發現機器名,CONCAT它創建一個特殊的ID ,然後應用鹽(可能甚至不必要,但它有助於成爲偏執狂)爲應用程序/機器組合生成「指紋」。

這工作在我的情況,因爲只有一個我的應用程序在一個時間的機器上拷貝。

+1

這種做法是有點脆,儘管可能是罰款,許多用例。機器名稱在現實世界中不時發生變化。如果大客戶決定更改機器命名方案,那將導致大量安裝失敗。 –

+0

這是真的,但我不回答與指紋的安裝問題。我用我的指紋識別應用到應用的通信,即該監控狀態/錯誤報告等幾個應用程序應用。這就是我這樣做的原因。 – jlafay

+0

當然,OP沒有說明用例。對於許多場景當然適用。 –

1

大部分機器有一個MAC網卡現在地址(如果沒有連接到網絡,然後你需要什麼了機器的唯一ID?)。只要確保你獲得了物理網卡的MAC地址,而不是虛擬MAC(由VMWare或Virtualbox創建)。您可能需要存儲MAC來自的設備的名稱,以便在枚舉MAC地址時始終獲得相同的MAC地址。也不要將它用於安全性,因爲它總是可以僞造一個MAC地址,它只是提供一個相對唯一的標識符。

+0

如何獲得vmware內的物理MAC?我在Vmware和虛擬網卡上有不同的mac。 – lll

0

一些你想可能取決於你的可見性有問題的系統的東西。例如,您可能擁有個人和/或網絡防火牆和VLAN,這些防火牆和VLAN會阻止您自行查詢設備。我發現,針對網絡基礎架構中的設備(您的交換機用於MAC地址信息,以及您的路由器用於IP地址)的SNMP查詢提供了一個很好的快速圖像。否則,NMAP是你的朋友。

0

您可以使用WMI,並得到網卡MAC地址,硬盤序列(不卷序列),CPU ID和BIOS ID。這種方法的缺點是,在某些機器上有幾個原因一些這方面的信息都無法使用,但您可以從4源相結合的信息和至少一個會在那裏,但WMI在某些機器根本不能按預期工作,你必須有某種後備,比如說所有的機器都可以工作。卷序列號。

的另一個問題是,你必須具有管理員權限才能獲得此信息低谷WMI,我解決了窗口服務,使用WMI,併發送信息到應用程序(S)這個問題。

這裏有一些有趣的WMI查詢:

硬盤連續:

SELECT SerialNumber FROM Win32_PhysicalMedia where SerialNumber <> null 

BIOS中的序列:

SELECT SerialNumber FROM Win32_BIOS where SerialNumber <> null 

CPU串行:

SELECT ProcessorID FROM Win32_Processor 

網卡MAC:

SELECT MACAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True 

btw。你可以用Paessler WMI Tester

+0

卷序列號無法在硬盤更換/升級過程中存活。 –

+0

我知道,這是最後一個選項,只有在您無法從WMI獲取任何信息時 –