阅读:9423回复:14
要实现U盘分区、加密、启动该怎么做
目前要做一个操作U盘的小工具,希望实现的功能是分区和加密,还有能用U盘来启动计算机。从固件到驱动到应用程序都有我们来做的,但现在固件中还没有实现上述功能。请问哪里有相关的资料,或者相关的代码?谢谢
|
|
最新喜欢:_badda... |
沙发#
发布于:2004-06-29 14:21
我用的一个U盘可以有两个分区,一个加密分区,一个非加密分区。
实际上只有一个分区。说它只有一个分区是因为它总只有一个分区是可见的。 当登陆之后,U盘会自动重启一下,之后看到的是加密分区。 当注销之后,U盘会自动重启一下,之后看到的是非加密分区。 加密分区和非加密分区容量之和为实际的U盘容量。 [编辑 - 6/29/04 by dragon_hn] |
|
|
板凳#
发布于:2004-06-29 20:53
U盘启动就是在U盘的MBR的可执行代码中加入引如加载msdos.sys和io.sys的信息。分区理论上应该是在MBR加入两个分区的信息吧,这个我到没做过,不知对否?
|
|
地板#
发布于:2004-06-30 17:14
谢谢两位了,我这些天也看了不少资料,有那份北航Frank“U盘项目技术报告”还有很多关于硬盘结构分析的内容。思路也在渐渐明朗。此贴我一定会结,现在想再等一等,看还有没有哪位愿意赐教。
|
|
地下室#
发布于:2004-06-30 19:24
目前要做一个操作U盘的小工具,希望实现的功能是分区和加密,还有能用U盘来启动计算机。从固件到驱动到应用程序都有我们来做的,但现在固件中还没有实现上述功能。请问哪里有相关的资料,或者相关的代码?谢谢 想通了就比较容易,我先说个思路 启动:只要主板支持,一种是usbzip、一种是usbhdd吧,zip的话将msdos.sys和io.sys的信息放入在dtb表的前面,mbr带启动程序应该就可以了;hdd或fdd方式的话就应该还要改变一下描述符,让bios认为它是hd设备或fd设备 分区:简单,一是要做getmaxlun的支持,相应的自己还要做一些上层程序来格式化,二是对磁盘结构要了解,第0扇区放mbr,内含一个主分区信息,再就是磁盘引导信息,扩展分区信息,跟硬盘一致,要不就直接建多个主分区信息(<=4 ),相关的可以看看磁盘结构方面的资料 加密:在firmware中加入一段程序,只要上层来读U盘,就判断是否有密码保护,如有就将另外的一段flash中的数据发上去,这段flash其实也可以看作是一个u盘,只是容量很小,有它自己的fat表和文件(该文件可以为密码认证文件),上层只能见到这个文件,双击打开就是要输密码,密码正确后,上层来读u盘,这时才真正把flash中的文件fat表传出即可。密码可以放在任何一个sector上,反正没人知道,用bushound抓,即使就算抓到,比如是05地址,但你实际可以写在任何一个地方,不过这个一一对应的关系先要做好算法:) 我的理解就是这样 |
|
|
5楼#
发布于:2004-07-01 08:56
flyhye的回答还真是全面,十分感谢!这里有几个问题探讨一下。你提到的dtb表是否是说mbr中的硬盘分区表?msdos.sys和io.sys的信息也就是放在boot code部分喽?这里所说的信息是指着两个文件的位置吗?
还有弱弱的问一下getmaxlun是什么?磁盘的结构我这两天读了不少,也有所了解了。是否分区也就是在mbr的disk partion table中添加相应的描述就可以了? 最后加密是否就是在flash上留出一点空间,有它自己的fat表和密码认证文件。抑或你的意思是再加一块小容量的flash做这个? 这个问题已经越来越清晰了,谢谢大家的参与,欢迎继续讨论。 |
|
6楼#
发布于:2004-07-01 10:58
flyhye的回答还真是全面,十分感谢!这里有几个问题探讨一下。你提到的dtb表是否是说mbr中的硬盘分区表?msdos.sys和io.sys的信息也就是放在boot code部分喽?这里所说的信息是指着两个文件的位置吗? dtb表为笔误:)应为FDT表。msdos.sys和io.sys在fdt中的位置必须在第二、和第三个(可能记错了),因为bios启动时去找它(比较新的据说不用固定位置了,没测试过) getmaxlux是usbmassstorage中的一个命令而已。 分区看磁盘结构应该就有一个很清楚的认识 加密就在flash留出空间就可以了。 具体的实现需要自己去琢磨、完善,记得做好了别忘了来发贴庆祝哟:) |
|
|
7楼#
发布于:2004-07-01 17:14
嗯,我看到了“优盘文件系统(for c)”一文(也是来自这里)。上面提到了DBR中一段引导程序担负着找到引导文件的任务,不过具体这部分怎么写,文中也没有细说。还有不知道mbr头上的boot code部分能有什么花样。要实现确实还有些路要走,在实践中摸索吧。等我完成了一定来这里报喜,呵呵。
|
|
8楼#
发布于:2004-07-01 19:51
DBR 中的引导代码怎么写(具体到每一个字节)。我也只知道大概,最近也在整,好象讲这个的比较少。
|
|
9楼#
发布于:2004-07-05 04:19
个人认为flyhye的加密思路并不是最优。
1. 需要一个程序做密码验证,然后报验证结果或密码告诉设备。那么第三方可以截获这个验证结果或密码,然后伪造一个来欺骗。 2. 盘中的数据没有被加密,USB传输过程中的数据没有被加密。 我觉得更好的思路是在Windows文件系统驱动程序中去做。 从Windows NT开始,其文件系统就已经开始支持加密分区。硬盘生产厂商可以提供一个文件系统的filter驱动程序,有了该驱动程序,加密硬盘才能被读写。密码验证可以在这个驱动程序中做,密码算法可以用Windows提供的RSA算法。这样一个思路,是把加密算法和加密硬盘完全集成到操作系统中去了。 具体如何去实现要去看驱动程序的书,特别是文件系统驱动程序。 |
|
10楼#
发布于:2004-07-05 09:27
谢谢了。我会参考的。
|
|
11楼#
发布于:2004-07-05 12:17
不错!!
丁页! 个人认为flyhye的加密思路并不是最优。 |
|
|
12楼#
发布于:2004-07-05 16:47
我们公司是开发MP3、U盘芯片的,我刚做完文件系统,现在也正准备做U盘的zip/hdd启动,还有加密等等。如果你有相关的资料,可不可以与我共享,真的希望能更多的交流。
|
|
13楼#
发布于:2007-04-23 23:04
各位高手~~~真是令人佩服啊~~~~~~~~~~~
|
|
14楼#
发布于:2012-06-20 15:39
顶,U盘分区加密资料真少。。
|
|