专利名称:Usb设备识别主机操作系统的方法
技术领域:
本发明涉及一种信息或信号在输入/输出设备或中央处理机之间互联或传送的 方法,属于信息安全领域,具体涉及一种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包 是所述第一预设命令,否则,不是所述第一预设命令。所述第二预设值为十六进制数0x08。所述第二预设命令为设置设备地址命令。所述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 ;数据包分为DATAO包和DATAl 包,在USB设备返回的数据长度超过相应端点的最大输出数据包长度时,需要将返回的数 据分批发送,一般情况下,DATAO包和DATAl包交替发送;握手包的格式为SYNC+PID。其中,USB设备通过端点来收发数据。例如PID=SETUP ADDR 00 ENDP 00 CRC5 02 idle 3PID=DATAO data :80 06 00 01 00 00 40 00 CRC16 :94dd idle :7PID :ACK idle :2ela上述命令说明,该包为SETUP包,数据内容是80 06 00 01 00 0040 00,握手包为 ACK ;其中,SETUP包由主机下发,USB设备接收到该SETUP包后向主机返回应答信息,例如PID :IN ADDR :00 ENDP :00 CRC5 :02 idle :7PID =DATAl data :12 01 10 01 00 00 00 08 CRC16 :7711 idle :7PID :ACK idle :2el6PID :0UT ADDR :00 ENDP :00 CRC5 :02 idle :3PID DATAl data :CRC16 :0000 idle :7PID :ACK idle :2e5aUSB设备向主机返回的应答数据是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 ;本实施例中,第二预设值为十六进制数0x08 ;107、USB设备认定主机操作系统为第一操作系统,并将操作系统标识置为第一预 设标识;具体地,第一操作系统为苹果系统Mac os,具体包括Mac os χ ;例如,主机操作系统为Mac os χ时,USB设备接收到的第一个setup包为PID=SETUP ADDR 00 ENDP 00 CRC5 02 idle 3PID=DATAO data :80 06 00 01 00 00 08 00 CRC16 :94 eb idle :7PID :ACK idle :3a其中,data :80 06 00 01 00 00 08 00为十六进制数,0x01表示设备描述符,第七个字节0x08表示取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,其中, 0x01标识设备类型为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. ll、Linux2. 6. 10 及 Linux2. 6. 10之 前版本的Linux2. 6内核系统;例如,主机操作系统为第二操作系统时,USB设备接收到的第一个setup包为PID=SETUP ADDR 00 ENDP 00 CRC5 02 idle 3PID=DATAO data :00 05 04 00 00 00 00 00 CRC 16 :70 eb idle :7PID :ACK idle :2f其中,data :00 05 04 00 00 00 00 00为十六进制数,为USB设备分配地址,新分 配到的地址是0x04,而USB设备在接收到上述命令后,向主机返回一个长度为0的空数据 包;具体地,第二预设标识是自定义的,本实施例中第二预设标识为2 ;111、USB设备向主机返回接口描述符,该接口描述符中不含有对自身可用端点数 的描述信息,执行117;具体地,USB设备在认定主机操作系统为第二操作系统时,USB设备向主机返回的 接口描述符中并不向主机报告额外的端点;例如,在主机操作系统是第二操作系统时,USB设备接收到的获取接口描述符命令 为PID=SETUP ADDR 04 ENDP 00 CRC5 05 idle 3PID=DATAO data :80 06 00 04 00 00 09 00 CRC16 :04 ae idle :7PID :ACK idle :31其中,data :80 06 00 04 00 00 09 00为十六进制数,0x04为获取USB设备的接口描述符,0x09表示获取9字节的接口描述符;USB设备返回的接口描述符为PID :IN ADDR :04 ENDP :00 CRC5 :05 idle :7PID DATAl data :09 04 00 00 02 03 00 00 CRC16 :a20a idle :7PID :ACK idle :2cPID :IN ADDR :04 ENDP :00 CRC5 :05 idle :6PID DATAO data :00 CRC16 :7581 idle :7PID :ACK idle :30其中,USB设备返回的接口描述符为09 04 00 00 00 03 00 00 00,其中第五个 字节0x00,告知主机该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 3PID=DATAO data :00 09 01 00 00 00 00 00 CRC16 :2527 idle :7PID :ACK idle :2ela其中,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,第五个字节0x02,告知主机自身有两个可用的端点;再例如,USB设备自身没有额外可用的端点,则向主机返回接口描述符09 04 000000 03 00 00 00,第五个字节0x00,告知主机自身没有额外可用的端点,此时,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 Oa 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设备在接收到上述指令后,则向主机返回0143 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设备。以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则 之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
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所述的方法,其特征在于,所述USB设备进行初始化包括将上电标 识初始化为第一预设值,将操作系统标识初始化为默认标识。
3.根据权利要求2所述的方法,其特征在于,所述步骤F还包括,所述USB设备判断当 前操作系统标识是否与所述默认标识相同,如果相同,则所述USB设备与主机建立通信,并 等待接收所述主机下发的指令;如果不相同,所述USB设备进行软掉电处理,并将所述上电 标识置为第三预设值,执行步骤A。
4.根据权利要求3所述的方法,其特征在于,在所述步骤A之后,所述方法还包括判 断所述USB设备是否是首次上电,如果是首次上电,则执行步骤B ;如果不是,所述USB设备 执行步骤F。
5.根据权利要求4所述的方法,其特征在于,判断所述USB设备是否是首次上电具体 为判断上电标识是否是第一预设值,如果是,则所述USB设备是首次上电,如果不是,则所 述USB设备不是首次上电;
6.根据权利要求1所述的方法,其特征在于,所述第一预设命令为取设备描述符命令。
7.根据权利要求6所述的方法,其特征在于,所述USB设备判断第一个setup包是否是 第一预设命令具体为所述USB设备判断所述第一个setup包是否是以十六进制数80 06 开始的,如果是,则所述第一个setup包是所述第一预设命令,否则,不是所述第一预设命 令。
8.根据权利要求1所述的方法,其特征在于,所述第二预设值为十六进制数0x08。
9.根据权利要求1所述的方法,其特征在于,所述第二预设命令为设置设备地址命令。
10.根据权利要求9所述的方法,其特征在于,所述USB设备判断所述第一个setup数 据包是否是第二预设命令具体为所述USB设备判断所述第一个setup包是否是以十六进 制数00 05开始的,如果是,则所述第一个setup包为所述第二预设命令,否则,不是所述第 二预设命令。
11.根据权利要求1所述的方法,其特征在于,所述最后一个setup包是指所述USB设 备在接收完取描述符信息之后接收到的第一条指令。
12.根据权利要求11所述的方法,其特征在于,所述取描述符信息包括取设备描述符 命令、取接口描述符命令、取端点描述符命令、取配置描述符命令。
13.根据权利要求1所述的方法,其特征在于,所述第三预设命令为选择配置指令。
14.根据权利13所述的方法,其特征在于,所述USB设备判断最后一个setup包是否 是第三预设命令具体为所述USB设备判断所述最后一个setup包是否是以十六进制数00 09开始的,如果是,则所述最后一个setup包是所述第三预设命令,否则,不是所述第三预 设命令。
15.根据权利要求1所述的方法,其特征在于,所述方法还包括所述第一预设标识对 应第一操作系统,第二预设标识对应第二操作系统,第三预设标识对应第三操作系统,第四 预设标识对应第四操作系统。
16.根据权利要求15的方法,其特征在于,所述第一操作系统为苹果操作系统,所述第 二操作系统为Linux2. 4内核系统或Linux2. 6. 10及Linux2. 6. 10之前的内核系统,所述第 三操作系统为Linux2. 6. 10之后的内核系统,第四操作系统为Windows操作系统。
全文摘要
本发明公开了一种USB设备识别主机操作系统的方法,属于信息安全领域。方法包括A、USB设备上电并初始化;B、判断第一个setup包是否是第一预设命令,是执行C,不是执行D;C、判断第一预设命令中的第七个字节是否是第二预设值,是将操作系统标识置为第一预设标识执行F,否则执行E;D、判断第一个setup包是否是第二预设命令,是将操作系统标识置为第二预设标识,执行F否则执行E;E、按照默认操作系统标识与主机进行信息交互,直到接收到最后一个setup包,并判断最后一个setup包是否是第三预设命令,是则将操作系统标识置为第三预设标识,不是,则将操作系统标识置为第四预设标识;F、根据当前操作系统标识与主机进行信息交互,之后并等待接收主机下发的指令。
文档编号G06F13/42GK102043751SQ20101021396
公开日2011年5月4日 申请日期2010年6月29日 优先权日2010年6月29日
发明者于华章, 陆舟 申请人:北京飞天诚信科技有限公司