一种用于在多种操作系统间同一u盘统一标识系统及方法
技术领域
1.本发明涉及网络安全技术领域,具体涉及一种用于在多种操作系统间同一u盘统一标识系统及方法。
背景技术:2.闪存成本的下降以及u盘较低的技术门槛,使得市场上的u盘品牌和种类格外丰富,虽然u盘的价格低并且超级便携,但是u盘同时也是传播病毒等恶意软件的非常重要的一个渠道,并且,对于大企业来说,因为业务复杂,可能会部署多种操作系统,这些安装了不同操作系统的计算机和服务器,都需要对u盘进行管控,最好能实现统一的管控,对同一个u盘,在不同操作系统上部署同样的管控策略。假如一个u盘在不同操作系统之间有不同的管控,这就会带来巨大的安全隐患。
3.要实现对u盘在不同操作系统之间进行统一管控,那么首先要能统一标识该u盘,如果同一个u盘在不同操作系统有不同的id,则就无法对它进行部署相同的策略。常见的通过u盘uuid或者卷uuid来标识u盘的方法不能使用,一来由于厂商的不同实现,这些uuid不一定存在,二来不同的文件系统在不同操作系统的挂载方式和驱动不同,会导致uuid不一致。因此,需要一种新的方法来确定u盘的统一标识id,对u盘进行统一标识。
技术实现要素:4.针对上述现有技术的不足,本发明旨在提供一种用于在多种操作系统间同一u盘统一标识系统及方法,解决在多操作系统下u盘具有不同的统一标识id,以至于难以对同一u盘在不同操作系统下进行管控的问题。
5.为了解决上述问题,本发明采用了如下的技术方案:第一方面,本发明提供一种用于在多种操作系统间同一u盘统一标识系统,包括u盘统一标识id确定模块;所述u盘统一标识id确定模块,用于解析u盘的容错签名,将所述容错签名作为所述u盘的统一标识id。
6.进一步的,所述u盘统一标识id确定模块包括u盘信息获取单元、u盘主引导扇区内容读取单元、u盘容错签名解析单元和u盘统一标识id标识单元;所述u盘信息获取单元,用于在不同的操作系统下获取所述u盘的信息;所述u盘主引导扇区内容读取单元,用于根据所述u盘信息获取单元获取的所述u盘的信息,读取所述u盘的主引导扇区的内容;所述u盘容错签名解析单元,用于根据所述u盘主引导扇区内容读取单元读取的所述u盘的主引导扇区的内容,解析出所述容错签名;所述u盘统一标识id标识单元,用于将所述u盘容错签名解析单元解析出的所述容错签名作为所述u盘的统一标识id。
7.进一步的,还包括u盘格式化判定模块,所述u盘格式化判定模块用于判定所述u盘
是否被格式化或者初始化,若所述u盘被格式化或初始化,则转入所述u盘统一标识id确定模块。
8.进一步的,所述u盘统一标识id确定模块还包括操作系统判定单元,所述操作系统判定单元用于判定所述u盘连接设备的操作系统;若所述操作系统为linux、centos、ubuntu、debian、unix、麒麟、uos或凝思,所述u盘连接后,所述操作系统在/dev/目录下创建一个文件,通过api打开该文件,读取前512字节,把主引导扇区从u盘读取到内存,再解析出所述容错签名,代码如下:unsigned char sector[512];int usbdisk = fopen("/dev/sdb","rb");fread(sector, 512, 1, usbdisk);fclose(usbdisk);或采用dd命令获取所述u盘的信息,读取所述主引导扇区的内容,解析出所述容错签名;若所述操作系统为windows,则采用createfile获取所述u盘的信息,读取所述主引导扇区的内容,解析出所述容错签名,代码如下:unsigned char sector[512];handle file = createfile("\\\\.\\d:", generic_read, file_share_read| file_share_write,null, open_existing, file_attribute_readonly, null);readfile(file, &sector, 512, null, null) ;close(file)。
[0009]
进一步的,所述容错签名为所述u盘的主引导扇区偏移0x1b8开始的4个字节。
[0010]
第二方面,本发明提供一种用于在多种操作系统间同一u盘统一标识方法,解析u盘的容错签名,将所述容错签名作为所述u盘的统一标识id。
[0011]
进一步的,所述在多种操作系统间同一u盘统一标识方法包括:s10、在不同的操作系统下获取所述u盘的信息;s20、根据所述u盘的信息,读取所述u盘的主引导扇区的内容;s30、根据所述u盘的主引导扇区的内容,解析出所述容错签名;s40、将所述容错签名作为所述u盘的统一标识id。
[0012]
进一步的,判定所述u盘是否被格式化或者初始化,若所述u盘被格式化或初始化,则重复所述步骤s10至s40。
[0013]
进一步的,若所述操作系统为linux、centos、ubuntu、debian、unix、麒麟、uos或凝思,所述u盘接入后,所述操作系统在/dev/目录下创建一个文件,通过api打开该文件,读取前512字节,把主引导扇区从所述u盘读取到内存,再解析出所述容错签名,代码如下:unsigned char sector[512];int usbdisk = fopen("/dev/sdb","rb");fread(sector, 512, 1, usbdisk);fclose(usbdisk);或采用dd命令获取所述u盘的信息,读取所述主引导扇区的内容,解析出所述容错
签名;若所述操作系统为windows,则采用createfile获取所述u盘的信息,读取所述主引导扇区的内容,解析出所述容错签名,代码如下:unsigned char sector[512];handle file = createfile("\\\\.\\d:", generic_read, file_share_read| file_share_write,null, open_existing, file_attribute_readonly, null);readfile(file, &sector, 512, null, null) ;close(file)。
[0014]
进一步的,所述容错签名为所述u盘的主引导扇区偏移0x1b8开始的4个字节。
[0015]
第三方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述用于在多种操作系统间同一u盘统一标识方法的步骤。
[0016]
本发明的有益效果在于:本发明提供的用于在多种操作系统间同一u盘统一标识系统及方法,通过利用在u盘的主引导扇区中,偏移0x1b8开始的4个字节,存放的容错签名作为u盘的统一标识id,由于该容错签名在自动生成的时候基于磁盘本身信息还加入了随机数,是操作系统为了容错和校验主引导扇区的全局唯一的一组数字,与主引导扇区中其他数字没有重复,所以将该容错签名作为u盘的统一标识id,实现对u盘在不同操作系统间的统一标识,可以方便对u盘进行管理,还可以使得用户在不同操作系统上对u盘部署同样的管控策略(识别、检测、杀毒等等),并且可以降低u盘在不同操作系统的计算机上使用的安全风险。
附图说明
[0017]
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:图1 为本发明实施例中用于在多种操作系统间的u盘统一标识系统示意图。
[0018]
图2为本发明实施例中用于在多种操作系统间的u盘统一标识方法流程示意图。
具体实施方式
[0019]
下面结合具体实施例对本发明作进一步的详细说明。
[0020]
需要说明的是,这些实施例仅用于说明本发明,而不是对本发明的限制,在本发明的构思前提下本方法的简单改进,都属于本发明要求保护的范围。
[0021]
参见图1,为一种用于在多种操作系统间同一u盘统一标识系统,包括u盘统一标识id确定模块100;所述u盘统一标识id确定模块100,用于解析u盘的容错签名,将所述容错签名作为所述u盘的统一标识id。
[0022]
作为一种可实施方式,所述u盘统一标识id确定模块100包括u盘信息获取单元110、u盘主引导扇区内容读取单元120、u盘容错签名解析单元130和u盘统一标识id标识单元140;
所述u盘信息获取单元110,用于在不同的操作系统下获取所述u盘的信息;所述u盘主引导扇区内容读取单元120,用于根据所述u盘信息获取单元110获取的所述u盘的信息,读取所述u盘的主引导扇区的内容;所述u盘容错签名解析单元130,用于根据所述u盘主引导扇区内容读取单元120读取的所述u盘的主引导扇区的内容,解析出所述容错签名;所述u盘统一标识id标识单元140,用于将所述u盘容错签名解析单元130解析出的所述容错签名作为所述u盘的统一标识id。
[0023]
作为一种可实施方式,还包括u盘格式化判定模块200,所述u盘格式化判定模块200用于判定所述u盘是否被格式化或者初始化,若所述u盘被格式化或初始化过后,其容错签名会重新自动生成,导致所述u盘的统一标识会发生变化,若所述u盘被格式化或初始化,则转入所述u盘统一标识id确定模块100。
[0024]
作为一种可实施方式,所述u盘统一标识id确定模块100还包括操作系统判定单元101,所述操作系统判定单元101用于判定所述u盘连接设备的操作系统;基于不同的操作系统,在解析出所述容错签名的时候存在一定的差别,比如:若所述操作系统为linux、centos、ubuntu、debian、unix、麒麟、uos或凝思,u盘插入后,操作系统会在/dev/目录下创建一个文件,比如/dev/sdb,该文件代表了当前u盘,可以通过api打开该文件,比如c语言的fopen函数,就可以打开该u盘,主引导扇区永远位于最开始的一个扇区,扇区大小为512字节,因此该文件打开后直接读取前512字节,就可以把主引导扇区从u盘读取到内存,然后就可以进行后续的操作,主要代码如下:unsigned char sector[512];int usbdisk = fopen("/dev/sdb","rb");fread(sector, 512, 1, usbdisk);fclose(usbdisk);或采用dd命令获取所述u盘的信息,读取所述主引导扇区的内容,解析出所述容错签名;若所述操作系统为windows,则采用createfile获取所述u盘的信息,读取所述主引导扇区的内容,解析出所述容错签名,代码如下:unsigned char sector[512];handle file = createfile("\\\\.\\d:", generic_read, file_share_read| file_share_write,null, open_existing, file_attribute_readonly, null);readfile(file, &sector, 512, null, null) ;close(file)。
[0025]
本发明把主引导扇区中的磁盘签名用作u盘的统一标识id,即在u盘的主引导扇区(mbr:master boot record)中,偏移0x1b8开始的4个字节,存放了一个signature,全称是fault tolerant signature,中文译为容错签名,该容错签名在自动生成的时候基于磁盘本身信息还加入了随机数,是操作系统为了容错和校验主引导扇区的全局唯一的一组数字(不会与mbr中其他数字重复);由于该磁盘容错签名是唯一的,并且被写入到u盘的主引导扇区当中,因此它在任
何操作系统中的值都是相同的,所以只要我们能够读取该容错签名,就可以直接利用容错签名作为u盘的唯一标识id。
[0026]
第二方面,本发明提供一种用于在多种操作系统间同一u盘统一标识方法,解析u盘的容错签名,将所述容错签名作为所述u盘的统一标识id。
[0027]
作为一种可实施方式,参见图2,所述用于在多种操作系统间同一u盘统一标识方法包括:s10、在不同的操作系统下获取所述u盘的信息;s20、根据所述u盘的信息,读取所述u盘的主引导扇区的内容;s30、根据所述u盘的主引导扇区的内容,解析出所述容错签名;s40、将所述容错签名作为所述u盘的统一标识id。
[0028]
作为一种可实施方式,判定所述u盘是否被格式化或者初始化,若所述u盘被格式化或初始化过后,其容错签名会重新自动生成,导致所述u盘的统一标识会发生变化,则重复所述步骤s10至s40。
[0029]
作为一种可实施方式,基于不同的操作系统,在解析出所述容错签名的时候存在一定的差别,比如:若所述操作系统为linux、centos、ubuntu、debian、unix、麒麟、uos或凝思,在linux上,u盘插入后,操作系统会在/dev/目录下创建一个文件,比如/dev/sdb,该文件代表了当前u盘,可以通过api打开该文件,比如c语言的fopen函数,就可以打开该u盘,mbr永远位于最开始的一个扇区,扇区大小为512字节,因此该文件打开后直接读取前512字节,就可以把mbr从u盘读取到内存,然后就可以进行后续的操作,主要代码如下:unsigned char sector[512];int usbdisk = fopen("/dev/sdb","rb");fread(sector, 512, 1, usbdisk);fclose(usbdisk);或采用dd命令获取所述u盘的信息,读取所述主引导扇区的内容,解析出所述容错签名;若所述操作系统为windows,则采用createfile获取所述u盘的信息,读取所述主引导扇区的内容,解析出所述容错签名,代码如下:unsigned char sector[512];handle file = createfile("\\\\.\\d:", generic_read, file_share_read| file_share_write,null, open_existing, file_attribute_readonly, null);readfile(file, &sector, 512, null, null) ;close(file)。
[0030]
作为一种可实施方式,所述容错签名为所述u盘的主引导扇区偏移0x1b8开始的4个字节。
[0031]
第三方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述用于在多种操作系统间同一u盘统一标识方法的步骤。
[0032]
计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0033]
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管通过参照本发明的优选实施例已经对本发明进行了描述,但本领域的普通技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。