利用 MD5 + MAC address 實作 LabVIEW 軟體授權

在某些情況下,開發者或發行者為了限制軟體的使用,會透過授權機制來控管軟體的運行情境。我之前遇到一個狀況,要把 LabVIEW 程式跟特定電腦的 MAC address 綁定,之後使用者只能在綁定過的電腦上使用該程式。若把程式移到其它電腦上程式便無法運行。

根據上述情境,程式設計的需求可細分成兩個部分:

  1. 註冊:根據使用者提供的 MAC address,生成一組序號或授權檔,並讓使用者輸入或安裝。這組序號或授權檔需要加密。
  2. 驗證:要發佈給使用者的程式執行檔中,需包含取得本機 MAC address,並根據使用者所輸入的序號或所安裝的授權碼進行比對,再決定是否要啟動或運行程式。

本文所述即是上述中採用「檢查授權檔的驗證機制」,內容是使用 MD5 加密。開發工具可到這邊下載:

LV-md5-license-authorizer

環境需求

LabVIEW 2016 或更高版本,並安裝 OpenG MD5 Digest Library v4.1 以上版本(可在 VIPM 中搜尋並下載)。

使用

LV-md5-license-authorizer 這套開發工具的使用可以分成「授權註冊」與「軟體開發」、「使用者」三個部分:

授權註冊:

  • 根據使用者提供的 MAC address,以 Generate license file for that machine.vi 生成授權檔 license.dat,將之交付予使用者,並告知授權檔的放置路徑。
  • 在測試時,可以使用 Generate license file for this machine.vi 為本機生成授權檔。
Generate license file for that machine.vi
Generate license file for this machine.vi

其中授權檔內容的加密與檢驗是透過 LabVIEW OpenG 函式庫中的 MD5 工具來完成。MD5 工具根據使用者給予的 MAC address 字串以 MD5 演算法生成雜湊碼(hash)並寫入 license.dat 中。

為了提升破解難度,進行 MD5 加密時,除了 MAC address 外,還需要加入 prefix string(前綴字串)。prefix string 必需只有開發者才知道。

軟體開發:

  1. 將授權檢查器(Check license file.vi)以 subVI 的形式置入程式的初始化區塊。prefix string 可在這邊設定。
  2. 將程式 build 成執行檔並發佈。
Check license file.vi

若不將 LabVIEW 程式打包成執行檔,使用者可以透過檢查 block diagram 找出 prefix string,他便可以「猜測」並生成 license.dat。

使用者:

  1. 向程式開發者或發行者註冊自己電腦上 MAC address,取得 license.dat。
  2. 將 license.dat 放在電腦的指定目錄中。
  3. 開啟 LabVIEW 執行檔。授權成功程式正確執行;反之程式關閉,並提醒軟體授權失敗(MAC address 不符或授權檔不正確等)。

授權檔 license.dat 是根據使用者提供的 MAC address,加上開發者的 prefix string,以 MD5 演算法生成。使用者打開程式時,程式中的 Check license file.vi 會抓取本機的 MAC address 與 prefix string,依樣畫葫蘆地生成 MD5 雜湊並比對授權檔(prefix string 在 build 成執行檔時已經被加密了)。比對成功才能執行程式主要功能。

詳細使用情形可參考 LV-md5-license-authorizer 中的範例(examples/)。


整個授權驗證的機制非常單純。雖然 MD5 並非極度可靠的加密機制,但是用來防堵非駭客等級的使用者綽綽有餘。最後歡迎提出改善建議。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s