CN102043751B - Usb设备识别主机操作系统的方法 - Google Patents
Usb设备识别主机操作系统的方法 Download PDFInfo
- Publication number
- CN102043751B CN102043751B CN201010213961.2A CN201010213961A CN102043751B CN 102043751 B CN102043751 B CN 102043751B CN 201010213961 A CN201010213961 A CN 201010213961A CN 102043751 B CN102043751 B CN 102043751B
- Authority
- CN
- China
- Prior art keywords
- usb device
- preset
- operating system
- sign
- order
- 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 47
- 230000008569 process Effects 0.000 claims description 15
- 230000003993 interaction Effects 0.000 claims description 3
- 230000009471 action Effects 0.000 claims description 2
- 238000004891 communication Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种USB设备识别主机操作系统的方法,属于信息安全领域。方法包括:A、USB设备上电并初始化;B、判断第一个setup包是否是第一预设命令,是,执行C,不是,执行D;C、判断第一预设命令中的第七个字节是否是第二预设值,是,将操作系统标识置为第一预设标识,执行F,否则,执行E;D、判断第一个setup包是否是第二预设命令,是,将操作系统标识置为第二预设标识,执行F,否则,执行E;E、按照默认操作系统标识与主机进行信息交互,直到接收到最后一个setup包,并判断最后一个setup包是否是第三预设命令,是,则将操作系统标识置为第三预设标识,不是,则将操作系统标识置为第四预设标识;F、根据当前操作系统标识与主机进行信息交互,之后,并等待接收主机下发的指令。
Description
技术领域
本发明涉及一种信息或信号在输入/输出设备或中央处理机之间互联或传送的方法,属于信息安全领域,具体涉及一种USB设备识别主机操作系统的方法。
背景技术
USB协议技术是主机与外部设备连接的串行总线标准,在主机(例如,个人计算机、个人数字助理以及移动电脑等)上使用十分广泛,支持热插拔和即插即用,并支持总线供电,鼠标、键盘、游戏手柄、扫描仪、数码相机、打印机、硬盘、安全设备、光驱和网卡等几乎所有的外围设备都可以通过运行USB接口与主机相连并进行通信,USB接口已经成为目前大多数主机外设与计算机相连的缺省接口。
在操作系统平台支持方面,Windows系统平台中Windows 98、Windows 2000、Windows XP及Windows Vista、Windows 7等,苹果操作系统,Linux系统都提供了对USB接口的支持。而随着USB接口计算机外围设备的增多,要求计算机对USB接口的支持能力也越高,同时也要求USB设备能够很好的识别主机操作系统。
发明内容
针对上述问题,现提出一种USB设备识别主机操作系统的方法,具体技术方案如下:
一种USB设备识别主机操作系统的方法,所述方法包括:
步骤A、USB设备上电,并进行初始化;
步骤B、所述USB设备判断接收到的第一个setup包是否是第一预设命令,如果是所述第一预设命令,执行步骤C,如果不是所述第一预设命令,执行步骤D;
步骤C、所述USB设备判断所述第一预设命令中的第七个字节是否是第二预设值,如果是,则将操作系统标识置为第一预设标识,执行步骤F,否则,执行步骤E;
步骤D、所述USB设备判断所述第一个setup包是否是第二预设命令,如果是所述第二预设命令,则将操作系统标识置为第二预设标识,执行步骤F,否则,执行步骤E;
步骤E、所述USB设备按照默认操作系统标识与主机进行信息交互,直到接收到最后一个setup包,并判断所述最后一个setup包是否是第三预设命令,如果是所述第三预设命令,则将操作系统标识置为第三预设标识,如果不是所述第三预设命令,则将操作系统标识置为第四预设标识;
步骤F、所述USB设备根据当前操作系统标识与所述主机进行信息交互,所述USB设备与所述主机建立通信,并等待接收所述主机下发的指令。
所述USB设备进行初始化包括:将上电标识初始化为第一预设值,将操作系统标识初始化为默认标识。
所述步骤F还包括,所述USB设备判断当前操作系统标识是否与所述默认标识相同,如果相同,则所述USB设备与主机建立通信,并等待接收所述主机下发的指令;如果不相同,所述USB设备进行软掉电处理,并将所述上电标识置为第三预设值,执行步骤A。
在所述步骤A之后,所述方法还包括:判断所述USB设备是否是首次上电,如果是首次上电,则执行步骤B;如果不是,所述USB设备执行步骤F。
判断所述USB设备是否是首次上电具体为:判断上电标识是否是第一预设值,如果是,则所述USB设备是首次上电,如果不是,则所述USB设备不是首次上电;
所述第一预设命令为取设备描述符命令。
所述USB设备判断第一个setup包是否是第一预设命令具体为:所述USB设备判断所述第一个setup包是否是以十六进制数8006开始的,如果是,则所述第一个setup包是所述第一预设命令,否则,不是所述第一预设命令。
所述第二预设值为十六进制数Ox08。
所述第二预设命令为设置设备地址命令。
所述USB设备判断所述第一个setup数据包是否是第二预设命令具体为:所述USB设备判断所述第一个setup包是否是以十六进制数00 05开始的,如果是,则所述第一个setup包为所述第二预设命令,否则,不是所述第二预设命令。
所述最后一个setup包是指所述USB设备在接收完取描述符信息之后接收到的第一条指令;
所述取描述符信息包括取设备描述符命令、取接口描述符命令、取端点描述符命令、取配置描述符命令。
所述第三预设命令为选择配置指令。
所述USB设备判断最后一个setup包是否是第三预设命令具体为:所述USB设备判断所述最后一个setup包是否是以十六进制数00 09开始的,如果是,则所述最后一个setup包是所述第三预设命令,否则,不是所述第三预设命令。
USB设备通过对主机下发的指令进行分析,可以确定主机操作系统,并在确定主机操作系统后,有针对性的向主机返回相应的数据,使得主机能够准确的识别USB设备。
所述方法还包括:所述第一预设标识对应第一操作系统,第二预设标识对应第二操作系统,第三预设标识对应第三操作系统,第四预设标识对应第四操作系统。
所述第一操作系统为苹果操作系统,所述第二操作系统为Linux2.4内核系统或Linux2.6.10及Linux2.6.10之前的内核系统,所述第三操作系统为Linux2.6.10之后的内核系统,第四操作系统为Windows操作系统。
有益效果:USB设备通过对主机下发的指令进行分析,可以确定主机操作系统,并在确定主机操作系统后,有针对性的向主机返回相应的数据,使得主机能够准确的识别USB设备。
附图说明
图1为本发明实施例提供的一种USB设备识别主机操作系统的方法流程图;
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在进行具体说明之前,对USB设备与主机之间的通信原理进行简单的说明,如下:
USB设备与主机之间的通信是:由主机发送命令给USB设备,USB设备对接收到的命令进行响应,USB设备与主机之间通信的基本单位是“包”,其中,“包”的分类主要有:令牌包、数据包和握手包,由PID来决定包的具体类型。
其中,令牌包的格式为SYNC+PID+ADDR+ENDP+CRC;数据包分为DATA0包和DATA1包,在USB设备返回的数据长度超过相应端点的最大输出数据包长度时,需要将返回的数据分批发送,一般情况下,DATA0包和DATA1包交替发送;握手包的格式为:SYNC+PID。
其中,USB设备通过端点来收发数据。
例如:
PID:SETUP ADDR:00 ENDP:00 CRC5:02 idle:3
PID:DATA0 data:80 06 00 01 00 00 40 00 CRC16:94dd idle:7
PID:ACK idle:2ela
上述命令说明,该包为SETUP包,数据内容是80 06 00 01 00 0040 00,握手包为ACK;其中,SETUP包由主机下发,USB设备接收到该SETUP包后向主机返回应答信息,例如:
PID:IN ADDR:00 ENDP:00 CRC5:02 idle:7
PID:DATA1 data:12 01 10 01 00 00 00 08 CRC16:7711 idle:7
PID:ACK idle:2e16
PID:OUT ADDR:00 ENDP:00 CRC5:02 idle:3
PID:DATA1 data:CRC16:0000 idle:7
PID:ACK idle:2e5a
USB设备向主机返回的应答数据是12 01 10 01 00 00 00 08,需要说明的是,USB设备在接收到主机下发的IN或OUT的令牌包后,向主机返回应答数据;
这样,USB设备与主机之间便完成了一次信息交互,而每一次的信息交互,都是由接收到主机下发的SETUP包开始的。
实施例1
本实施例提供了一种USB设备识别主机操作系统的方法,具体地,USB设备通过分析所接收到的命令来判断主机操作系统的类型,然后,针对不同的主机操作系统向主机返回相应的信息,以便主机能够更好的识别和操作USB设备。
参见图1,本实施例提供了一种USB设备识别主机操作系统的方法,具体内容如下:
101、USB设备上电,并进行初始化;
其中,USB设备具体包括安全设备(如USB Key)、读卡器、存储设备(如U盘)及键盘、鼠标等计算机外围设备;
具体地,USB设备通过USB总线连接到主机,并从主机Vcc(电源电压或工作电压)处获取工作电压;
初始化操作具体包括:USB设备将上电标识、操作系统标识初始化为默认标识;
具体地,将上电标识初始化为第一预设值,将操作系统标识初始化为默认标识,本实施例中该默认标识为第四预设标识;
其中,第一预设值及第四预设标识为自定义的,本实施例中第一预设值为0,第四预设标识为4;
需要说明的是,主机操作系统时刻在监控USB设备的插拔状态,当主机操作系统检测到有USB设备连接到总线时,对USB设备进行枚举,在枚举过程中,USB设备接收主机下发的一系列setup包,具体包括“取设备描述符”、“设置设备地址”、“取配置描述符”、“取端点描述符”、“选择配置”等,USB设备逐一对其做出响应,当USB设备将描述符、端点、配置等返回给主机后,主机和USB设备就可按照商定的协议和端点进行通信了,具体的如102至117所述。
102、USB设备总线复位;
具体地,USB设备接收到主机下发的总线复位命令后,进行总线复位;
需要说明的是,USB设备总线复位后,该USB设备的默认地址0被使能,则接下来USB设备与主机之间便通过地址0来传输命令及数据。
103、USB设备判断自身是否是首次上电,如果不是,执行104,如果是,执行105;
判断USB设备是否是首次上电具体为:判断上电标识位是否为第一预设值,如果是,则USB设备为首次上电,否则,不是首次上电;
其中,上电标识位是USB设备中的一个硬件标识位,能够根据上电情况进行数值转换;
104、USB设备按照当前设置的操作系统标识完成枚举操作,执行117;
需要说明的是,USB设备在按照当前设置的操作系统标识完成枚举操作的过程根据USB设备类型的不同,进行的枚举操作也不尽相同,如当USB设备自身是CCID设备时,USB设备在枚举的过程中进行的操作包括向主机返回设备描述符、接口描述符、端点描述符等信息,如当USB设备自身是HID设备时,USB设备在枚举的过程中进行的操作包括像主机返回设备描述符、描述符集合、字符串描述符、端口描述符、配置描述符等信息。
105、USB设备接收到主机下发的第一个setup包时,判断接收到的setup包是否是第一预设命令,如果是,执行106,如果不是,执行109;
具体地,第一预设命令为取设备描述符命令;
则判断第一个setup包是否是取设备描述符命令具体为:判断第一个setup包是否是以十六进制数8006开始的命令,如果是,则第一个setup包是取设备描述符命令,否则,不是取设备描述符命令。
106、USB设备判断该第一预设命令中的第七个字节数据是否为第二预设值,如果是,执行107,如果不是,执行112;
本实施例中,第二预设值为十六进制数Ox08;
107、USB设备认定主机操作系统为第一操作系统,并将操作系统标识置为第一预设标识;
具体地,第一操作系统为苹果系统Mac os,具体包括Mac os x;
例如,主机操作系统为Mac os x时,USB设备接收到的第一个setup包为:
PID:SETUP ADDR:00 ENDP:00 CRC5:02 idle:3
PID:DATA0 data:80 06 00 01 00 00 08 00 CRC16:94 eb idle:7
PID:ACK idle:3a
其中,data:80 06 00 01 00 00 08 00为十六进制数,Ox01表示设备描述符,第七个字节Ox08表示取8个字节的设备描述符,USB设备接收到的第一个setup包是80 06 00 01 00 00 08 00,则说明主机操作系统是第一操作系统;
具体地,第一预设标识是自定义的,本实施例中第一预设标识为1;
108、USB设备向主机返回设备描述符,声明自身是CCID设备,执行117;
例如,USB设备返回的设备描述符信息为:09 04 00 00 02 01 0000 00,其中,Ox01标识设备类型为CCID设备;
需要说明的是,USB设备向主机返回设备描述符后,还将完成剩余的枚举操作,如向主机返回接口描述符、端点描述符等信息,当枚举操作完成后,USB设备执行117;
还需要说明的是,上述所说的设备描述符、接口描述符、端点描述符等信息并不是一定要全部返回给主机的,USB设备可能只是返回其中的一项或多项信息给主机,这是由USB设备自身设置所决定的;
109、USB设备判断所接收到的第一个setup包是否是第二预设命令,如果是第二预设命令,执行110,如果不是,执行112;
具体地,第二预设命令为设置设备地址命令;
判断接收到的第一个setup包是否是设置设备地址命令具体为:判断第一个setup包的数据是否是以0005开始的,如果是,则接收到的setup包是设置设备地址命令;
110、USB设备认定主机操作系统为第二操作系统,并将操作系统标识置为第二预设标识;
具体地,第二操作系统为Linux2.4系统或Linux2.6早期内核系统;
其中,Linux2.6早期内核系统包括:Linux2.6.11、Linux2.6.10及Linux2.6.10之前版本的Linux2.6内核系统;
例如,主机操作系统为第二操作系统时,USB设备接收到的第一个setup包为:
PID:SETUP ADDR:00 ENDP:00 CRC5:02 idle:3
PID:DATA0 data:00 05 04 00 00 00 00 00 CRC 16:70 eb idle:7
PID:ACK idle:2f
其中,data:00 05 04 00 00 00 00 00为十六进制数,为USB设备分配地址,新分配到的地址是Ox04,而USB设备在接收到上述命令后,向主机返回一个长度为0的空数据包;
具体地,第二预设标识是自定义的,本实施例中第二预设标识为2;
111、USB设备向主机返回接口描述符,该接口描述符中不含有对自身可用端点数的描述信息,执行117;
具体地,USB设备在认定主机操作系统为第二操作系统时,USB设备向主机返回的接口描述符中并不向主机报告额外的端点;
例如,在主机操作系统是第二操作系统时,USB设备接收到的获取接口描述符命令为:
PID:SETUP ADDR:04 ENDP:00 CRC5:05 idle:3
PID:DATA0 data:80 06 00 04 00 00 09 00 CRC16:04 ae idle:7
PID:ACK idle:31
其中,data:80 06 00 04 00 00 09 00为十六进制数,Ox04为获取USB设备的接口描述符,Ox09表示获取9字节的接口描述符;
USB设备返回的接口描述符为:
PID:IN ADDR:04 ENDP:00 CRC5:05 idle:7
PID:DATA1 data:09 04 00 00 02 03 00 00 CRC16:a20a idle:7
PID:ACK idle:2c
PID:IN ADDR:04 ENDP:00 CRC5:05 idle:6
PID:DATA0 data:00 CRC16:7581 idle:7
PID:ACK idle:30
其中,USB设备返回的接口描述符为09 04 00 00 00 03 00 00 00,其中第五个字节Ox00,告知主机该USB设备没有额外的端点,在这种情况下,USB设备与主机之间使用默认的端点0来进行数据通信;
需要说明的是,USB设备向主机返回接口描述符后,还将完成剩余的枚举操作,当枚举操作完成后,USB设备执行117。
112、USB设备按照当前默认的操作系统标识来完成枚举操作,并缓存最后一个setup包;
具体地,该最后一个setup包是指USB设备在接收完主机下发的取描述符信息之后的第一条指令。
具体地,主机下发的取描述符信息包括:取设备描述符命令、取接口描述符命令、取端点描述符命令、取配置描述符命令等。
具体地,如果当前默认的操作系统标识对应的是Windows操作系统,USB设备在完成枚举操作时向系统声明自身为HID设备;
如果当前默认的操作系统标识对应的是Linux操作系统,USB设备在完成枚举操作时向系统声明自身为自定义USB设备;
如果当前默认的操作系统标识对应的是MACOSX操作系统,USB设备在完成枚举操作时向系统声明自身为CCID设备;
以上只是举例,也可以声明为其他类型的设备,如USB光盘,USB Mass storage等。
本实施例中,默认的操作系统是第四操作系统,所以USB设备在本步骤中将会向第四操作系统返回相应的信息。
113、USB设备判断接收到的最后一个setup包是否是第三预设命令,如果是,则执行114,否则,执行116;
具体地,第三预设命令是选择配置指令。
判断接收到的最后一个setup包是否是选择配置指令具体为:判断该指令是否是以00 09开始的,如果是,则该指令是选择配置指令;
例如,USB设备接收到的最后一个setup包为:
PID:SETUP ADDR:02 ENDP:00 CRC5:15 idle:3
PID:DATA0 data:00 09 01 00 00 00 00 00 CRC16:2527 idle:7
PID:ACK idle:2e1a
其中,data:00 09 01 00 00 00 00 00为选择配置指令;
114、USB设备认定主机操作系统为第三操作系统,并将操作系统标识置为第三预设标识;
具体地,第三操作系统为Linux2.6后期内核系统,包括Linux2.6.18、Linux 2.6.28;
具体地,第三预设标识是自定义数值,本实施例中第三预设标识为3;
115、USB设备进行软掉电处理,并将上电标识位置为第三预设值,返回102;
在对软掉电处理进行说明之前,需要知道是,USB设备通过改变主机Vcc(电源电压或工作电压)的上拉电阻状态来告知主机自身的插拔状态,USB设备内部集成有上拉电阻,默认状态下是不与Vcc相连的,当USB设备与主机建立连接时,USB内部的上拉电阻连接到Vcc上,这样主机便可以通过检测Vcc上的上拉电阻的变化来确定是否有USB设备连入了;
软掉电处理具体是指:USB设备接收主机下发的power off命令,断开内部上拉电阻与Vcc的连接,这样,主机操作系统将会监控到USB设备是拔出状态,但USB设备是与Vcc相连的,依然可以从Vcc处获取电源,USB设备依然是处于上电状态的,断开预定时间后(极短的时间),USB设备接收到主机下发的power on命令,USB设备内部的上拉电阻连到Vcc,主机操作系统将再次监控到USB设备的插入,重新开始进行枚举操作,即USB设备返回执行102;
具体地,第三预设值为自定义数值,本实施例中第三预设值为3;
这里,还需要说明的是,USB设备在判断出主机操作系统是第三操作系统时,需要进行软掉电处理,重新进行枚举操作,这是因为:USB设备在判断出主机操作系统是第三操作系统之前已经完成了枚举,并且是按照默认操作系统,即第四操作系统来返回的描述符信息,而在判断出主机操作系统是第三操作系统时,前面已经返回的描述符信息是错误的,则就需要进行软掉电,重新按照主机操作系统是第三操作系统来返回描述符信息;
116、USB设备认定主机操作系统为第四操作系统,并将操作系统标识的值置为第四预设标识;
具体地,第四操作系统为Windows操作系统,包括Windows 98、Windows 2000、Windows XP、Windows Vista或Windows 7;
需要说明的是,在主机是第四操作系统下,USB设备接收到的最后一个setup包是配置命令,例如:80 06 02 03 09 04 ff 00,该命令是指获取索引为2个字符串描述符;
具体地,第四预设标识是自定义数值,本实施例中第四预设标识是4;
这里,需要说明的是,USB设备在判断出主机操作系统是第四操作系统时,并没有进行软掉电处理,而是完成了枚举操作,等待从主机接收APDU指令,这是因为,USB设备是将第四操作系统作为默认的操作系统,则在枚举过程中,USB设备本身就是按照第四操作系统来进行枚举操作的,向主机返回的描述符信息是正确的,故不用再次进行枚举操作了;
117、USB设备与主机建立数据通信,等待接收主机下发的APDU指令;
需要说明的是,当步骤101中,如果USB设备将操作系统标识初始化为第三预设标识,则USB设备将在116中进行软掉电处理,并将上电标识置为第三预设值,返回102;则在115中就不需要进行软掉电处理了;即,USB设备在执行117之前,还做了一个判断,即判断当前操作系统标识是否与默认标识相同,如果相同,按照当前操作系统标识向主机返回应答信息,执行117,如果不相同,则USB设备进行软掉电处理,并将上电标识置为第三预设值,执行102。
需要说明的是,如果USB设备认定主机操作系统是第一操作系统时,在接收到主机下发的接口描述符后,根据自身的设置情况向主机返回自身真实可用的端点数;
例如,USB设备自身有两个可用的端点,则向主机返回接口描述符09 04 00 00 02 03 00 00 00,第五个字节Ox02,告知主机自身有两个可用的端点;
再例如,USB设备自身没有额外可用的端点,则向主机返回接口描述符09 04 00 00 00 03 00 00 00,第五个字节Ox00,告知主机自身没有额外可用的端点,此时,USB设备与主机之间通过默认端点0来进行数据通信;
如果USB设备在认定主机是第三操作系统的情况下,向主机返回的接口描述符中不含有端点信息,例如,返回的接口描述符为:0904 00 00 00 03 00 00 00;
还需要说明的是,如果USB设备自身是光盘设备,则USB设备在于主机进行通信的过程中,如果USB设备接收到主机下发读取光盘内容的指令时,USB设备将会根据所认定的操作系统类型,向主机返回不同的数据;
其中,USB设备接收到的读取光盘内容的指令为标准的SISC指令,具体为:55 53 42 43 b0 94 f0 85 00 08 00 00 080 00 0a 28 00 00 0000 11 00 00 01 00 00 00 00 00 00 00;
如果认定主机操作系统是第一操作系统,USB设备在接收到上述指令后,则向主机返回数据02 43 44 30 30 31 01 00 00 57 00 69 006e 00 33 00 32 00 20 00 20 00 20 00 20 00 20 00 20 00 20;
如果认定主机操作系统为第二或第三操作系统,USB设备在接收到上述指令后,则向主机返回03 43 44 30 30 31 01 00 00 57 00 69 006e 00 33 00 32 00 20 00 20 00 20 00 20 00 20 00 20 00 20;
如果认定操作系统为第四操作系统,USB设备在接收到上述指令后,则向主机返回01 43 44 30 30 31 01 00 00 57 00 69 00 6e 00 33 0032 00 20 00 20 00 20 00 20 00 20 00 20 00 20;
USB设备通过对主机下发的指令进行分析,可以确定主机操作系统,并在确定主机操作系统后,有针对性的向主机返回相应的数据,使得主机能够准确的识别USB设备。
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (15)
1.一种USB设备识别主机操作系统的方法,其特征在于,所述方法包括:
步骤A、USB设备上电,将上电标识初始化为第一预设值,将操作系统标识初始化为默认标识;
步骤B、所述USB设备判断接收到的第一个setup包是否是第一预设命令,如果是所述第一预设命令,执行步骤C,如果不是所述第一预设命令,执行步骤D;
步骤C、所述USB设备判断所述第一预设命令中的第七个字节是否是第二预设值,如果是,则将操作系统标识置为第一预设标识,执行步骤F,否则,执行步骤E;
步骤D、所述USB设备判断所述第一个setup包是否是第二预设命令,如果是所述第二预设命令,则将操作系统标识置为第二预设标识,执行步骤F,否则,执行步骤E;
步骤E、所述USB设备按照默认操作系统标识与主机进行信息交互,直到接收到最后一个setup包,并判断所述最后一个setup包是否是第三预设命令,如果是所述第三预设命令,则将操作系统标识置为第三预设标识,如果不是所述第三预设命令,则将操作系统标识置为第四预设标识;
步骤F、所述USB设备根据当前操作系统标识与所述主机进行信息交互,所述USB设备与所述主机建立通信,并等待接收所述主 机下发的指令。
2.根据权利要求1所述的方法,其特征在于,所述步骤F还包括,所述USB设备判断当前操作系统标识是否与所述默认标识相同,如果相同,则所述USB设备与主机建立通信,并等待接收所述主机下发的指令;如果不相同,所述USB设备进行软掉电处理,并将所述上电标识置为第三预设值,执行步骤A。
3.根据权利要求2所述的方法,其特征在于,在所述步骤A之后,所述方法还包括:判断所述USB设备是否是首次上电,如果是首次上电,则执行步骤B;如果不是,所述USB设备执行步骤F。
4.根据权利要求3所述的方法,其特征在于,判断所述USB设备是否是首次上电具体为:判断上电标识是否是第一预设值,如果是,则所述USB设备是首次上电,如果不是,则所述USB设备不是首次上电。
5.根据权利要求1所述的方法,其特征在于,所述第一预设命令为取设备描述符命令。
6.根据权利要求5所述的方法,其特征在于,所述USB设备判断第一个setup包是否是第一预设命令具体为:所述USB设备判断所 述第一个setup包是否是以十六进制数8006开始的,如果是,则所述第一个setup包是所述第一预设命令,否则,不是所述第一预设命令。
7.根据权利要求1所述的方法,其特征在于,所述第二预设值为十六进制数Ox08。
8.根据权利要求1所述的方法,其特征在于,所述第二预设命令为设置设备地址命令。
9.根据权利要求8所述的方法,其特征在于,所述USB设备判断所述第一个setup数据包是否是第二预设命令具体为:所述USB设备判断所述第一个setup包是否是以十六进制数0005开始的,如果是,则所述第一个setup包为所述第二预设命令,否则,不是所述第二预设命令。
10.根据权利要求1所述的方法,其特征在于,所述最后一个setup包是指所述USB设备在接收完取描述符信息之后接收到的第一条指令。
11.根据权利要求10所述的方法,其特征在于,所述取描述符信息包括取设备描述符命令、取接口描述符命令、取端点描述符命令、 取配置描述符命令。
12.根据权利要求1所述的方法,其特征在于,所述第三预设命令为选择配置指令。
13.根据权利要求12所述的方法,其特征在于,所述USB设备判断最后一个setup包是否是第三预设命令具体为:所述USB设备判断所述最后一个setup包是否是以十六进制数0009开始的,如果是,则所述最后一个setup包是所述第三预设命令,否则,不是所述第三预设命令。
14.根据权利要求1所述的方法,其特征在于,所述方法还包括:所述第一预设标识对应第一操作系统,第二预设标识对应第二操作系统,第三预设标识对应第三操作系统,第四预设标识对应第四操作系统。
15.根据权利要求14的方法,其特征在于,所述第一操作系统为苹果操作系统,所述第二操作系统为Linux2.4内核系统或Linux2.6.10及Linux2.6.10之前的内核系统,所述第三操作系统为Linux2.6.10之后的内核系统,第四操作系统为Windows操作系统。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010213961.2A CN102043751B (zh) | 2010-06-29 | 2010-06-29 | Usb设备识别主机操作系统的方法 |
PCT/CN2011/076444 WO2012000417A1 (zh) | 2010-06-29 | 2011-06-27 | Usb设备识别主机操作系统的方法 |
US13/639,875 US8725909B2 (en) | 2010-06-29 | 2011-06-27 | Method for identifying host operating system by universal serial bus (USB) device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010213961.2A CN102043751B (zh) | 2010-06-29 | 2010-06-29 | Usb设备识别主机操作系统的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102043751A CN102043751A (zh) | 2011-05-04 |
CN102043751B true CN102043751B (zh) | 2012-12-12 |
Family
ID=43909897
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010213961.2A Active CN102043751B (zh) | 2010-06-29 | 2010-06-29 | Usb设备识别主机操作系统的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8725909B2 (zh) |
CN (1) | CN102043751B (zh) |
WO (1) | WO2012000417A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043751B (zh) * | 2010-06-29 | 2012-12-12 | 飞天诚信科技股份有限公司 | Usb设备识别主机操作系统的方法 |
CN101916238B (zh) * | 2010-08-26 | 2012-01-25 | 华为终端有限公司 | 数据卡识别操作系统的方法、装置及通信系统 |
CN102375786B (zh) * | 2011-10-18 | 2014-09-10 | 中兴通讯股份有限公司 | Usb设备自动识别操作系统的方法及系统 |
FR2990532A1 (fr) * | 2012-05-11 | 2013-11-15 | Emmanuel Thibaudeau | Procede d'envoi automatique de lignes de commande pouracceder a un site internet et dispositif mettant en oeuvre le procede. |
CN102890662B (zh) * | 2012-10-19 | 2016-10-05 | 无锡海森诺科技有限公司 | 通过对usb hid设备进行二次枚举以识别主机操作系统的方法 |
CN103092799B (zh) * | 2012-12-28 | 2015-07-22 | 飞天诚信科技股份有限公司 | 一种usb设备及其识别主机操作系统的方法 |
CN103544037B (zh) * | 2013-10-29 | 2016-08-17 | 飞天诚信科技股份有限公司 | 一种支持OpenSC的软硬件驱动的实现方法 |
CN103577231A (zh) * | 2013-10-31 | 2014-02-12 | 南京熊猫电子股份有限公司 | 一种usb嵌入式设备判断主机操作系统的方法 |
CN104317761B (zh) * | 2014-10-27 | 2017-05-10 | 飞天诚信科技股份有限公司 | 一种带有电源管理的多接口移动安全设备及其工作方法 |
CN104571962B (zh) * | 2014-12-31 | 2017-11-17 | 上海动联信息技术股份有限公司 | 一种适合批量生产的usbkey设备内固件的实现方法 |
US10084820B2 (en) | 2015-02-27 | 2018-09-25 | Konica Minolta Laboratory U.S.A., Inc. | Method and system for IPSec security for IPP-USB data |
TW201702805A (zh) * | 2015-07-06 | 2017-01-16 | Dexin Corp | 辨識電腦系統之輸入裝置及其辨識方法 |
CN106383796B (zh) * | 2016-10-18 | 2019-06-14 | 广州视睿电子科技有限公司 | 一种主机操作系统类型的识别方法及系统 |
CN106406967A (zh) * | 2016-11-15 | 2017-02-15 | 恒鸿达信息技术有限公司 | 一种基于stm32的usb在线升级方法及系统 |
CN108629175B (zh) | 2018-05-14 | 2020-07-17 | 深圳市江波龙电子股份有限公司 | Usb大容量存储设备的访问控制方法及访问控制装置 |
US11046836B2 (en) | 2019-10-18 | 2021-06-29 | Nutjobs | Formulations and products to replace single-use plastics and polystyrene with bio-benign materials such as agricultural wastes |
CN113282186B (zh) * | 2020-02-19 | 2022-03-11 | 上海闻泰电子科技有限公司 | 将hid触摸屏自适应成键盘鼠标的方法 |
CN112084524B (zh) * | 2020-09-30 | 2023-10-13 | 北京智芯微电子科技有限公司 | U盘访问方法及u盘 |
CN112068893B (zh) * | 2020-11-12 | 2021-03-16 | 飞天诚信科技股份有限公司 | 一种usb设备及其区分移动设备操作系统的方法 |
CN116601618A (zh) * | 2021-02-27 | 2023-08-15 | 华为技术有限公司 | 一种基于usb的通信方法和装置 |
EP4318230A4 (en) | 2021-05-12 | 2024-08-07 | Samsung Electronics Co Ltd | ELECTRONIC DEVICE WITH USB CONNECTION TERMINAL AND OPERATING METHOD THEREFOR |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101561785A (zh) * | 2008-04-14 | 2009-10-21 | 凌阳创新科技股份有限公司 | 在usb装置上自动侦测操作系统的方法 |
CN101606136A (zh) * | 2007-02-09 | 2009-12-16 | 西摩特克株式会社 | 通过软件仿真实现为光存储设备或/和可移动磁盘的计算机外设及其实现方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7574534B2 (en) * | 2006-05-23 | 2009-08-11 | International Business Machines Corporation | Method for using device enumeration information to identify an operating system running on a computer system |
TW200943188A (en) * | 2008-04-01 | 2009-10-16 | Sunplus Innovation Technology Inc | A method for automatically detecting an operating system on a USB device |
CN102043751B (zh) * | 2010-06-29 | 2012-12-12 | 飞天诚信科技股份有限公司 | Usb设备识别主机操作系统的方法 |
US8661164B2 (en) * | 2010-08-24 | 2014-02-25 | Mediatek Inc. | Method of USB device enumeration including detecting the operating system type of the USB host |
-
2010
- 2010-06-29 CN CN201010213961.2A patent/CN102043751B/zh active Active
-
2011
- 2011-06-27 US US13/639,875 patent/US8725909B2/en active Active
- 2011-06-27 WO PCT/CN2011/076444 patent/WO2012000417A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101606136A (zh) * | 2007-02-09 | 2009-12-16 | 西摩特克株式会社 | 通过软件仿真实现为光存储设备或/和可移动磁盘的计算机外设及其实现方法 |
CN101561785A (zh) * | 2008-04-14 | 2009-10-21 | 凌阳创新科技股份有限公司 | 在usb装置上自动侦测操作系统的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102043751A (zh) | 2011-05-04 |
US20130042029A1 (en) | 2013-02-14 |
WO2012000417A1 (zh) | 2012-01-05 |
US8725909B2 (en) | 2014-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102043751B (zh) | Usb设备识别主机操作系统的方法 | |
CN101957807B (zh) | USB设备识别主机Windows操作系统版本类型的方法 | |
CN103092799B (zh) | 一种usb设备及其识别主机操作系统的方法 | |
US9411990B2 (en) | Working method of a multi-slot card reader based on the standard CCID protocol | |
JP4483271B2 (ja) | 無線通信装置,無線通信装置の応答データ処理方法 | |
US20200241888A1 (en) | Method and apparatus for plug and play, networkable iso 18000-7 connectivity | |
CN1276385C (zh) | 多模式智能卡、系统及相应方法 | |
US9589160B2 (en) | Working method for smart card reader | |
CN107926075B (zh) | 支持异构环境下的数据通信的系统和方法 | |
CN1444752A (zh) | 智能卡虚拟集线器 | |
CN102890662B (zh) | 通过对usb hid设备进行二次枚举以识别主机操作系统的方法 | |
CN102395980A (zh) | 智能卡读取器 | |
CN106406967A (zh) | 一种基于stm32的usb在线升级方法及系统 | |
CN106126446A (zh) | 一种USB设备及其识别MacOS系统的方法 | |
CN110688235B (zh) | Uefi固件与os间共享无线连接信息的系统及方法 | |
CN103488953A (zh) | 一种应用于多功能设备的智能切换方法 | |
CN106897623A (zh) | 一种支持多安全引导的芯片及其启动方法 | |
JP6241340B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
CN107451067B (zh) | 下载测试的处理方法及相关产品 | |
CN106584862A (zh) | 一种内置Web服务的3D打印WIFI控制系统及其控制方法 | |
CN107006061B (zh) | 一种获取终端的识别码的方法及其设备 | |
CN108231131A (zh) | 一种eMMC测试方法及装置 | |
CN109214143A (zh) | 基于usb3.2协议ts1训练序列的ip软核产权保护与侵权鉴定方法 | |
WO2016034047A1 (zh) | 一种加密锁的自适应通讯方法 | |
WO2022087949A1 (zh) | 一种电子设备及进入强制加载模式的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 17th floor, building B, Huizhi building, No.9, Xueqing Road, Haidian District, Beijing 100085 Patentee after: Feitian Technologies Co.,Ltd. Country or region after: China Address before: 100085 17th floor, block B, Huizhi building, No.9 Xueqing Road, Haidian District, Beijing Patentee before: Feitian Technologies Co.,Ltd. Country or region before: China |
|
OL01 | Intention to license declared | ||
OL01 | Intention to license declared |