系統整合之單點登錄(一)

今年我們部門的公司級任務就是系統整合。現有信息系統太多:OA(e-cology)、百會CRM、8th Manage項目管理、Kingdee EAS、新爲NewWay學習平臺、RTX,還有公司自行開發的:開發管理系統、星聯平臺等。

計劃第一期完成單點登錄,我們準備採用共取共享密鑰的方式。

自有系統實施起來還有些優勢,但外購的系統整合進來就有點難度了,主要是不瞭解其登錄過程中的驗證機制。硬骨頭一個個啃吧

e-cology:密碼爲MD5值;加密方式未知的:BaiHui CRM、8th Manage、Kingdee EAS、NewWay、RTX

2010年時,公司也曾計劃將學習平臺與星聯平臺整合,實現單點登錄。也曾向Newway索取過密碼加密算法,對方以可能妨礙系統安全爲由拒絕了我們公司的請求。後因人事變動,這個事就沒進行下去(當時此任務不是我們部門承接)。不是很牛嘛,先從這個入手吧。

1.首先,通過SQL Server Profiler觀察一下Newwey的登錄過程,找到了用戶表nv_user

select * from nv_user

將newway密文與用Fsum Frontend(SourceForge上開源項目)生成的密文對比,無匹配結果,看來應該不是使用公開的加密算法。

2.Newway是.NET平臺開發的,查看一下安裝目錄,所有的庫都在X:\Newway\SmartLearning2009\Web\bin中。這裏,再次請出一款開源軟件ILSPY(反編譯軟件)。將newway全部庫文件都用ILspy打開,先按Constant以“password”爲關鍵字搜索一下,如下圖:


逐個檢查一下與newv相關的方法,在newv.web.framework.PersonalPasswordEdit中找到了蛛絲馬跡。如下圖:

密碼是由SymmetricCryptoMethod.Encrypto()方法生成的。

再以SymmetricCryptoMethod爲關鍵字搜索所有Type,如下圖:

Oh,My GOD! 大膽猜測Encrypto就是加密方法,Decorypto就是解密方法。通過Decrypto方法就可以輕鬆將密文還原爲原文了,難怪新爲不肯提供啦。

3.寫個小程序驗證一下:

照舊,還是用開源軟件,上Sharpdevelop

A.創建一個項目 > Windows 應用程序

B.添加引用:在項目視圖 > 引用 中單擊右鍵 > 添加引用 >.NET 集合瀏覽器,選擇newv.common.dll

            源代碼中添加 using newv.common;

C.打開窗口設計界面,放置2個TextBox控件,設置窗口Load事件,代碼如下:

  textBox1.Text=newv.common.SymmetricCryptoMethod.Encrypto("321");
      textBox2.Text=newv.common.SymmetricCryptoMethod.Decrypto("VtMgJLGNdLEbVy09UYCTug==");

D.運行程序

 

果然,如我所料Encrypto就是加密方法,Decorypto就是解密方法。

各位管理新爲學習平臺的同學可不要濫用Decrypto()喲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章