labview密碼保護方式及如何保護labview密碼不被破解

nvip發表於2016-06-11
 LabVIEW code security: Password Protect VI vs Removing Block Diagram VI
LabVIEW開發環境提供了兩種方式保護程式原始碼的安全性,一個是設定VI的密碼.另一個是移除VI的Block Diagram ,也就是VI的程式邏輯部分. 
NI官方網站的說明也非常詳細可以參考" Security of LabVIEW VI Password Protection vs. Removing VI Block Diagrams " ,雖然此篇文章並沒有明確指出Password Protect VI加密的演演算法型別,懷疑使用了RSA方式加密, RSA非常難於破解,但是事無絕對RSA目前已被證實可經由碰撞而產生另一組解,因此並非完美的加密方式,官方文章也提到Password Protect VI的加密流程也可能因LabVIEW本身程式碼被逆向工程,跳過了判斷驗證密碼的程式導致即使加密,卻被輕鬆破解的結果。 labview  忘記密碼,labivew 密碼忘了,問問QQ:1425939287。 因此NI提供了Removing Block Diagram VI的方式,讓該VI只儲存人機介面與編譯過的Binary Code.此方式仍被破解的可能性只有對方能解讀該Binary Code在該平臺(x86 ...etc)對應的邏輯,因效益太低可能性微乎其微,因該不會有人會想做這種事情.此方式的缺點是該VI僅能提供同樣的LabVIEW版本與使用的平臺環境,例如abc.vi是在LabVIEW 2012,x86 Win7底下進行Removing Block Diagram後, abc.vi未來只能在LabVIEW 2012,x86 Win7的環境下被呼叫使用,因此若要支援多個版本,則須提供相對應的abc.vi. Removing Block Diagram VI的流程如下:


1.建立一個vi,範例用一個簡單的加法運算,並加入專案 labview 密碼破解, labview  忘記密碼,labivew 密碼忘了,問問QQ:1425939287
2.在專案的Builed Specifications專案右鍵選擇New,然後再選擇Source Distribution.
3.在Source File選項中將目標abc.vi設為Always Included.
4.在source File Settings選項中點到abc.vi ,然後在右邊選單會有個Remove block diagram ,把這個選項打勾. 
(後面會再多做一個連Remove front panel打勾的比較)
5.之後點Build按鈕後就會生成不含Block Diagram的vi了.由上圖可以比較一下
abc.vi為原始vi...... 13KB 
abc_RemovingBlackDiagram.vi為移除Block Diagram..... ..6KB 
abc_RemovAnything.vi為移除Front Panel與Block Diagram...... 3KB
6.將移除Block Diagram的vi拿到另外一臺電腦上用LabVIEW 2013的環境開啟就會跳出這個畫面, 底下紅色框框裡顯說Block Diagram已被移除,因此LabVIEW 2013無法進行轉換.

接著用之前文章  提到的程式稍微修改一下​​,可以讀取儲存vi的每個部分,簡單說明幾個部分的名字代表的意義(猜的), 

 labview 密碼破解, labview  忘記密碼,labivew 密碼忘了,問問QQ:1425939287

VICD = VI compiled Data , 這是該vi程式碼compile 成machine code的資料.
BDPW = Block Diagram PassWord ,這是該vi被設Password Protect VI後的密碼生成RSA存放的位置,前32 byte就是該vi被設密碼後的RSA值,後面64 byte可能用來計算vi資料是否遭竄改或毀損(猜的)
FPHb ,  FPSE為Front Panel資料,詳細意義不明
BDHb ,  BDSE為Block Diagram資料 ,詳細意義不明
上面兩張圖是abc.vi與abc_RemovingBlackDiagram.vi的比較
可以看到VICD並未改變, BDHb , BDSE都被移除.
上面這張圖是  abc_RemovAnything.vi  與  abc_RemovingBlackDiagram.vi的比較
可以看到VICD並未改變,  FPHb ,  FPSE和其他一些東西都被移除.
結論: 
1.Password Protect VI極有可能用RSA加密演算法
2.Removing Block Diagram VI無法還原成可編輯的vi 
3.就保護程式碼而言Removing Block Diagram VI比Password Protect VI來的安全,但使用此vi進行開發非常不方便.

相關文章