carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3231回复:15

有偿求助 高手请进(帮不了进来讨论讨论也给分)

楼主#
更多 发布于:2004-02-25 19:51
有偿求助  高手请进(帮不了进来讨论讨论也给分)
小生做USB一年,勤勤恳恳,但奈何资质太差,磕磕碰碰,历尽艰难困苦,方有小果。小果虽小皆心血之做,然导师不喜,以学位相挟,寒窗三载,转眼欲成空。忽想中华自古多侠士,论坛比比皆俊才。遂跪请请诸大侠指点一二。纵每日稀饭泡茶亦不敢忘大恩大德。


问题如下:
       小弟用CS5954AM做了一U盘,相以此为基础。设计并实现这样一实验。文件考入U盘后是不可读的(没法读或是分裂成多个文件),或是读出来不正确(全0啊全1)。当考入一种子(文件)后一切恢复正常。
       小弟现在本身水平也太低,又急着写论文、考博实做不出来了也没时间做了,事关毕业想请高手拉一把。有偿!
                                                                电话 13526598231
                                                                mail: god_dragon1028@mail.china.com
                小弟上网不太方便以前很多网友求助的信回的都不及时,有意可以直接打电话。

最新喜欢:

abei11abei11
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-02-26 09:50
既然U盘是你自己作的,这还不简单。
在PC读写U盘文件数据时,你可以检测一些U盘上是否存在正确的种子文件,若存在,你就返回正确的数据,否则返回全0或全1。
我不喜欢打电话,看你的名字应该咱俩是家们,如果你想作的话而且信得过我我可以帮你,有偿无偿无所谓,把你的源文件发过来,改好了我给你发过去。我的邮箱为DRAGON_HN@SOHU.COM
www.dragon-2008.com 欢迎交流
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-02-26 10:02
另外我见过另外一种方式实现数据保密的:
在U盘上另外开一个控制端点,可以通过控制端点输入密码的方式进行保密.
www.dragon-2008.com 欢迎交流
carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-02-26 22:16
太感谢了为了方便大家我把资料和源码传上来
我导师的意见是想把加密做到底层一点。也就是免驱尽量把工作做在USB固件上面。
这里面就面临一个问题:
如果我做一个协义栈(或判断)屏蔽READ命扫描文件目录区当发现种子
(特定文件名、特定后缀名、或特定内容)READ命令恢复。
我怎么找到文件名,就算我在BUSHOUND 抓到了数据包,我又怎么在固件里对他进行修改!
U盘的FAT是在驱动上完成的,U盘FLASH的读写是以页为单位完成。

以上是我做CS5954AM U盘用的资料,
资料内容:
解压后
sl11r_bios.pdf  为CS5954AM BIOS中断集。
hardware  内含电路
DOC  中 CS5954AM Data Sheet.pdf 是USB CONTROLLER 苡片资料 内含指令集
firmware  中  NANDFLSH.ASM 为固件主程序
虽然固件前部我写的有注释但还是建议看固件前先看一下PDF文档。
CS5954AM USB to NAND Flash Reference Design Notes

[编辑 -  2/26/04 by  carriage]
附件名称/大小 下载次数 最后更新
2004-02-26_cy4616开发全套.rar (4220KB)  58
carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-02-27 11:30
大家都来看一下
carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-02-28 12:51
up
carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-03-03 12:39
大侠们这个问题很难吗?
carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-03-03 19:37
dragon_hn 请看
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-03-04 09:34
大概看了一下.这个问题其实不难解决.但解决的方法比较怪.我给你回信了.

www.dragon-2008.com 欢迎交流
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-03-04 09:49
    昨天我找了很久的帖子都没找到.
    对你的资料,我粗略看了一下,对这个系统不是很熟悉.
    对种子文件一项,我有一个好方法,虽然不是很符合常规,但绝对行得通,既然固件程序是你写的,你自己改应该没什么问题,我也试着改一下.
