CN111240754B - 一种在Linux内核中识别特定USB大容量存储设备的方法及系统 - Google Patents
一种在Linux内核中识别特定USB大容量存储设备的方法及系统 Download PDFInfo
- Publication number
- CN111240754B CN111240754B CN202010031330.2A CN202010031330A CN111240754B CN 111240754 B CN111240754 B CN 111240754B CN 202010031330 A CN202010031330 A CN 202010031330A CN 111240754 B CN111240754 B CN 111240754B
- Authority
- CN
- China
- Prior art keywords
- usb
- equipment
- type
- scsi
- usb0806
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供了一种在Linux内核中识别特定USB大容量存储设备的方法及系统,本发明针对USB外置光驱和U盘两者难以准确识别的问题,在USB子系统驱动匹配层面上主动放过USB0806设备,进入SCSI子系统驱动匹配模式,由SCSI子系统的SCSI设备描述结构可以通过Linux内核设备树向上遍历父设备的方法找到相对应的USB子系统的USB设备描述结构,并在SCSI子系统中根据USB0806设备的SCSI设备类型判定USB0806设备的类型,从而完成对当前USB0806设备的识别,并在SCSI子系统驱动匹配过程中对设备进行管控,使得对于USB设备的识别和阻断更加有效,提高识别准确率。
Description
技术领域
本发明涉配USB设备识别技术领域,特别是涉及一种在Linux内核中识别特定USB大容量存储设备的方法及系统。
背景技术
在Linux系统下对USB设备进行管控,一般而言有两种方法,一种是阻断新插入设备为主,辅之以禁用已生效设备,另一种为定时扫描并且禁用设备,前一种方法阻断及时,设备未生效就已被阻断,但实现难度大,后一种方法实现简单,但阻断效果一般。就工作场景而言,分为内核态、应用层程序态以及两者混合模式,相对而言,内核态直接通过内核模块控制设备驱动的加载,效果更佳,但开发维护难度大。
综上所述,采用内核态的USB设备阻断模式对于USB设备管控更加有效,但该方案难度之一在于管控模块在USB设备插入之后,操作系统匹配驱动之前需要完成插入USB设备的识别和阻断。
Linux内核中USB设备的识别最常用的方法就是获取USB设备的描述符信息进行解析,根据描述符的配置推断出USB设备的类型,但是对于某一类配置信息可能存在多种设备类型,比如USB大容量存储设备。常用的USB大容量存储设备(USB设备描述符主设备号或者接口描述符主接口号为0x08)一般主要有以下几类:USB外置光驱、USB外置软驱、U盘和其他设备,其他设备包含配置不标准设备和比较少见设备,在此暂不予考虑。USB外置软驱的设备描述符次设备号或者接口描述符次接口号为0x04,相对好区分,在此不予过多描述;USB外置光驱和U盘的设备描述符次设备号或者接口描述符次接口号均为为0x06(USB0806设备),造成两者在USB描述符层面上难以准确识别,同时两者在USB子系统驱动匹配层面上都能且只能匹配到名称为“usb-storage”的驱动模块,同样难以准确识别。
发明内容
本发明的目的是提供一种在Linux内核中识别特定USB大容量存储设备的方法及系统,旨在解决现有技术中USB外置光驱和U盘两者难以准确识别的问题,实现通过内核层完成对USB0806设备的识别,提高识别准确率。
为达到上述技术目的,本发明提供了一种在Linux内核中识别特定USB大容量存储设备的方法,所述方法包括以下步骤:
S1、USB0806设备在USB子系统匹配usb-storage驱动模块,匹配完成后进入SCSI子系统驱动匹配模式;
S2、通过SCSI子系统的SCSI设备描述结构通过Linux内核设备树向上遍历父设备,找到对应USB子系统的USB设备描述结构;
S3、如当前USB0806设备的SCSI设备类型标明为TYPE_ROM或TYPE_WROM类型,则该设备为USB外置光驱设备;如当前USB0806设备的SCSI设备类型标明为TYPE_DISK、TYPE_MOD或者TYPE_RBC类型,则该设备为U盘。
优选地,所述方法还包括对特定USB大容量存储设备的管控,具体如下:
根据USB设备的策略选择是否允许操作系统对当前USB0806设备进行相关的驱动匹配动作,如策略禁止,则USB外置光驱设备与名称为sr的驱动模块不允许进行匹配,U盘与名称为sd的驱动模块不允许进行匹配;反之策略允许就放行。
优选地,所述USB大容量存储设备的描述符信息中主设备号为0x08,次设备号为0x06,或接口描述符主接口号为0x08,次接口号为0x06。
本发明还提供了一种在Linux内核中识别特定USB大容量存储设备的系统,所述系统包括:
usb-storage驱动匹配模块,用于USB0806设备在USB子系统匹配usb-storage驱动模块,匹配完成后进入SCSI子系统驱动匹配模式;
设备描述结构遍历模块,用于通过SCSI子系统的SCSI设备描述结构通过Linux内核设备树向上遍历父设备,找到对应USB子系统的USB设备描述结构;
类型匹配模块,用于如当前USB0806设备的SCSI设备类型标明为TYPE_ROM或TYPE_WROM类型,则该设备为USB外置光驱设备;如当前USB0806设备的SCSI设备类型标明为TYPE_DISK、TYPE_MOD或者TYPE_RBC类型,则该设备为U盘。
优选地,系统还包括设备管控模块,用于根据USB设备的策略选择是否允许操作系统对当前USB0806设备进行相关的驱动匹配动作,如策略禁止,则USB外置光驱设备与名称为sr的驱动模块不允许进行匹配,U盘与名称为sd的驱动模块不允许进行匹配;反之策略允许就放行。
优选地,所述USB大容量存储设备的描述符信息中主设备号为0x08,次设备号为0x06,或接口描述符主接口号为0x08,次接口号为0x06。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
与现有技术相比,本发明针对USB外置光驱和U盘两者难以准确识别的问题,在USB子系统驱动匹配层面上主动放过USB0806设备,进入SCSI子系统驱动匹配模式,由SCSI子系统的SCSI设备描述结构可以通过Linux内核设备树向上遍历父设备的方法找到相对应的USB子系统的USB设备描述结构,并在SCSI子系统中根据USB0806设备的SCSI设备类型判定USB0806设备的类型,从而完成对当前USB0806设备的识别,并在SCSI子系统驱动匹配过程中对设备进行管控,使得对于USB设备的识别和阻断更加有效,提高识别准确率。
附图说明
图1为本发明实施例中所提供的一种在Linux内核中识别特定USB大容量存储设备的方法流程图;
图2为本发明实施例中所提供的一种在Linux内核中识别特定USB大容量存储设备的系统框图。
具体实施方式
为了能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
下面结合附图对本发明实施例所提供的一种在Linux内核中识别特定USB大容量存储设备的方法及系统进行详细说明。
如图1所示,本发明实施例公开了一种在Linux内核中识别特定USB大容量存储设备的方法,所述方法包括以下步骤:
S1、USB0806设备在USB子系统匹配usb-storage驱动模块,匹配完成后进入SCSI子系统驱动匹配模式;
S2、通过SCSI子系统的SCSI设备描述结构通过Linux内核设备树向上遍历父设备,找到对应USB子系统的USB设备描述结构;
S3、如当前USB0806设备的SCSI设备类型标明为TYPE_ROM或TYPE_WROM类型,则该设备为USB外置光驱设备;如当前USB0806设备的SCSI设备类型标明为TYPE_DISK、TYPE_MOD或者TYPE_RBC类型,则该设备为U盘。
由于USB外置光驱和U盘的设备描述符设备号或者接口描述符次接口号均为0x06,且两者在USB子系统驱动匹配层面上只能匹配到名称为“usb-storage”的驱动模块,因此在本发明实施例中只针对这两种USB设备的识别进行详细描述,其他USB外置软驱等设备在此不作赘述。
在USB子系统驱动匹配层面上主动放过USB0806设备,根据Linux内核设备驱动的工作模式,USB0806设备在完成USB子系统驱动匹配完成后,即匹配到名称为“usb-storage”的驱动模块后,将进入SCSI子系统驱动匹配模式。
在SCSI子系统中,由SCSI子系统的SCSI设备描述结构可以通过Linux内核设备树向上遍历父设备的方法找到对应的USB子系统的USB设备描述结构,完成SCSI设备与USB0806设备的关联。
在SCSI子系统中,如当前USB0806设备的SCSI设备类型标明为SCSI设备中的TYPE_ROM或TYPE_WROM类型,则可断定该设备为USB外置光驱设备;如当前USB0806设备的SCSI设备类型标明为SCSI设备中的TYPE_DISK、TYPE_MOD或者TYPE_RBC类型,则可断定该设备为U盘,如当前USB0806设备的SCSI设备类型不在以上类型中,属于特殊设备,暂不予考虑。通过上述方法即可完成对当前USB0806设备的识别。
在SCSI子系统驱动匹配过程中,监控USB0806设备的驱动匹配过程,在能够识别出USB0806设备的基础上,根据该类设备的策略选择是否允许操作系统对当前USB0806设备进行相关的驱动匹配动作。如策略禁止的情况下,USB外置光驱设备与名称为“sr”的驱动模块不允许进行匹配,U盘与名称为“sd”的驱动模块不允许进行匹配,即可实现对当前USB0806设备的阻断使用;反之,策略允许就放行,如此即可完成对当前USB0806设备的管控。
本发明实施例针对USB外置光驱和U盘两者难以准确识别的问题,在USB子系统驱动匹配层面上主动放过USB0806设备,进入SCSI子系统驱动匹配模式,由SCSI子系统的SCSI设备描述结构可以通过Linux内核设备树向上遍历父设备的方法找到相对应的USB子系统的USB设备描述结构,并在SCSI子系统中根据USB0806设备的SCSI设备类型判定USB0806设备的类型,从而完成对当前USB0806设备的识别,并在SCSI子系统驱动匹配过程中对设备进行管控,使得对于USB设备的识别和阻断更加有效,提高识别准确率。
如图2所示,本发明实施例还公开了一种在Linux内核中识别特定USB大容量存储设备的系统,所述系统包括:
usb-storage驱动匹配模块,用于USB0806设备在USB子系统匹配usb-storage驱动模块,匹配完成后进入SCSI子系统驱动匹配模式;
设备描述结构遍历模块,用于通过SCSI子系统的SCSI设备描述结构通过Linux内核设备树向上遍历父设备,找到对应USB子系统的USB设备描述结构;
类型匹配模块,用于如当前USB0806设备的SCSI设备类型标明为TYPE_ROM或TYPE_WROM类型,则该设备为USB外置光驱设备;如当前USB0806设备的SCSI设备类型标明为TYPE_DISK、TYPE_MOD或者TYPE_RBC类型,则该设备为U盘。
在USB子系统驱动匹配层面上主动放过USB0806设备,根据Linux内核设备驱动的工作模式,通过usb-storage驱动匹配模块对USB0806设备完成USB子系统驱动匹配,即匹配到名称为“usb-storage”的驱动模块后,将进入SCSI子系统驱动匹配模式。
在SCSI子系统中,由SCSI子系统的SCSI设备描述结构可以利用设备描述结构遍历模块通过Linux内核设备树向上遍历父设备的方法找到对应的USB子系统的USB设备描述结构,完成SCSI设备与USB0806设备的关联。
在SCSI子系统中,利用类型匹配模块进行USB设备类型匹配,如当前USB0806设备的SCSI设备类型标明为SCSI设备中的TYPE_ROM或TYPE_WROM类型,则可断定该设备为USB外置光驱设备;如当前USB0806设备的SCSI设备类型标明为SCSI设备中的TYPE_DISK、TYPE_MOD或者TYPE_RBC类型,则可断定该设备为U盘,如当前USB0806设备的SCSI设备类型不在以上类型中,属于特殊设备,暂不予考虑。通过上述方法即可完成对当前USB0806设备的识别。
所述系统还包括设备管控模块,在SCSI子系统驱动匹配过程中,监控USB0806设备的驱动匹配过程,在能够识别出USB0806设备的基础上,根据该类设备的策略选择是否允许操作系统对当前USB0806设备进行相关的驱动匹配动作。如策略禁止的情况下,USB外置光驱设备与名称为“sr”的驱动模块不允许进行匹配,U盘与名称为“sd”的驱动模块不允许进行匹配,即可实现对当前USB0806设备的阻断使用;反之,策略允许就放行,如此即可完成对当前USB0806设备的管控。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种在Linux内核中识别特定USB大容量存储设备的方法,其特征在于,所述方法包括以下步骤:
S1、USB0806设备在USB子系统匹配usb-storage驱动模块,匹配完成后进入SCSI子系统驱动匹配模式;
S2、通过SCSI子系统的SCSI设备描述结构通过Linux内核设备树向上遍历父设备,找到对应USB子系统的USB设备描述结构;
S3、如当前USB0806设备的SCSI设备类型标明为TYPE_ROM或TYPE_WROM类型,则该设备为USB外置光驱设备;如当前USB0806设备的SCSI设备类型标明为TYPE_DISK、TYPE_MOD或者TYPE_RBC类型,则该设备为U盘;
所述USB大容量存储设备的描述符信息中主设备号为0x08,次设备号为0x06,或接口描述符主接口号为0x08,次接口号为0x06。
2.根据权利要求1所述的一种在Linux内核中识别特定USB大容量存储设备的方法,其特征在于,所述方法还包括对特定USB大容量存储设备的管控,具体如下:
根据USB设备的策略选择是否允许操作系统对当前USB0806设备进行相关的驱动匹配动作,如策略禁止,则USB外置光驱设备与名称为sr的驱动模块不允许进行匹配,U盘与名称为sd的驱动模块不允许进行匹配;反之策略允许就放行。
3.一种在Linux内核中识别特定USB大容量存储设备的系统,其特征在于,所述系统包括:
usb-storage驱动匹配模块,用于USB0806设备在USB子系统匹配usb-storage驱动模块,匹配完成后进入SCSI子系统驱动匹配模式;
设备描述结构遍历模块,用于通过SCSI子系统的SCSI设备描述结构通过Linux内核设备树向上遍历父设备,找到对应USB子系统的USB设备描述结构;
类型匹配模块,用于如当前USB0806设备的SCSI设备类型标明为TYPE_ROM或TYPE_WROM类型,则该设备为USB外置光驱设备;如当前USB0806设备的SCSI设备类型标明为TYPE_DISK、TYPE_MOD或者TYPE_RBC类型,则该设备为U盘;
所述USB大容量存储设备的描述符信息中主设备号为0x08,次设备号为0x06,或接口描述符主接口号为0x08,次接口号为0x06。
4.根据权利要求3所述的一种在Linux内核中识别特定USB大容量存储设备的系统,其特征在于,所述系统还包括设备管控模块,用于根据USB设备的策略选择是否允许操作系统对当前USB0806设备进行相关的驱动匹配动作,如策略禁止,则USB外置光驱设备与名称为sr的驱动模块不允许进行匹配,U盘与名称为sd的驱动模块不允许进行匹配;反之策略允许就放行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010031330.2A CN111240754B (zh) | 2020-01-13 | 2020-01-13 | 一种在Linux内核中识别特定USB大容量存储设备的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010031330.2A CN111240754B (zh) | 2020-01-13 | 2020-01-13 | 一种在Linux内核中识别特定USB大容量存储设备的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111240754A CN111240754A (zh) | 2020-06-05 |
CN111240754B true CN111240754B (zh) | 2023-10-27 |
Family
ID=70866148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010031330.2A Active CN111240754B (zh) | 2020-01-13 | 2020-01-13 | 一种在Linux内核中识别特定USB大容量存储设备的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111240754B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566923A (zh) * | 2008-04-25 | 2009-10-28 | 中兴通讯股份有限公司 | 一种目标端scsi设备统一驱动模块及方法 |
CN102760104A (zh) * | 2012-06-25 | 2012-10-31 | 成都卫士通信息产业股份有限公司 | 一种usb设备控制方法 |
CN109145652A (zh) * | 2018-08-29 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种Linux系统下移动介质接入控制系统及方法 |
CN109542805A (zh) * | 2018-11-22 | 2019-03-29 | 北京奇安信科技有限公司 | Usb存储设备控制方法、装置、电子设备及存储介质 |
-
2020
- 2020-01-13 CN CN202010031330.2A patent/CN111240754B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566923A (zh) * | 2008-04-25 | 2009-10-28 | 中兴通讯股份有限公司 | 一种目标端scsi设备统一驱动模块及方法 |
CN102760104A (zh) * | 2012-06-25 | 2012-10-31 | 成都卫士通信息产业股份有限公司 | 一种usb设备控制方法 |
CN109145652A (zh) * | 2018-08-29 | 2019-01-04 | 郑州云海信息技术有限公司 | 一种Linux系统下移动介质接入控制系统及方法 |
CN109542805A (zh) * | 2018-11-22 | 2019-03-29 | 北京奇安信科技有限公司 | Usb存储设备控制方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
刘泉承."基于S3C2440A嵌入式Linux系统USB驱动的研究与应用".《中国优秀硕士学位论文全文数据库 信息科技辑》.2013,(第2013年第07期期),第I138-685页. * |
Also Published As
Publication number | Publication date |
---|---|
CN111240754A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103268277B (zh) | 一种输出日志信息的方法及系统 | |
CN106528185A (zh) | 一种应用接口管理方法和装置 | |
CN101788915A (zh) | 基于可信进程树的白名单更新方法 | |
CN107728953B (zh) | 一种提升固态硬盘混合读写性能的方法 | |
CN105359101B (zh) | 用于多核处理器的系统管理中断处理 | |
CN1567256A (zh) | 闪存介质中数据保护方法 | |
CN103839007B (zh) | 一种检测异常线程的方法及系统 | |
CN103955649B (zh) | 一种安全启动终端设备的方法 | |
CN111031022A (zh) | 基于Slurm的资源管理调度方法、装置、电子设备及存储介质 | |
CN110895537A (zh) | 自由查询权限控制的方法及装置 | |
EP3682332A1 (en) | Method and apparatus for erasing or writing flash data | |
CN111240754B (zh) | 一种在Linux内核中识别特定USB大容量存储设备的方法及系统 | |
CN107506638B (zh) | 一种基于硬件机制的内核控制流异常检测方法 | |
US20160358304A1 (en) | Instrumentation of graphics instructions | |
CN111177761B (zh) | 一种基于敏感标记的文件访问控制方法、装置以及设备 | |
CN111708618A (zh) | 一种基于Java多线程的处理方法和装置 | |
CN116126470A (zh) | 一种容器内脚本执行管控的方法、系统及介质 | |
CN115688092A (zh) | 终端弱管控方法、装置、电子设备及存储介质 | |
CN112784290B (zh) | 数据导出工具安全性分析方法及系统及数据导出方法 | |
CN110059454B (zh) | Cpu程序的安全加固方法、装置 | |
CN109240701A (zh) | 一种面向谓词执行高性能dsp的指令依赖关系分析方法 | |
CN113419869A (zh) | 一种乱序数据的产生方法、装置、设备及存储介质 | |
KR102324950B1 (ko) | 취약점을 효율적으로 탐지할 수 있는 아키텍처로 구성된 힙 영역 메모리 관리 방법 및 그 장치 | |
CN107463374B (zh) | 一种基于继承和关联自动推演的子集模型抽取方法及系统 | |
CN106375455A (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 |