CN110532210B - 安全获取操作系统任意输出设备数据的桥接方法 - Google Patents
安全获取操作系统任意输出设备数据的桥接方法 Download PDFInfo
- Publication number
- CN110532210B CN110532210B CN201910726475.1A CN201910726475A CN110532210B CN 110532210 B CN110532210 B CN 110532210B CN 201910726475 A CN201910726475 A CN 201910726475A CN 110532210 B CN110532210 B CN 110532210B
- Authority
- CN
- China
- Prior art keywords
- data
- cdo
- equipment
- port
- data packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 239000000872 buffer Substances 0.000 claims abstract description 13
- 238000012545 processing Methods 0.000 claims description 26
- 238000001914 filtration Methods 0.000 claims description 4
- 238000007405 data analysis Methods 0.000 claims description 2
- 238000003780 insertion Methods 0.000 claims description 2
- 230000037431 insertion Effects 0.000 claims description 2
- 238000012805 post-processing Methods 0.000 claims 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000012464 large buffer Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种安全获取操作系统任意输出设备数据的桥接方法,其在设备驱动和本机端口间设置桥接,获取设备的输出数据,所述桥接的设置方式可以为控制相应的设备驱动截获相关端口的输出数据,通过控制设备对象遍历本机的端口信息,进行各相关端口的绑定,以实现对各相关端口的输出数据进行过滤,将设备驱动截获的输出数据存入数据缓冲区或缓冲器,以便进行相应输出数据的读取和/或处理。本发明克服了hook技术对系统的干扰和妨碍,能够更安全的获取到数据。
Description
技术领域
本发明涉及一种安全获取操作系统任意输出设备数据的桥接方法,属电子信息技术领域。
背景技术
操作系统与外部设备通信有很多种方式,例如串口、并口、USB口和网口等,甚至还有一系列显示器相应的接口,每种接口有不同的接口协议,因此需要有一种获取到所有端口发送出来的数据的同一方法,以方便用户,或适用于用户对输出信息的个性化定制要求。
现有获取系统输出数据的方法是采用hook方式,也就是说将系统输出的api拦截住,然后截取数据。此方法是可以拿到输出的数据,但是hook方式的劣势就是,它属于应用层,首先获取数据的时机比较晚,另外它对系统的影响较大,会导致整个系统变慢,严重时甚至导致软件崩溃。Hook需要将自己的代码注入的宿主的软件中,如果需要获取系统所有的输出,也就是要将系统所有软件都注入一次,大大地消耗计算机性能,而且现在很多软件已经增加了反hook机制,导致在将来使用这种方式的难度会越来越大。
发明内容
为弥补现有技术的不足,本发明提供了一种安全获取操作系统任意输出设备数据的桥接方法,以准确实时的获取到任意输出设备输出的数据,不干扰系统运行,且保证系统安全。
本发明的技术方案是:一种安全获取操作系统任意输出设备数据的桥接方法,其在设备驱动和本机端口间设置桥接(Bridging),获取设备的输出数据。
所述桥接的设置方式可以为控制相应的设备驱动截获相关端口的输出数据。
控制相应的设备驱动截获相关端口的输出数据的方式可以为通过控制设备对象(CDO)设置设备驱动的全局变量CaptureFlag,设备驱动依据所设置的CaputreFlag截获相关端口的输出数据。
优选通过控制设备对象遍历本机的端口信息,进行各相关端口的绑定,对各相关端口的输出数据进行过滤。
在有热插拔设备插入时,可以通过控制设备对象读取热插拔设备的属性,判断是否需要进行绑定,在需要进行绑定的情况下进行绑定。
根据实际需要,可以添加针对热插拔设备的过滤类型。
可以将设备驱动截获的输出数据存入数据缓冲区或缓冲器,以便进行相应输出数据的读取和/或处理。
在将输出数据存入数据缓冲区或缓冲器前,可以由控制设备对象构建相应的输出数据包并将所构建的输出数据包挂起,对象功能设备对象(FDO)将设备驱动截获的输出数据写入挂起的输出数据包。
可以对存入数据缓冲区或缓冲器的输出数据进行改写或不进行改写。
可以在针对数据缓冲区或缓冲器内的输出数据的读取和/或处理完成后或者超过设定的等待时间后,以现有输出数据包的形式或者在重新构建输出数据包后将输出数据包通过相应端口下发到接收设备。
在下发输出数据包前,根据实际需要,可以进行或者不进行端口重置。
本发明的有益效果是:由于采用了驱动层桥接技术,克服了hook技术对系统的干扰和妨碍,方便了软件设置,由于所有设备输出都是先由设备驱动发起,将数据发送到外围设备,本发明在驱动与设备间架起一座桥梁,无需对原设备驱动与设备进行任何改动,不会造成任何的影响,能够更安全的获取到数据。同时,本发明在获取到数据后,还允许根据用户的自定义需求,将源数据进行修改,发送到任意想要的输出设备,实现原有系统操作不变,但输出动态变化的目的。
附图说明
图1是本发明的工作原理示意图。
具体实施方式
参见图1,打印服务或者设备驱动本来的流程应该直接负责将数据发送到输出设备上,本发明在打印服务及设备驱动写数据时进行桥接,先让所有的输出数据经过本发明的过滤,然后再将获取到的数据包下发到原路径上,因此,本发明不必关心是哪个应用发过来的数据,因为所有的应用最终要输出数据,都必须经过系统的输出设备,可以在数据经过输出设备前通过桥接方式轻松的获取到。
要获取所有设备输出信息,就要考虑有哪些设备可以进行数据输出,常见的有串、并、网、U、PS2等接口,每种设备的协议又有很大的差别,为了保证一次桥接,所有设备全部受到监控,本发明将各种设备的过滤方式进行融合,动态在内部进行调整,保证对每种设备都能进行数据采集,又避免相互的干扰。
本发明可以包括下列步骤:
S1.桥接服务初始化;
可以包括下列步骤:
S11:采集程序向CDO(控制设备对象)发送控制码IOCTL_SET_TIMEOUT,设置数据包截获后处理的时间限制(TimeOut);
S12:采集程序向CDO发送遍历本机的端口信息的控制码IOCTL_SET_PORT_INFO,CDO接收到控制码后,遍历系统中所有的端口设备,并逐一进行绑定;
S13:采集程序向CDO发送控制码IOCTL_CAPTURE_PORT_START,设置驱动中的全局变量CaptureFlag,驱动依据CaputreFlag截获特定端口的数据内容;
S14:当有数据流流过端口设备时,采集程序向CDO发送控制码IOCTL_GET_DATA_EX,通知驱动进行数据抓取,CDO接收到通知后,将数据流挂起,等待FDO(功能设备对象)将截获到的数据写入,发出获取到数据对数据进行处理的通知;
S2. 数据截获,
可以包括下列步骤:
S21:驱动根据CaputreFlag的值,截获特定的端口信息;
S22:过滤重发数据包,在任务列表中寻找是否有已经采集到的数据包,如果找到该数据包就根据任务列表中的处理结果,重写数据包进行下发;
S23:将数据写入CDO挂起的数据包中,通知采集程序读取数据内容(当数据缓冲区不足的时候,会通知采集程序读取长度,申请足够大的缓冲区读取数据),在这里等待采集程序将数据完后的通知,等待时间为TimeOut。超出时间后,直接将数据下发到设备。
S3. 重写端口数据,
可以包括下列步骤:
S31:采集程序将数据处理完后,向CDO发送控制码IOCTL_WRITE_BACK_DATA写入处理结果;
S32:如果数据不是任务列表中的数据,则直接下发数据包到设备;
S33:根据应用层数据分析,如果流过硬件设备的数据不是由一个数据包完成的则采用第一种处理方式,否则采用第二种处理方式。
第一种: 删除任务列表中截获到的数据内容,重新构建新的数据包,发送到设备。
第二种 : 将原数据包中buffer中的数据内容替换为处理之后的数据,发送到设备,在完成函数中,根据设备实际处理的长度确定处理方式。实际处理长度和数据长度一致,从任务列表中删除任务,设置Information为旧数据长度;实际处理长度小于数据长度,记录本次处理的长度,设置Information为0,在重发流程中,对数据进行处理。
可以采用下列步骤进行设备热插拔操作:
S41:采集程序向CDO发送控制码IOCTL_SET_EVENT,设置事件对象,驱动程序检测到设备插入后,设置事件对象并通知A读取设备属性,进行超时判断(10s)等待处理结果;
S42: 采集程序向CDO发送控制码IOCTL_GET_USB_PRINTER_PROPERTY,读取设备属性;
S43: 采集程序根据设备读取到的属性,进行处理,并且根据下列两种情况判断是否进行设备的过滤。
第一种:采集程序向CDO发送控制码IOCTL_NO_BIND_PORT,则不需要绑定。
第二种: 采集程序向CDO发送控制码IOCTL_SET_USB_PORT,需则要绑定,并进行超时判断(10s)
S44:CDO将设备绑定完毕后,通知采集程序。
S45:采集程序向CDO发送控制码IOCTL_CAPTURE_PORT_START,添加过滤类型。
Claims (1)
1.一种安全获取操作系统任意输出设备数据的桥接方法,包括下列步骤:
S1. 桥接服务初始化,包括下列步骤:
S11:采集程序向控制设备对象CDO发送控制码IOCTL_SET_TIMEOUT,设置数据包截获后处理的时间限制;
S12:采集程序向CDO发送遍历本机的端口信息的控制码IOCTL_SET_PORT_INFO,CDO接收到控制码后,遍历系统中所有的端口设备,并逐一进行绑定;
S13:采集程序向CDO发送控制码IOCTL_CAPTURE_PORT_START,设置驱动中的全局变量CaptureFlag,驱动依据CaputreFlag截获特定端口的数据内容;
S14:当有数据流流过端口设备时,采集程序向CDO发送控制码IOCTL_GET_DATA_EX,通知驱动进行数据抓取,CDO接收到通知后,将数据流挂起,等待功能设备对象FDO将截获到的数据写入,发出获取到数据对数据进行处理的通知;
S2. 数据截获,包括下列步骤:
S21:驱动根据CaputreFlag的值,截获特定的端口信息;
S22:过滤重发数据包,在任务列表中寻找是否有已经采集到的数据包,如果找到该数据包就根据任务列表中的处理结果,重写数据包进行下发;
S23:将数据写入CDO挂起的数据包中,通知采集程序读取数据内容,在这里等待采集程序将数据完后的通知,等待时间为TimeOut,超出时间后,直接将数据下发到设备;
S3. 重写端口数据,包括下列步骤:
S31:采集程序将数据处理完后,向CDO发送控制码IOCTL_WRITE_BACK_DATA写入处理结果;
S32:如果数据不是任务列表中的数据,则直接下发数据包到设备;
S33:根据应用层数据分析,如果流过硬件设备的数据不是由一个数据包完成的则采用第一种处理方式,否则采用第二种处理方式:
第一种: 删除任务列表中截获到的数据内容,重新构建新的数据包,发送到设备;
第二种 : 将原数据包中buffer中的数据内容替换为处理之后的数据,发送到设备,在完成函数中,根据设备实际处理的长度确定处理方式,实际处理长度和数据长度一致,从任务列表中删除任务,设置Information为旧数据长度;实际处理长度小于数据长度,记录本次处理的长度,设置Information为0,在重发流程中,对数据进行处理,
采用下列步骤进行设备热插拔操作:
S41:采集程序向CDO发送控制码IOCTL_SET_EVENT,设置事件对象,驱动程序检测到设备插入后,设置事件对象并通知读取设备属性,进行超时判断等待处理结果;
S42: 采集程序向CDO发送控制码IOCTL_GET_USB_PRINTER_PROPERTY,读取设备属性;
S43: 采集程序根据设备读取到的属性,进行处理,并且根据下列两种情况判断是否进行设备的过滤:
第一种:采集程序向CDO发送控制码IOCTL_NO_BIND_PORT,则不需要绑定;
第二种: 采集程序向CDO发送控制码IOCTL_SET_USB_PORT,需则要绑定,并进行超时判断;
S44:CDO将设备绑定完毕后,通知采集程序;
S45:采集程序向CDO发送控制码IOCTL_CAPTURE_PORT_START,添加过滤类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910726475.1A CN110532210B (zh) | 2019-08-07 | 2019-08-07 | 安全获取操作系统任意输出设备数据的桥接方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910726475.1A CN110532210B (zh) | 2019-08-07 | 2019-08-07 | 安全获取操作系统任意输出设备数据的桥接方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110532210A CN110532210A (zh) | 2019-12-03 |
CN110532210B true CN110532210B (zh) | 2021-10-22 |
Family
ID=68660521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910726475.1A Active CN110532210B (zh) | 2019-08-07 | 2019-08-07 | 安全获取操作系统任意输出设备数据的桥接方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532210B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1632769A (zh) * | 2003-12-22 | 2005-06-29 | 英业达股份有限公司 | Linux操作系统下IDE设备热插/拔系统及实现方法 |
CN101789898A (zh) * | 2009-01-23 | 2010-07-28 | 雷凌科技股份有限公司 | 用于转发包的方法和设备 |
CN101795271A (zh) * | 2010-01-20 | 2010-08-04 | 西安电子科技大学 | 网络安全打印系统及打印方法 |
CN102420837A (zh) * | 2009-11-10 | 2012-04-18 | 浙江省公众信息产业有限公司 | 基于ndis的方法及系统 |
CN102479147A (zh) * | 2010-11-26 | 2012-05-30 | 航天信息股份有限公司 | 一种WinNT操作系统中截获端口数据的方法和系统 |
CN103024245A (zh) * | 2012-12-14 | 2013-04-03 | 西安电子科技大学 | 追溯打印纸质文档来源的系统及方法 |
CN104063633A (zh) * | 2014-04-29 | 2014-09-24 | 航天恒星科技有限公司 | 一种基于过滤驱动的安全审计系统 |
CN104144793A (zh) * | 2012-03-05 | 2014-11-12 | 精工爱普生株式会社 | 控制系统、控制系统的控制方法、以及记录装置 |
CN104702714A (zh) * | 2015-03-31 | 2015-06-10 | 北京奇虎科技有限公司 | Dns安全查询方法和装置 |
CN106326699A (zh) * | 2016-08-25 | 2017-01-11 | 广东七洲科技股份有限公司 | 一种基于文件访问控制和进程访问控制的服务器加固方法 |
CN109725815A (zh) * | 2019-01-09 | 2019-05-07 | 北京数衍科技有限公司 | 扫描枪与键盘数据输入的区分方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4553364B2 (ja) * | 2005-02-18 | 2010-09-29 | キヤノン株式会社 | 印刷システム |
US7865908B2 (en) * | 2005-03-11 | 2011-01-04 | Microsoft Corporation | VM network traffic monitoring and filtering on the host |
EP1868076A4 (en) * | 2005-03-29 | 2009-04-01 | Science Park Corp | PRINTER CONTROL PROGRAM AND PROGRAM RECOGNITION MEDIUM |
US20080147928A1 (en) * | 2006-10-05 | 2008-06-19 | Richard Nicolet | Transparent support of multiple bus interfaces on a device |
CN100568304C (zh) * | 2007-09-11 | 2009-12-09 | 中商流通生产力促进中心有限公司 | 一种网络税控系统采集销售票据数据的方法 |
JP2012068783A (ja) * | 2010-09-22 | 2012-04-05 | Seiko Epson Corp | 印刷データの価値付加プログラム、価値付加装置、及び、価値付加方法 |
CN102081581B (zh) * | 2010-10-01 | 2013-10-30 | 威盛电子股份有限公司 | 电源管理系统及方法 |
CN102999299A (zh) * | 2011-09-13 | 2013-03-27 | 北京路模思科技有限公司 | 在Windows打印过程中监控打印数据的系统和方法 |
CN103218181A (zh) * | 2012-01-19 | 2013-07-24 | 郑州鼎昌计算机科技有限公司 | 基于虚拟打印机技术的数据安全打印控制方法 |
CN102968282A (zh) * | 2012-11-29 | 2013-03-13 | 北京风驰韦尔科技有限公司 | 靠截获打印数据实现任意账单与小票电子化的方法 |
JP6632424B2 (ja) * | 2016-02-25 | 2020-01-22 | キヤノン株式会社 | 情報処理装置、プログラム及び制御方法 |
CN106445426B (zh) * | 2016-08-31 | 2019-02-22 | 深圳市华阳信通科技发展有限公司 | 基于打印驱动的文本数据采集与打印控制方法及系统 |
-
2019
- 2019-08-07 CN CN201910726475.1A patent/CN110532210B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1632769A (zh) * | 2003-12-22 | 2005-06-29 | 英业达股份有限公司 | Linux操作系统下IDE设备热插/拔系统及实现方法 |
CN101789898A (zh) * | 2009-01-23 | 2010-07-28 | 雷凌科技股份有限公司 | 用于转发包的方法和设备 |
CN102420837A (zh) * | 2009-11-10 | 2012-04-18 | 浙江省公众信息产业有限公司 | 基于ndis的方法及系统 |
CN101795271A (zh) * | 2010-01-20 | 2010-08-04 | 西安电子科技大学 | 网络安全打印系统及打印方法 |
CN102479147A (zh) * | 2010-11-26 | 2012-05-30 | 航天信息股份有限公司 | 一种WinNT操作系统中截获端口数据的方法和系统 |
CN104144793A (zh) * | 2012-03-05 | 2014-11-12 | 精工爱普生株式会社 | 控制系统、控制系统的控制方法、以及记录装置 |
CN103024245A (zh) * | 2012-12-14 | 2013-04-03 | 西安电子科技大学 | 追溯打印纸质文档来源的系统及方法 |
CN104063633A (zh) * | 2014-04-29 | 2014-09-24 | 航天恒星科技有限公司 | 一种基于过滤驱动的安全审计系统 |
CN104702714A (zh) * | 2015-03-31 | 2015-06-10 | 北京奇虎科技有限公司 | Dns安全查询方法和装置 |
CN106326699A (zh) * | 2016-08-25 | 2017-01-11 | 广东七洲科技股份有限公司 | 一种基于文件访问控制和进程访问控制的服务器加固方法 |
CN109725815A (zh) * | 2019-01-09 | 2019-05-07 | 北京数衍科技有限公司 | 扫描枪与键盘数据输入的区分方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110532210A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7392328B2 (en) | Fabric with fibre channel fabric snapshot service | |
CN101561773B (zh) | 一种磁盘数据恢复方法及装置 | |
US7650475B2 (en) | Storage system and method for managing data using the same | |
CN101808123B (zh) | 在存储系统中访问存储资源的方法和装置 | |
CN101359301A (zh) | 一种自动快照的方法及设备 | |
US8555009B1 (en) | Method and apparatus for enabling and managing application input/output activity while restoring a data store | |
WO2022017096A1 (zh) | 屏幕录制方法、电子设备及计算机可读存储介质 | |
WO2014079028A1 (zh) | 数据处理方法和存储设备 | |
CN112130959B (zh) | 一种虚拟机的保护系统及方法 | |
CN110532210B (zh) | 安全获取操作系统任意输出设备数据的桥接方法 | |
CN104750537A (zh) | 一种执行测试用例的方法和装置 | |
CN111090549B (zh) | 一种基于卷cbt驱动的增量回迁卷级数据到原机的方法 | |
CN105763599B (zh) | 一种ipsan下的t-cdp实现方法及装置 | |
WO2013034006A1 (zh) | 文件打开方法、装置及终端 | |
CN109120595A (zh) | 一种实现kvm功能的usb设备通信方法与装置 | |
CN109271341B (zh) | 一种镜像磁盘文件过滤方法 | |
EP4288884A1 (en) | Malware detection system | |
CN103914263A (zh) | Sd卡和访问sd卡的设备及方法 | |
EP3537327A1 (en) | Method and system for implementing secure data deletion in mobile terminal | |
CN113645610B (zh) | 一种基于内网系统的手机数据并行采集方法和系统 | |
CN114546244B (zh) | 一种基于块级别连续数据保护的缓存空间过滤方法 | |
CN113094207B (zh) | 数据备份方法及系统 | |
CN118069417A (zh) | 一种可即时访问的备份大数据文件恢复方法及系统 | |
US20230418741A1 (en) | Data storage device management system | |
CN109753226A (zh) | 数据处理系统、方法及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A bridging method for securely obtaining data from any output device of an operating system Effective date of registration: 20231212 Granted publication date: 20211022 Pledgee: Zhongguancun Branch of Bank of Beijing Co.,Ltd. Pledgor: BEIJING DATA DRIVEN TECHNOLOGY CO.,LTD. Registration number: Y2023980070872 |
|
PE01 | Entry into force of the registration of the contract for pledge of patent right |