1、接口设计方案 一、设计方案 由甲方调用监控模块,控制监控模块启停、设置策略等,经过甲方调用监控模块DLL接口将监控策略通知监控模块,由监控模块监控相关操作行为,并依据策略配置调用甲方提供文件内容检验模块,对相关文件进行文件内容筛查,来确定文件是否是涉密文件。同时经过甲方程序调用乙方监控模块DLL接口获取监控结果。 甲方文件内容检验模块 甲方 程序 监控 监控模块DLL 一、接口部分(监控模块DLL,乙方提供) ************************************ Function:I
2、nit Description:初始化操作 Input:无 Output:无 Return:true:成功,false:失败 Other: *********************************** 1、bool Init(); ************************************ Function:SetRule Description:设置监控规则 Input:char* pRule:监控规则,XML格式,见附1 Output:无 Return:true:成功,false:失败 Other: **************
3、 2、bool SetRule(char* pRule); ************************************ Function:Start Description:设置完规则,开启监控规则生效 Input:无 Output:无 Return:true:成功,false:失败 Other: *********************************** 3、bool Start(); ************************************ Function:Wait
4、Data Description:实时等候获取监控数据能够是一条能够是多条。返回监控结果见附2 Input:无 Output: int &nCount返回总条数,char**&pData返回数据。 Return:-1.异常0.成功获取数据1.结束 / 停止(其它地方调用Stop接口停止) Other:提议乙方内部实现用信号、内核事件等处理方法。 *********************************** 4、int WaitData(int &nCount, char**& pData); 甲方调用伪代码: ThreadFunc() //实时线程 { Wh
5、ile(TRUE) { char** pData = NULL; int nCount = 0; int nRet = WaitData(nCount,pData); //等候一条或多条数据时返回,没有数据就等候。 switch(nRet) { -1.异常continue; 0.成功获取数据 pData[0]、pData[1]、…… 1.结束 / 停止(其它地方调用Stop停止) Return; } FreeData(pData); } } ************************************ Function
6、FreeData Description:释放数据内存接口,对应WaitData函数 Input:int nCount 要释放元素数量,char**要释放数据 Output:无 Return:无 Other: *********************************** 5、FreeData (int nCount ,char** pData); ************************************ Function:Stop Description:停止监控,监控规则失效 Input:无 Output:无 Return:tru
7、e:成功,false:失败 Other: *********************************** 6、bool Stop(); ************************************ Function:UnInit Description:程序退出 Input:无 Output:无 Return:true:成功,false:失败 Other: *********************************** 7、UnInit(); 二、文件检验模块 /**************
8、接口说明*************************** //创建文件检验实例 void (*PCreateFileCheckerObject)(IFileChecker **pObject); //释放文件检验实例 void (*PReleaseFileCheckerObject)(IFileChecker **pObject); 多规则多个关键字组合,则创建多个实例 ----------------------- IFileChecker-------------------------- //初始化 void Init(const char *pN
9、ame, const char *pKeyWords); pName:实例名称随意。但多个实例并行时不能反复; pKeyWords: 关键词组。格式:"机密;秘密;绝密;" //结束调用 void UnInit(); //获取文件信息 bool GetFileInfo(const char *pFilePath, TipsFileBlock *pTFB); pFilePath:文件路径 pTFB:返回数据结构 //释放文件信息 void FreeFileInfo(TipsFileBlock * pTFB); pTFB:需要释放数据结构 //停止目前文件检
10、验 void StopCheck(); *************************************************************/ //------------------------------(.h)头文件以下----------------------------- #pragmaonce structTipsFileBlock { char *pKeyWords;//关键字 char *pSecretLevel; //密级:秘密、机密、绝密中一个 char*pFileBlock; //片段 }; classIFile
11、Checker { public: virtualvoidInit(constchar *pKeyWords) = 0; virtualboolGetFileInfo(constchar *pFilePath, TipsFileBlock *pTFB) = 0; virtualvoidFreeFileInfo(TipsFileBlock * pTFB) = 0; virtualvoidUnInit() = 0; virtualvoidStopCheck() = 0; }; typedefvoid (*PCreateFileCheckerObject)(IFile
12、Checker **pObject); typedefvoid (*PReleaseFileCheckerObject)(IFileChecker **pObject); //------------------------------头文件 end----------------------------- //示例 //--------------获取接口类----------------- HMODULE hDll = LoadLibrary(_T("TipsFileChecker.dll")); if (NULL ==hDll) return; PCreateFileC
13、heckerObjectpCreateFileChecker = (PCreateFileCheckerObject)GetProcAddress(hDll,"CreateFileCheckerObject"); PReleaseFileCheckerObjectpReleaseFileChecker = (PReleaseFileCheckerObject)GetProcAddress(hDll,"ReleaseFileCheckerObject"); if (NULL == pCreateFileChecker || NULL == pReleaseFileChecker) ret
14、urn; IFileChecker* pFileChecker = NULL; pCreateFileChecker(&pFileChecker); //---------------初始化提供关键字------------ CStringAstrName = "FeiMi1"; //多个实例名称任意,但不一样。比如:FeiMi2、FeiMi3、… CStringAstrKeyWords = "秘密;机密;绝密; "; pFileChecker->Init(strName,strKeyWords); //----------------文件命中片段提取---------
15、 CStringAstrFilePath = "C:\\123.docx"; TipsFileBlockfb; pFileChecker->GetFileInfo(strFilePath,&fb); //.... pFileChecker->FreeFileInfo(&fb); //----------------------结束释放---------------- pFileChecker->StopCheck(); pFileChecker->UnInit(); pReleaseFileChecker(&pFileChecker); FreeLibrary(hDll);
16、
三、附
附1:
规则XML:
17、FileType = "txt;doc;"MonProcess ="qq.exe;explorer.exe;"WhiteProcess = "word.exe;wps.exe;"IsBan ="0">
18、件名检验关键字,假如为空表示不检验
ContentWords:文件内容检验关键字,假如为空表示不检验
WhiteProcess:进程白名单
WhitePath:监控路径白名单
MonProcess:监控进程,假如为空表示全部监控
附2:
结果XML:
NET操作行为监控举例:






