基于HOOK技术的本地打印监控系统开发

所需积分/C币:20 2014-05-12 22:28:28 434KB PDF

基于HOOK技术的本地打印监控,截获打印消息,实现打印机的启动关闭功能,以数据文件为纽带,实现打印机信息优化管理。
3762011,Vol.32,No.1 计算机工程与设计 Computer Engineering and Design 3打印信息采集的实现 打印机信息采集模块是利用 Microsd公司提供的打印机 tempt+ 开放程序 Printjob(可以从微软官网中下载得到)进行修改后得 temp =*temp 到用户打印信息,并存储到数据文件,软件中只采集打印文件 的文件名、打印页数和打印时间,每打印一份文件系统会自动 tempcclillji=not 采集相应的数据,存入到temp.pm文件中,而打印份数的判断 OldLvItemlo]- psz Text=" 工作是在主控软件自动解析、存储打印信息模块屮完成的,根 oldLvltem[o] psz Text= tempcc 据打印文件名称出现的次数判断打印文件的价数。 fprintf(fp result, "%S %oS %s'n", Old LvItem [0]. PszText,Old Microsoft公司提供的打印机开放程序 Printjob能够采集tem]. pszText, OldLvitem[2] pszText) 到打印文件名、计算机用户、打印时间和打印页数等信息,这 从程序代码中,我们可以看到之所以对文件名进行空格 些信息都显示在程序创建的窗口里,用户可以通过该窗口查判断,是因为我们在将3个数据信息写入到数据文件时,也是 看打印信息,效果如图2所示。 以空格分开的,如果不进行判断的话,就有可能造成数据文件 里出现多于两个空格分开的数据信息,而主控软件在自动解 析读取数据时,也是以空格进行区分数据的,从而会导致主控 解物的 软件读到的数据出现混乱错误。 13:6pr·E2ta0酊自!L 4打印管理主控软件模块实现 41本地打印监控系统工作流程 本地打印监控系统的操作流程如图3所示。软件在安装 后会被添加到启动项里,每次在启动计算机系统时,软件也会 图2 Printjob采集打印信息窗口 运行,为了能够一直对打印机进行监控,软件没有设置退出的 方法,如果需要退出软件的话,可以在任务管理器里把进程停 通过分析发现 Printiob工程中的 Quelist.C文件中的Set止,这样就退出软件了 QueListContents( HWND hwndList view, QUEUEDATA* pQueue)42用戶登录认证 函数是执行打印信息提取、处理和显示的,所以决定对这个函 为了实现对不可人员打印权限管理和打印信息监控,本 数进行修改完善,最终达到我们的要求 系统设置了用户身份验证功能。打印机在每次开放前需要进 在这个函数里我们主要做了3方面的工作;添加数据文行用户身份验证,为了实现用户登录认证的功能,软件采用了 temp. pm的查询路径;获取我们需要的文件名、打印页数和 打印时间数据信息,分别存入到 OldLvIten[O]. pszText、OdLv 启动主控 ten1] pszText、 OldLvltem[2」 psz Text结构体文本里,去掉其窗 管理软件 口显示的功能代码;打开数据文件,判断 OldLyltem[0]中是否 启动 Printjob 有空格,去掉文件名里的空格,并将我们提取的3个数据以固 等待采集信息 定的格式写入到数据文件里。 打印机默认 对文件进行操作就要保证能够读到文件的正确路径,文 关闭状念 件的路径有多种取法,这里不赘述了,通过分析,我们发现数 据信息存在于 Ivltem pszText结构文本里,通过判断我们把它 用户登录 复制到 OldLvItem pszText里,下面的代码是判断存放文件名的 OIdLvitem0 I pszText结构体文本里是否含有空格?如果存在 开放打印机 空格的话则去掉,然后将3个数据信息中间用空格分开写入 到数据文件里 打印机打印 数据采集 char tempccl1]300 char*temp OldLvltem[O]. pszText 打印数据录入到 Exce表中 char tempe tem 0 清空数据文件 temp. pm内容 Int 1 while(tempe!= 10) if(tempe== D)i) 关闭打印机 else i tempccli]li]=te 图3软件操作流程 李华来,刘载文,许继平,等:基于HOOK技术的本地打印监控系统开发 2011,Vol.32,No.1377 Visual o++与数据库结合的技术,利用ADO技术访问 Access 数据库,通过使用记录集指针判断数据表中是否存在当前输 却职平 入的用户信息来确定用户的使用权限,如果用户名存在则说 技 明用户有使用的权限,否则用户无法对软件继续进行操作,用 删详新 高新 户登录界面效果如图4所示。 高它,具嚷系 用户金陆 用户客:隊华乘 寄“码 打印陆联消暨踏 图4用户登录提示界面 4.3打印信息自动解析存储 用户成功登录后进入到打印服务操作界面,如图5所示, 便可以对打印服务进行操作,默认打印服务是关闭的,用户需 要开放打印服务后打印机才可以使用,如果关闭的状态下使 图6数据录入操作界面 用,系统会弹出对话框提示您不能使用打印机,当您开放打印 服务后,就可以正常使用打印机了,系统会自动将您打印的相 文件的关闭函数 fclose(的形式如下: 关信息保存到 temp. pm数据文件中 fclose文件指针); 前而我们在打开文件时定义了文件指针变量印,现在通 过它把文件关闭,即印不在指向该文件,对于初学编程人员来 说,应该养成在程序终止之前关闭所有文件的习惯,如果不关 闭文佐将会丢失数据 作路交成::盖户,解记局唤 文件打开后就可以对它进行读写了,在C中对文件迸行 读写操作的函数有好几种,常用的读写函数有以下几种函数 fputc(ch,fp);把字符(ch的值)输入到f所指向的文件中去 ch=getc(印);fget函数从文件中带回一个字符,赋给ch.文 件必须是读或写方式打开 其中,ch是要输出或读入的字符,印是前文中提到文件指针变量。 fread(buer,size, count,fp);从文件中读入数据块 fwrite(buffer size, count,fp);将数据块写入文件中 :求邮量的爱 其中, buffer是一个指针,在 fread函数中是读入数据的存放地 址,在 fwrite函数中是要输出数据的地址(以上指的是起始地 址);Size是要读写的字节数; count是要进行读写多少个Size 字节的数据项;印是文件型指针 图5打印服务操作界面 fprintf(文件指针,格式字符串,输出表列); 打印结束后,点击数据录入按钮,进入到数据自动解析、录 fscanf(文件指针,格式字符串,输出表列); 入界面,如图6所示,因为要从 temp. pm文件读取打印信息,所 例如: 以使用了文件打开关闭和读写技术,文件打开实现函数奶下: fscanf(fp, %d", " f, a, b); FILE ip 函数的作用是将整形变量a和b的值按%的格式输出到 fp- fopen(文什名,使用文件方式); 印指向的文件上,如果a=1,b=2,则在文件上的是以下字符串 例如: FILE *fp result=fopen(file, "a+ 其他的读写函数还有putw和getw函数, fgets和fut函 file是要打开的文件名,使用打开方式为“读写”,说明打数,它们的使用说明这里就不做介绍了,在C语言的许多书里 开的文件既可以用来输入数据,也可以用来输出数据,打开都会做相关的介绍,如果斋要可以去査找。将文件的文件名 方式有多种,根据自己的实际需要来选择,例如:"r"(只读)为打印页数和份数分别自动解析、存储到相应编辑框中,补充相 输入打开一个文本文件,"w“(只写)为输出打开灬个文本文关所需的信息,将数据保存到对应的 Excel表中,如图7所示, 件,"a"(追加)向文本文件尾添加数据,"w+“(读写)为读写建立管理者可以通过查询 Excel表,了解打印机的使用情况,也可 个新的文本文件,"a+"(读写)为读写打开一个文本文件,"r+"以打印出来保存入档。 读写)为读写打开一个文本文件。 (下转封三) 表24种不同核函数的支持向量机对图谱识别率的比较 快,识别率较高。 C-5c=10c-20C=50C-100C=200 参考文献 K(x, y)x*y 9%91%91%93%94%94 「]曹永生,孔繁胜,王宇生基于图像处理的种质癸源指纹图谱分 K(x, y(xT*y+1)d 9 K(x,y=tanh((ax*y+b) 91%92%95%94%95% tric/olIHttp://icgr.caas.net.cn/training/forum,2009 K(xy)=exp(rxy)90%90%92%92%93%96% 2}黄湘华,冯秀兰,周建仁,等数字图像处理在植物新品种鉴定中 的应用J林业资源管理,2004(8)60-64. 于一些线性不可分的数据效果不是很好。而支持向量模型[3陆波尉询楷毕笃彦支持向量机在分类中得应用国图象 虽然训练识別的速度要慢,但遇到样本是线性不可分的情 图形学报,2005,10(8):1029-1035 况,支持向量机通过事先确定的非线性映射将输入量映射到[4]杨志民,刘广利不确定性支持向量机原理及应用M北京科 个高维特征空间,在此高维空间中构建最优超平面。从而 技出版社,2007:57-61 解决线性不可分的问题,识别率总体来说要比欧几里得距离5]李进波,方宣钧杨国才,等两系杂交稻亲本SSR指纹图谱的 分类要高 建立及其在种子纯度鉴定中的应用杂交水稻,205,20(2) 4结束语 50-53 「6周延清DNA分子标记技术在植物研究中的应用[M.北京化 为了采用计算机辅助快速鉴别农作物品种,研究人员 学工业出版社,2005:131-133 从图谱颈处理、特征提取、特征匹配方法等不同的角度提出[7陆宗骐金登男. Visual C↓+NET图像处理编程Ml北京清华 了各自的方法。但是,依据品种图谱快速鉴别品种离实用 人学出版社,2006:97-101. 阶段仍然有一定的距离。本文从分类器的角度,提出“种[8] Hsu w, Lin C J.A comparison of methods for multicalss sup- 基于机器学习的品种图谱鉴别方法,尝试利用支持向量机 port vector machines[J]. IEEE Trans on Neural Networks, 2002 较强的泛化能力以及在线性不可分间题上的优势,解决特 13(2):415-425 征提取后不同类别样本之间细微差别所带来的识别困难。[91应自炉李景文张有为基于融合的多类支持向量机计算机 实验表明,本方法对图谱的预处理要求不高,分辨速度较 工程,2009,35(10):187-188 上接第377页) 的打印机起到了辅助作用,使打印机的功能更完普。系统核 心技术的钩子过程,由于其特殊的功能,得到了广泛的使用 感汉 在我们身边有很多基于HOOK进程控制的产品,典型的应用 如屏暮取词、软件汉化等,甚至病毒和木马程序也使用了钩子 函数,所以在使用时,一定要端正心态,不要利用钩子技术 进行窃取别人的账号和密码信息等非法治动。 参考文献 [1]徐希炜网络打印系统的组建方式及常见打印改障处理[J.中 图7打印信息存入 EXCEL表 国科技信息,2009,17:93-96 [2]孙鑫余安萍VC++深入详解[M]北京电子工业出版社,200 最后,我们需要关闭打印服务,这样再次需要打印文件 723-751 时,需要重新登录验证,开放打印服务 3]陈龙.21天学通VC++M].北京:电子工业出版社,2009: 306-320 5结束语 [4]骆力明符字同,鲁悦利用Hook技术实现进程控制[J微计算 由于普通打卬机本身不具备认证的功能,所以在有些公 机信息,2007,24240-242 司员工利用公司的打印机打印自已私有文件的现象常常发生,[5]倪步喜. Windows的钩子技术及实现叮计算机与现代化,200ˉ 损害了公司的利益,而且现有的打印机系统也没有欢打印信 (1):28-30 息的记录功能,用户无法知道打印机都打印过哪些文件,什么6]谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005: 时间打印的,打印的用户是谁?特别在一些需要保密的企事 330-347 业单位,不希望自己公司的资料信息被带出去,所以对打印机[7余姜德于志平 Windows钩子技术在病毒程序中的应用现 进行监控管理显得十分重要 代计算机,2005(283-86 基于HoOK技术本的地打卬监控系统,利用诸多开发技[8]杨瑾基于远程线程插入DLL技术的嵌套式木马设计]计算 术实现了对打即控制管理,很好的解决了以上的问题,对用户 机与信息技术,2007(4):78-80.

...展开详情
上传资源赚积分,得勋章
相关内容推荐