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