2013-02-27 56 views
0

我正在嘗試創建一個許可證系統,將許可證的有效性時間與計算機時間進行比較。我想直接從「硬件」獲得時間,以便通過更改操作系統(Windows)時間來欺騙許可證系統是不可能的。如何獲得「硬件時間」

我試過Google搜索,但也許我不知道正確的關鍵字。我檢查過的不同時間的API並不清楚他們是否依賴於操作系統。

你會用什麼API來解決這個問題?

+2

你想相信一臺你沒有完全控制的機器來告訴你時間嗎? (提示:Windows從硬件獲取時間) – 2013-02-27 10:45:13

+1

我建議檢查當前系統時間是否與網絡服務(可能是NTP)相同。事實是,硬件時鐘值是操作系統正在返回的,或者至少這是操作系統希望你相信的東西。它可以很容易僞造。 – subzero 2013-02-27 10:48:37

回答

5

沒有什麼能阻止用戶更改硬件(BIOS)時間。所以,如果你想依靠硬件,你也可以信任Windows系統時間。

一種方法可能是諮詢一個NTP時間服務器。但要確定,您必須設置或使用一個NTP服務器,它可以對自身進行身份驗證。

請參閱NTP FAQ Authentication瞭解更多信息。

但是請記住,只有在有網絡連接的情況下,這才起作用。如果用戶拉動網線或關閉路由器,則此方法將失敗。

+0

很好的答案,謝謝!我明顯錯過了BIOS時間和Windows時間之間的微不足道的關係:幸好我可以假設用戶不能更改BIOS時間。將來,採用NTP服務器和身份驗證的方法可能是一條可行的路線。 – ronkot 2013-02-27 11:07:39

+0

@kullero更改Windows時間也會更改「BIOS時間」......如果您可以假定用戶無法更改其時間,那麼您可以認爲它不能更改其他時間,不是? – 2013-02-27 12:37:10

+0

@ R.MartinhoFernandes真的嗎?!那麼,這對我來說並不明顯。我認爲BIOS與操作系統是分開的,需要進入BIOS,也許給BIOS密碼可以改變BIOS時間。我假設用戶沒有BIOS密碼,因此無法更改BIOS時間。所以我不是對的?困惑:-) – ronkot 2013-02-27 14:00:37