bigbee
驱动牛犊
驱动牛犊
  • 注册日期2003-08-04
  • 最后登录2004-10-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:9289回复:14

要实现U盘分区、加密、启动该怎么做

楼主#
更多 发布于:2004-06-28 16:08
目前要做一个操作U盘的小工具,希望实现的功能是分区和加密,还有能用U盘来启动计算机。从固件到驱动到应用程序都有我们来做的,但现在固件中还没有实现上述功能。请问哪里有相关的资料,或者相关的代码?谢谢

最新喜欢:

_badday_badda...
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-29 14:21
我用的一个U盘可以有两个分区,一个加密分区,一个非加密分区。
实际上只有一个分区。说它只有一个分区是因为它总只有一个分区是可见的。
当登陆之后,U盘会自动重启一下,之后看到的是加密分区。
当注销之后,U盘会自动重启一下,之后看到的是非加密分区。
加密分区和非加密分区容量之和为实际的U盘容量。

[编辑 -  6/29/04 by  dragon_hn]
www.dragon-2008.com 欢迎交流
wozhuce
驱动小牛
驱动小牛
  • 注册日期2004-04-02
  • 最后登录2005-11-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-29 20:53
U盘启动就是在U盘的MBR的可执行代码中加入引如加载msdos.sys和io.sys的信息。分区理论上应该是在MBR加入两个分区的信息吧,这个我到没做过,不知对否?
bigbee
驱动牛犊
驱动牛犊
  • 注册日期2003-08-04
  • 最后登录2004-10-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-30 17:14
谢谢两位了,我这些天也看了不少资料,有那份北航Frank“U盘项目技术报告”还有很多关于硬盘结构分析的内容。思路也在渐渐明朗。此贴我一定会结,现在想再等一等,看还有没有哪位愿意赐教。
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于: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地址,但你实际可以写在任何一个地方,不过这个一一对应的关系先要做好算法:)

我的理解就是这样

千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
bigbee
驱动牛犊
驱动牛犊
  • 注册日期2003-08-04
  • 最后登录2004-10-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-01 08:56
flyhye的回答还真是全面,十分感谢!这里有几个问题探讨一下。你提到的dtb表是否是说mbr中的硬盘分区表?msdos.sys和io.sys的信息也就是放在boot code部分喽?这里所说的信息是指着两个文件的位置吗?
还有弱弱的问一下getmaxlun是什么?磁盘的结构我这两天读了不少,也有所了解了。是否分区也就是在mbr的disk partion table中添加相应的描述就可以了?
最后加密是否就是在flash上留出一点空间,有它自己的fat表和密码认证文件。抑或你的意思是再加一块小容量的flash做这个?
这个问题已经越来越清晰了,谢谢大家的参与,欢迎继续讨论。
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-01 10:58
flyhye的回答还真是全面,十分感谢!这里有几个问题探讨一下。你提到的dtb表是否是说mbr中的硬盘分区表?msdos.sys和io.sys的信息也就是放在boot code部分喽?这里所说的信息是指着两个文件的位置吗?
还有弱弱的问一下getmaxlun是什么?磁盘的结构我这两天读了不少,也有所了解了。是否分区也就是在mbr的disk partion table中添加相应的描述就可以了?
最后加密是否就是在flash上留出一点空间,有它自己的fat表和密码认证文件。抑或你的意思是再加一块小容量的flash做这个?
这个问题已经越来越清晰了,谢谢大家的参与,欢迎继续讨论。

dtb表为笔误:)应为FDT表。msdos.sys和io.sys在fdt中的位置必须在第二、和第三个(可能记错了),因为bios启动时去找它(比较新的据说不用固定位置了,没测试过)
getmaxlux是usbmassstorage中的一个命令而已。
分区看磁盘结构应该就有一个很清楚的认识
加密就在flash留出空间就可以了。
具体的实现需要自己去琢磨、完善,记得做好了别忘了来发贴庆祝哟:)
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
bigbee
驱动牛犊
驱动牛犊
  • 注册日期2003-08-04
  • 最后登录2004-10-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-01 17:14
嗯,我看到了“优盘文件系统(for c)”一文(也是来自这里)。上面提到了DBR中一段引导程序担负着找到引导文件的任务,不过具体这部分怎么写,文中也没有细说。还有不知道mbr头上的boot code部分能有什么花样。要实现确实还有些路要走,在实践中摸索吧。等我完成了一定来这里报喜,呵呵。
wozhuce
驱动小牛
驱动小牛
  • 注册日期2004-04-02
  • 最后登录2005-11-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-01 19:51
DBR 中的引导代码怎么写(具体到每一个字节)。我也只知道大概,最近也在整,好象讲这个的比较少。
windrv
驱动牛犊
驱动牛犊
  • 注册日期2004-07-05
  • 最后登录2004-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-07-05 04:19
个人认为flyhye的加密思路并不是最优。

1. 需要一个程序做密码验证,然后报验证结果或密码告诉设备。那么第三方可以截获这个验证结果或密码,然后伪造一个来欺骗。

2. 盘中的数据没有被加密,USB传输过程中的数据没有被加密。

我觉得更好的思路是在Windows文件系统驱动程序中去做。 从Windows NT开始,其文件系统就已经开始支持加密分区。硬盘生产厂商可以提供一个文件系统的filter驱动程序,有了该驱动程序,加密硬盘才能被读写。密码验证可以在这个驱动程序中做,密码算法可以用Windows提供的RSA算法。这样一个思路,是把加密算法和加密硬盘完全集成到操作系统中去了。

具体如何去实现要去看驱动程序的书,特别是文件系统驱动程序。
bigbee
驱动牛犊
驱动牛犊
  • 注册日期2003-08-04
  • 最后登录2004-10-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-07-05 09:27
谢谢了。我会参考的。
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-07-05 12:17
不错!!
丁页!

个人认为flyhye的加密思路并不是最优。

1. 需要一个程序做密码验证,然后报验证结果或密码告诉设备。那么第三方可以截获这个验证结果或密码,然后伪造一个来欺骗。

2. 盘中的数据没有被加密,USB传输过程中的数据没有被加密。

我觉得更好的思路是在Windows文件系统驱动程序中去做。 从Windows NT开始,其文件系统就已经开始支持加密分区。硬盘生产厂商可以提供一个文件系统的filter驱动程序,有了该驱动程序,加密硬盘才能被读写。密码验证可以在这个驱动程序中做,密码算法可以用Windows提供的RSA算法。这样一个思路,是把加密算法和加密硬盘完全集成到操作系统中去了。

具体如何去实现要去看驱动程序的书,特别是文件系统驱动程序。
 
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
chanlin007
驱动牛犊
驱动牛犊
  • 注册日期2004-06-09
  • 最后登录2008-10-20
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-07-05 16:47
我们公司是开发MP3、U盘芯片的,我刚做完文件系统,现在也正准备做U盘的zip/hdd启动,还有加密等等。如果你有相关的资料,可不可以与我共享,真的希望能更多的交流。

ilzxs
驱动牛犊
驱动牛犊
  • 注册日期2007-04-10
  • 最后登录2007-06-22
  • 粉丝0
  • 关注0
  • 积分120分
  • 威望13点
  • 贡献值0点
  • 好评度12点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-04-23 23:04
各位高手~~~真是令人佩服啊~~~~~~~~~~~
_badday
驱动牛犊
驱动牛犊
  • 注册日期2012-03-14
  • 最后登录2015-07-04
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望81点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2012-06-20 15:39
  顶,U盘分区加密资料真少。。
游客

返回顶部