概要
AutoCAD應用環境下通過第三方軟件加密的DWG圖紙,在解密過程中容易遇到圖塊無限縮小隱藏和背景顏色一致隱藏兩種漏洞。本軟件旨在通過掃描解密的DWG圖紙,根據用戶設置的閥值遍歷圖紙中的圖塊和進行顏色的相似度比較。如果發現異常情況,則生成報告提示使用者。
二、系統開發環境
01.Visual Studio C++ 2008。
02.Microsoft Foundation Class(MFC)。
03.AutoCAD ObjectARX2008/ObjectARX2010。
三、系統運行環境
01.AutoCAD2008/AutoCAD2010。
02..NetFramework2.0/.NetFrameWork3.5。
03.MFC基礎運行庫。
四、系統工作流程圖
本軟件共分為三層,第一層是界面(UI)層,采用MFC技術實現。主要負責和用戶的交互操作。第二層是COM層,主要是負責MFC和核心層(ObjectARX)層的通訊。同時完成AutoCAD后臺啟動、退出、DWG文件的打開和關閉等基礎操作。
第三層是核心層,主要負責實現系統的核心功能,文件的遍歷、圖塊參數讀取、閥值比較、顏色的讀取、顏色的相似度比較、生成報告等操作。
五、系統界面設計
本系統采用了盡量簡化的用戶操作界面,第一個導入文件按鈕,選擇以后會彈出文件選擇對話框,用戶選擇需要掃描的DWG文件。
第二個是圖塊掃描部分,需要輸入圖塊縮小的閥值,如0.05,則系統負責識別所有插入的XYZ比例小于0.05的圖塊。
第三個按鈕執行圖塊掃描工作,生成圖塊掃描報告。
第四個是顏色相似度選擇分為精度高,精度低兩等級。精度高執行背景顏色和實體顏色完全一致的遍歷工作。精度低執行背景色和實體顏色近似的比較工作,掃描出的實體可能較多。
六、系統實現關鍵技術
01.單獨的可執行文件操作,AutoCAD后臺運行,對用戶透明。
獨立的ObjectARX技術開發出的.arx文件是一種動態連接庫文件,他和AutoCAD本身需要運行在一個進程內部,它具有開發接口強大,運行速度快的優點。但是必須以AutoCAD菜單和命令的形式進行操作,AutoCAD屬于前臺操作。本軟件由于采用了COM層,把AutoCAD作為一個自動化對象進行操作。這樣就可以把AutoCAD置在后臺,通過獨立的EXE文件進行用戶操作。同時由于核心層采用了ObjectARX,保留了接口強大和速度快的優點。
02.多文件掃描技術。
MFC的CFileDialog類支持多文件選擇。用戶選擇文件以后,需要通過Vector得到所有文件名稱,然后通過COM接口逐個執行文件的打開,發送遍歷命令和關閉操作。
03.DWG圖形遍歷技術。
DWG的圖形遍歷放置在了核心層(ARX層)。由于AutoCAD的DWG文件本身是一種數據庫,所有的圖形實體是以數據庫對象的形式存儲于DWG文件中。而對于圖塊我們只關心插入比例,對于圖形我們關心的是顏色,所以需要寫專門的遍歷圖塊和其他圖形的函數,完成遍歷工作。
04.圖塊嵌套遍歷技術。
如果把圖塊縮小以后嵌入另外一個圖塊中,然后把另外這個圖塊按照1:1插入,這樣的情況是比較難發現的。這需要嵌套遍歷技術,核心是遞歸技術的利用。對于每一個圖塊進行深度遍歷如果發現圖塊內部也有縮小的圖塊,同樣給出報告。
05.顏色相似度比較技術。
如果圖形和背景的顏色的RGB值完全一致,可以完全遮蓋圖形的顏色。這種情況很好判斷,只需要比較三者是否一致即可。但是對于圖形的顏色和背景色非常接近但不一致的情況,需要顏色相似度比較。目前通用的公式如下:
COLOR1 R1, G1, B1
COLOR2 R2, G2, B2
abs(R1*R1-R2*R2)*0.299 + abs(G1*G1-G2*G2)*0.587+abs(B1*B1-B2*B2)*0.114
七、可擴展性建議
01.本系統以報告的形式提示使用者微小圖塊的插入點和顏色和背景一致的實體位置。這樣可以有效完成圖紙的識別工作。但是不具備直觀性,如果把微小的圖塊的插入點設置的距離圖塊本身距離很遠,那么該圖塊的查找也具有一定的難度。基于這種考慮,未來軟件可以采用直接把圖塊恢復原型,設置圖塊的比例為XYZ三向1:1.或者擴大顯示。
02.背景顏色一致的情況也是不利于根據報告去查找實體的具體位置。特別是在圖紙比較大的情況下。今后可以考慮新建一個圖層,并把這些發現異 常的實體單獨復制到該圖層。這樣使用者可以直接通過圖層看到所有有異常的實體。
03.另外由于核心層采用了AutoCAD強大的二次開發工具ObjectARX,所以本系統具有很大的可擴展空間,例如:
第一,可以和數據庫結合,建立公司常用標準圖塊,標準文件的數據庫,通過系統界面統一管理,統一調用。
第二,再需要進行數據統計,特別是生成報表,材料表(BOM)的時候,可以進行遍歷,快速而準確的生成標準格式的表。
概要
AutoCAD應用環境下通過第三方軟件加密的DWG圖紙,在解密過程中容易遇到圖塊無限縮小隱藏和背景顏色一致隱藏兩種漏洞。本軟件旨在通過掃描解密的DWG圖紙,根據用戶設置的閥值遍歷圖紙中的圖塊和進行顏色的相似度比較。如果發現異常情況,則生成報告提示使用者。
二、系統開發環境
01.Visual Studio C++ 2008。
02.Microsoft Foundation Class(MFC)。
03.AutoCAD ObjectARX2008/ObjectARX2010。
三、系統運行環境
01.AutoCAD2008/AutoCAD2010。
02..NetFramework2.0/.NetFrameWork3.5。
03.MFC基礎運行庫。
四、系統工作流程圖
本軟件共分為三層,第一層是界面(UI)層,采用MFC技術實現。主要負責和用戶的交互操作。第二層是COM層,主要是負責MFC和核心層(ObjectARX)層的通訊。同時完成AutoCAD后臺啟動、退出、DWG文件的打開和關閉等基礎操作。
第三層是核心層,主要負責實現系統的核心功能,文件的遍歷、圖塊參數讀取、閥值比較、顏色的讀取、顏色的相似度比較、生成報告等操作。
五、系統界面設計
本系統采用了盡量簡化的用戶操作界面,第一個導入文件按鈕,選擇以后會彈出文件選擇對話框,用戶選擇需要掃描的DWG文件。
第二個是圖塊掃描部分,需要輸入圖塊縮小的閥值,如0.05,則系統負責識別所有插入的XYZ比例小于0.05的圖塊。
第三個按鈕執行圖塊掃描工作,生成圖塊掃描報告。
第四個是顏色相似度選擇分為精度高,精度低兩等級。精度高執行背景顏色和實體顏色完全一致的遍歷工作。精度低執行背景色和實體顏色近似的比較工作,掃描出的實體可能較多。
六、系統實現關鍵技術
01.單獨的可執行文件操作,AutoCAD后臺運行,對用戶透明。
獨立的ObjectARX技術開發出的.arx文件是一種動態連接庫文件,他和AutoCAD本身需要運行在一個進程內部,它具有開發接口強大,運行速度快的優點。但是必須以AutoCAD菜單和命令的形式進行操作,AutoCAD屬于前臺操作。本軟件由于采用了COM層,把AutoCAD作為一個自動化對象進行操作。這樣就可以把AutoCAD置在后臺,通過獨立的EXE文件進行用戶操作。同時由于核心層采用了ObjectARX,保留了接口強大和速度快的優點。
02.多文件掃描技術。
MFC的CFileDialog類支持多文件選擇。用戶選擇文件以后,需要通過Vector得到所有文件名稱,然后通過COM接口逐個執行文件的打開,發送遍歷命令和關閉操作。
03.DWG圖形遍歷技術。
DWG的圖形遍歷放置在了核心層(ARX層)。由于AutoCAD的DWG文件本身是一種數據庫,所有的圖形實體是以數據庫對象的形式存儲于DWG文件中。而對于圖塊我們只關心插入比例,對于圖形我們關心的是顏色,所以需要寫專門的遍歷圖塊和其他圖形的函數,完成遍歷工作。
04.圖塊嵌套遍歷技術。
如果把圖塊縮小以后嵌入另外一個圖塊中,然后把另外這個圖塊按照1:1插入,這樣的情況是比較難發現的。這需要嵌套遍歷技術,核心是遞歸技術的利用。對于每一個圖塊進行深度遍歷如果發現圖塊內部也有縮小的圖塊,同樣給出報告。
05.顏色相似度比較技術。
如果圖形和背景的顏色的RGB值完全一致,可以完全遮蓋圖形的顏色。這種情況很好判斷,只需要比較三者是否一致即可。但是對于圖形的顏色和背景色非常接近但不一致的情況,需要顏色相似度比較。目前通用的公式如下:
COLOR1 R1, G1, B1
COLOR2 R2, G2, B2
abs(R1*R1-R2*R2)*0.299 + abs(G1*G1-G2*G2)*0.587+abs(B1*B1-B2*B2)*0.114
七、可擴展性建議
01.本系統以報告的形式提示使用者微小圖塊的插入點和顏色和背景一致的實體位置。這樣可以有效完成圖紙的識別工作。但是不具備直觀性,如果把微小的圖塊的插入點設置的距離圖塊本身距離很遠,那么該圖塊的查找也具有一定的難度。基于這種考慮,未來軟件可以采用直接把圖塊恢復原型,設置圖塊的比例為XYZ三向1:1.或者擴大顯示。
02.背景顏色一致的情況也是不利于根據報告去查找實體的具體位置。特別是在圖紙比較大的情況下。今后可以考慮新建一個圖層,并把這些發現異 常的實體單獨復制到該圖層。這樣使用者可以直接通過圖層看到所有有異常的實體。
03.另外由于核心層采用了AutoCAD強大的二次開發工具ObjectARX,所以本系統具有很大的可擴展空間,例如:
第一,可以和數據庫結合,建立公司常用標準圖塊,標準文件的數據庫,通過系統界面統一管理,統一調用。
第二,再需要進行數據統計,特別是生成報表,材料表(BOM)的時候,可以進行遍歷,快速而準確的生成標準格式的表。