检测种子文件数据的具体方法:
    当PC向你写文件时,由于SCSI命令是以扇区为单位写的,而文件系统却由于太复杂而直接通过文件来过滤会很困难.所以一个间接的方法是通过过滤扇区数据来进行屏蔽.特殊的种子文件对应特殊的扇区数据.512字节的种子扇区数据重复的几率几乎为0,所以该方法是绝对可靠的.也就是说检测方法是以512字节为单位对种子文件进行检测的.
检测文件名具体方法:
    跟检测种子文件数据的方法类似,不过过滤的不是以512字节为单位而是以16字节为单位.此方法要求同种子文件数据配合使用,单独使用重复的几率较大.
    
    通常的U盘加密都是通过附加的端点来实现的,其实你也可以考虑一下.
-------------------------------------------------------
希望大家有好点子都拿出来,共同进步
www.dragon-2008.com 欢迎交流
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-03-05 23:20
我认为可以用特征字来实现。
何谓特征字?就是独一无二的特征。
大家都知道GUID吧!它是通过某种类似散列运算的方法,产生一个128比特的数值,保证在这个地球上不会再产生出第二个来。
所以你只要使用GUIDGEN.EXE产生32个各自不同的GUID,算起来为512字节。这样你只要在固件中保存这512字节,然后再进行数据流过滤即可。
我以前在作通信的同步字时用过该方法(当时用了两个GUID)。能够保证接收方在任何状态下实现同步。

其实,杀毒软件也经常使用特征字。
A strong man can save himself. A great man can save another.
carriage
驱动小牛
驱动小牛
  • 注册日期2002-10-12
  • 最后登录2004-09-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-03-07 21:02
能不能具体说一下数据流过滤啊
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-03-07 23:38
其实很简单呀!
下面为C的伪代码:

const BYTE gpucMyTag[512] = {0xa0, 0x54, 0x39, ....} //特征字。

BOOL gbSeedTrigged = FALSE; //标识特征字出现

BOOL PeepAByteFromFifo_L(UINT uIndex, BYTE * pucX)
{
   //察看上位机下传的数据。
}

BOOL GetAByteFromFifo_L(BYTE * pucX)
{
   if(!PeepAByteFromFifo_L(0, pucX))
      return FALSE;
   DecreaseFifoOutPointer();
   return TRUE;
}

BOOL GetAByteFromFifo(BYTE * pucX)
{
   static UINT uCounter = 0;
   if(!GetAByteFromFifo_L(pucX))
      return FALSE;
   if(pucX[0] != gpucMyTag[uCounter])
   {
      uCounter = 0;
      return TRUE;
   }
   uCounter++;
   if(uCounter = 512)
   {
      gbSeedTrigged;
   }
   return TRUE;
}

对于你的系统而言,不用这么复杂。
只要做个循环就可以了:
BOOL CheckSeed(BYTE * pucInputData, const BYTE * pucSeed)
{
   UINT i;
   for(i = 0; i < 512; i++)
   {
      if(pucInputData != pucSeed)
         return FALSE;
   }
   return TRUE;
}
A strong man can save himself. A great man can save another.
abei11
驱动小牛
驱动小牛
  • 注册日期2002-11-14
  • 最后登录2005-06-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-03-08 09:52
我觉得应用程序和固件都是自己编的,就可以自己加一些东西来协调,就和一般的协议一样,不成功就不读取,就是这样!
ekakio
驱动牛犊
驱动牛犊
  • 注册日期2008-05-04
  • 最后登录2008-06-04
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2008-05-08 11:53
Re:有偿求助 高手请进(帮不了进来讨论讨论也给分)
zhoujiamurong
驱动小牛
驱动小牛
  • 注册日期2006-03-20
  • 最后登录2009-05-06
  • 粉丝4
  • 关注0
  • 积分1081分
  • 威望360点
  • 贡献值0点
  • 好评度215点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2008-06-19 17:43
Re:有偿求助&nbsp; 高手请进(帮不了进来讨论讨论也给分)
然导师不喜,以学位相挟
===================
现在的导师大多不专专业,尽专业务,自己恐怕都搞不定,逼着学生搞定,这种导师还不如做生意的老板。
游客

返回顶部