本發(fā)明涉及金融技術(shù)領(lǐng)域,尤其涉及一種通信口重定向和通信數(shù)據(jù)二次處理的方法。
背景技術(shù):
目前國(guó)內(nèi)各大銀行等金融機(jī)構(gòu)通常采用第三方外圍設(shè)備進(jìn)行日常業(yè)務(wù)辦理,使用串口、usb接口等常見(jiàn)的通信口進(jìn)行數(shù)據(jù)交互。由于銀行業(yè)務(wù)系統(tǒng)更新迭代速度較慢,部分機(jī)構(gòu)分區(qū)自治,第三方廠家切換頻繁,或者產(chǎn)品升級(jí)等情況,常常導(dǎo)致以下一些問(wèn)題發(fā)生:
1)廠家切換,指令集不同,無(wú)法無(wú)縫接入現(xiàn)有業(yè)務(wù)系統(tǒng);
2)外圍集成設(shè)備由于產(chǎn)品升級(jí)或廠家切換,需要切換為幾個(gè)獨(dú)立設(shè)備,原有業(yè)務(wù)系統(tǒng)的通信口只支持單一配置,無(wú)法支持多設(shè)備配置;
3)設(shè)備升級(jí),由通訊較慢的串口通信轉(zhuǎn)換為速度較快的usb接口通訊,原有的業(yè)務(wù)系統(tǒng)只支持串口操作,無(wú)法支持usb接口操作;
4)處于安全考慮,在與外圍設(shè)備的通信過(guò)程需要進(jìn)行密文通信,原有的業(yè)務(wù)系統(tǒng)只支持明文操作。
現(xiàn)有技術(shù)中公開了“一種串行端口重定向系統(tǒng)”,公開日為:2012.05.30,公開號(hào)為:cn202257551u的中國(guó)專利,該實(shí)用新型提供了一種串行端口重定向系統(tǒng),包括:終端、網(wǎng)絡(luò)路由器/集線器及虛擬桌面,終端經(jīng)網(wǎng)絡(luò)路由器/集線器與虛擬桌面建立數(shù)據(jù)通信連接;終端包括終端用于掃描、識(shí)別并且以文件的方式訪問(wèn)終端上的串行端口,完成控制信息和數(shù)據(jù)信息的發(fā)送、接收和處理的串口控制器;虛擬桌面包括用于創(chuàng)建創(chuàng)建虛擬串口和相應(yīng)的設(shè)備節(jié)點(diǎn),建立終端到虛擬桌面的串行端口映射;截取應(yīng)用程序和用戶對(duì)串口設(shè)備的i/o請(qǐng)求和操作,并重定向到終端處理,將終端返回的結(jié)果進(jìn)行分析和處理的虛擬串口控制器。該發(fā)明在端口類型上有一定的局限性,且該發(fā)明所解決的問(wèn)題與本專利申請(qǐng)并不相同,所采用的技術(shù)方案也不同。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題,在于提供一種基于業(yè)務(wù)系統(tǒng)的通信口重定向和通信數(shù)據(jù)二次處理的方法,解決了在業(yè)務(wù)應(yīng)用軟件不升級(jí)時(shí),通信口升級(jí)后(如串口向usb接口升級(jí))或者集成設(shè)備向多個(gè)獨(dú)立設(shè)備切換后的設(shè)備訪問(wèn)問(wèn)題;通過(guò)數(shù)據(jù)的二次處理,解決了在引入新廠家外圍設(shè)備時(shí),新廠家設(shè)備指令集與原有廠家不一致導(dǎo)致的業(yè)務(wù)應(yīng)用軟件無(wú)法正常進(jìn)行設(shè)備交互的問(wèn)題;解決了在外設(shè)通訊安全要求升級(jí)時(shí),數(shù)據(jù)的加解密問(wèn)題。
本發(fā)明是這樣實(shí)現(xiàn)的:一種基于業(yè)務(wù)系統(tǒng)的通信口重定向和通信數(shù)據(jù)二次處理的方法,所述方法為:攔截業(yè)務(wù)系統(tǒng)對(duì)通信口的相關(guān)操作,所述相關(guān)操作包括打開通信端口、向通信端口寫入數(shù)據(jù)、從通信端口讀取數(shù)據(jù)、以及關(guān)閉通信口操作;在打開通信端口時(shí),對(duì)通信口進(jìn)行重定向,映射到其他通信端口;在向通信端口寫入數(shù)據(jù)時(shí),對(duì)數(shù)據(jù)進(jìn)行二次處理,即舊指令解析,并用新的的指令格式進(jìn)行封裝,或者對(duì)數(shù)據(jù)進(jìn)行加密然后下發(fā);在向通信端口讀取數(shù)據(jù)時(shí),同寫入數(shù)據(jù)一樣,進(jìn)行二次處理,即指令拆解封裝,或者對(duì)數(shù)據(jù)進(jìn)行解密;在關(guān)閉通信口操作時(shí),對(duì)重定向的通信口占用進(jìn)行釋放。
進(jìn)一步的,所述方法進(jìn)一步具體為:將一插件注入到業(yè)務(wù)系統(tǒng)中,為后續(xù)的功能實(shí)現(xiàn)提供支持;
在插件中注冊(cè)全局鉤子,這樣在業(yè)務(wù)系統(tǒng)進(jìn)程啟動(dòng)時(shí),會(huì)加載注冊(cè)全局鉤子的該插件,實(shí)現(xiàn)注入;
根據(jù)模塊名及函數(shù)名查找當(dāng)前通信口打開、讀取、寫入、關(guān)閉操作的api在業(yè)務(wù)系統(tǒng)進(jìn)程中的地址;
用插件中自定義的通信口新api地址替換系統(tǒng)進(jìn)程模塊中原有的通信口api地址,并保留原有的通信口api地址信息,這樣當(dāng)系統(tǒng)進(jìn)程調(diào)用通信口相關(guān)api時(shí),調(diào)用的是通信口新api。
進(jìn)一步的,所述通信口進(jìn)行重定向具體為:業(yè)務(wù)系統(tǒng)調(diào)用通信口新api進(jìn)行打開通信口;
若通信方式不變,只是通信口變動(dòng),則在通信口新api實(shí)現(xiàn)里只需修改通信口參數(shù),并使用原有的通信口api進(jìn)行調(diào)用,返回信息通過(guò)通信口新api返回;后續(xù)讀寫關(guān)閉操作均使用原有的通信口api操作即可;
若通信方式變化,則在通信口新api里進(jìn)行新通信方式打開,并將操作結(jié)果及返回信息通過(guò)通信口新api返回;后續(xù)讀寫關(guān)閉操作需進(jìn)行同樣處理,即使用通信口新api進(jìn)行操作。
進(jìn)一步的,所述二次處理具體為:業(yè)務(wù)系統(tǒng)調(diào)用通信口新api進(jìn)行數(shù)據(jù)寫入和讀?。?/p>
若進(jìn)行指令轉(zhuǎn)義,則在數(shù)據(jù)寫入時(shí),先將寫入數(shù)據(jù)進(jìn)行舊指令解析,并用新指令進(jìn)行封裝,再調(diào)用原有的通信口api進(jìn)行寫入,并將操作結(jié)果及返回信息,通過(guò)通信口新api返回;
在數(shù)據(jù)讀取時(shí),先通過(guò)調(diào)用原有的通信口api讀取,獲取的數(shù)據(jù)用新指令進(jìn)行解析,并用舊指令進(jìn)行封裝,將操作結(jié)果及返回信息,通過(guò)通信口新api返回;
若進(jìn)行數(shù)據(jù)密文交互,則在數(shù)據(jù)寫入時(shí),先將寫入數(shù)據(jù)進(jìn)行加密,再調(diào)用原有的通信口api進(jìn)行寫入,并將操作結(jié)果及返回信息,通過(guò)通信口新api返回;在數(shù)據(jù)讀取時(shí),先通過(guò)調(diào)用原有的通信口api讀取,對(duì)獲取的數(shù)據(jù)進(jìn)行解密,將操作結(jié)果及返回信息,通過(guò)通信口新api返回。
本發(fā)明具有如下優(yōu)點(diǎn):本發(fā)明基于通過(guò)通信口重定向,解決了在業(yè)務(wù)應(yīng)用軟件不升級(jí)時(shí),通信口升級(jí)后(如串口向u口升級(jí))或者集成設(shè)備向多個(gè)獨(dú)立設(shè)備切換后的設(shè)備訪問(wèn)問(wèn)題;通過(guò)數(shù)據(jù)的二次處理,解決了在引入新廠家外圍設(shè)備時(shí),新廠家設(shè)備指令集與原有廠家不一致導(dǎo)致的業(yè)務(wù)應(yīng)用軟件無(wú)法正常進(jìn)行設(shè)備交互的問(wèn)題;解決了在外設(shè)通訊安全要求升級(jí)時(shí),數(shù)據(jù)的加解密問(wèn)題。
附圖說(shuō)明
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。
圖1為本發(fā)明中插件注入的流程示意圖。
圖2為本發(fā)明通信口進(jìn)行重定向的流程示意圖。
圖3為本發(fā)明向通信端口寫入數(shù)據(jù)的流程示意圖。
圖4為本發(fā)明通信端口讀取數(shù)據(jù)的流程示意圖。
具體實(shí)施方式
請(qǐng)參閱圖1至圖4所示,一種基于業(yè)務(wù)系統(tǒng)的通信口重定向和通信數(shù)據(jù)二次處理的方法,其特征在于:所述方法為:攔截業(yè)務(wù)系統(tǒng)對(duì)通信口的相關(guān)操作,所述相關(guān)操作包括打開通信端口、向通信端口寫入數(shù)據(jù)、從通信端口讀取數(shù)據(jù)、以及關(guān)閉通信口操作;在打開通信端口時(shí),對(duì)通信口進(jìn)行重定向,映射到其他通信端口;在向通信端口寫入數(shù)據(jù)時(shí),對(duì)數(shù)據(jù)進(jìn)行二次處理,即舊指令解析,并用新的的指令格式進(jìn)行封裝,或者對(duì)數(shù)據(jù)進(jìn)行加密然后下發(fā);在向通信端口讀取數(shù)據(jù)時(shí),同寫入數(shù)據(jù)一樣,進(jìn)行二次處理,即指令拆解封裝,或者對(duì)數(shù)據(jù)進(jìn)行解密;在關(guān)閉通信口操作時(shí),對(duì)重定向的通信口占用進(jìn)行釋放。
所述方法進(jìn)一步具體為:將一插件注入到業(yè)務(wù)系統(tǒng)中,為后續(xù)的功能實(shí)現(xiàn)提供支持;
在插件中注冊(cè)全局鉤子,這樣在業(yè)務(wù)系統(tǒng)進(jìn)程啟動(dòng)時(shí),會(huì)加載注冊(cè)全局鉤子的該插件,實(shí)現(xiàn)注入;
根據(jù)模塊名及函數(shù)名查找當(dāng)前通信口打開、讀取、寫入、關(guān)閉操作的api在業(yè)務(wù)系統(tǒng)進(jìn)程中的地址;
用插件中自定義的通信口新api(簡(jiǎn)稱新api)地址替換系統(tǒng)進(jìn)程模塊中原有的通信口api地址(簡(jiǎn)稱舊api),并保留原有的通信口api地址信息,這樣當(dāng)系統(tǒng)進(jìn)程調(diào)用通信口相關(guān)api時(shí),調(diào)用的是通信口新api。
所述通信口進(jìn)行重定向具體為:業(yè)務(wù)系統(tǒng)調(diào)用通信口新api進(jìn)行打開通信口;
若通信方式不變,只是通信口變動(dòng)(如由串口2映射到串口3),則在通信口新api實(shí)現(xiàn)里只需修改通信口參數(shù),并使用原有的通信口api進(jìn)行調(diào)用,返回信息通過(guò)通信口新api返回;后續(xù)讀寫關(guān)閉操作均使用原有的通信口api操作即可;
若通信方式變化(如由串口通信向hid通信變動(dòng)),則在通信口新api里進(jìn)行新通信方式打開,并將操作結(jié)果及返回信息通過(guò)通信口新api返回;后續(xù)讀寫關(guān)閉操作需進(jìn)行同樣處理,即使用通信口新api進(jìn)行操作。
所述二次處理具體為:業(yè)務(wù)系統(tǒng)調(diào)用通信口新api進(jìn)行數(shù)據(jù)寫入和讀取;
若進(jìn)行指令轉(zhuǎn)義,則在數(shù)據(jù)寫入時(shí),先將寫入數(shù)據(jù)進(jìn)行舊指令解析,并用新指令進(jìn)行封裝,再調(diào)用原有的通信口api進(jìn)行寫入,并將操作結(jié)果及返回信息,通過(guò)通信口新api返回;
在數(shù)據(jù)讀取時(shí),先通過(guò)調(diào)用原有的通信口api讀取,獲取的數(shù)據(jù)用新指令進(jìn)行解析,并用舊指令進(jìn)行封裝,將操作結(jié)果及返回信息,通過(guò)通信口新api返回;
若進(jìn)行數(shù)據(jù)密文交互,則在數(shù)據(jù)寫入時(shí),先將寫入數(shù)據(jù)進(jìn)行加密,再調(diào)用原有的通信口api進(jìn)行寫入,并將操作結(jié)果及返回信息,通過(guò)通信口新api返回;在數(shù)據(jù)讀取時(shí),先通過(guò)調(diào)用原有的通信口api讀取,對(duì)獲取的數(shù)據(jù)進(jìn)行解密,將操作結(jié)果及返回信息,通過(guò)通信口新api返回。
雖然以上描述了本發(fā)明的具體實(shí)施方式,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實(shí)施例只是說(shuō)明性的,而不是用于對(duì)本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。