USB过滤驱动中,怎样实现禁用U盘???????????????、

西山小月 2008-12-27 10:50:12
怎样实现在u盘插上后,用户无法打开,用户身份在经过验证后,才能打开。
现在用户验证已经没问题,就是不知道怎样先禁止u盘,然后再放行。
...全文
1662 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
JinEver 2011-03-24
  • 打赏
  • 举报
回复
帮顶 最近也在弄这个 很想知道有什么好方法 我处理了WM_DEVICECHANGE消息 ,不知道HOOK这个消息能不能实现
云起飞扬 2011-03-15
  • 打赏
  • 举报
回复
我的和你类似,不过简单些,只需要根据策略开启或禁用U盘,想在bus层加过滤器,不知该如何判断U盘等存储类设备
le123 2011-01-26
  • 打赏
  • 举报
回复
顶起!
zswolf2000 2009-01-21
  • 打赏
  • 举报
回复
就是过滤下面这些scsi command,但主要是要过滤

#define SCSIOP_READ 0x28
#define SCSIOP_WRITE 0x2A


//
// SCSI CDB operation codes
//

#define SCSIOP_TEST_UNIT_READY 0x00
#define SCSIOP_REZERO_UNIT 0x01
#define SCSIOP_REWIND 0x01
#define SCSIOP_REQUEST_BLOCK_ADDR 0x02
#define SCSIOP_REQUEST_SENSE 0x03
#define SCSIOP_FORMAT_UNIT 0x04
#define SCSIOP_READ_BLOCK_LIMITS 0x05
#define SCSIOP_REASSIGN_BLOCKS 0x07
#define SCSIOP_INIT_ELEMENT_STATUS 0x07
#define SCSIOP_READ6 0x08
#define SCSIOP_RECEIVE 0x08
#define SCSIOP_WRITE6 0x0A
#define SCSIOP_PRINT 0x0A
#define SCSIOP_SEND 0x0A
#define SCSIOP_SEEK6 0x0B
#define SCSIOP_TRACK_SELECT 0x0B
#define SCSIOP_SLEW_PRINT 0x0B
#define SCSIOP_SEEK_BLOCK 0x0C
#define SCSIOP_PARTITION 0x0D
#define SCSIOP_READ_REVERSE 0x0F
#define SCSIOP_WRITE_FILEMARKS 0x10
#define SCSIOP_FLUSH_BUFFER 0x10
#define SCSIOP_SPACE 0x11
#define SCSIOP_INQUIRY 0x12
#define SCSIOP_VERIFY6 0x13
#define SCSIOP_RECOVER_BUF_DATA 0x14
#define SCSIOP_MODE_SELECT 0x15
#define SCSIOP_RESERVE_UNIT 0x16
#define SCSIOP_RELEASE_UNIT 0x17

#define SCSIOP_COPY 0x18
#define SCSIOP_ERASE 0x19
#define SCSIOP_MODE_SENSE 0x1A
#define SCSIOP_START_STOP_UNIT 0x1B
#define SCSIOP_STOP_PRINT 0x1B
#define SCSIOP_LOAD_UNLOAD 0x1B
#define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C
#define SCSIOP_SEND_DIAGNOSTIC 0x1D
#define SCSIOP_MEDIUM_REMOVAL 0x1E
#define SCSIOP_READ_FORMATTED_CAPACITY 0x23
#define SCSIOP_READ_CAPACITY 0x25
#define SCSIOP_READ 0x28
#define SCSIOP_WRITE 0x2A
#define SCSIOP_SEEK 0x2B
#define SCSIOP_LOCATE 0x2B
#define SCSIOP_POSITION_TO_ELEMENT 0x2B
#define SCSIOP_WRITE_VERIFY 0x2E
#define SCSIOP_VERIFY 0x2F
#define SCSIOP_SEARCH_DATA_HIGH 0x30
#define SCSIOP_SEARCH_DATA_EQUAL 0x31
#define SCSIOP_SEARCH_DATA_LOW 0x32
#define SCSIOP_SET_LIMITS 0x33
#define SCSIOP_READ_POSITION 0x34
#define SCSIOP_SYNCHRONIZE_CACHE 0x35
#define SCSIOP_COMPARE 0x39
#define SCSIOP_COPY_COMPARE 0x3A
#define SCSIOP_WRITE_DATA_BUFF 0x3B
#define SCSIOP_READ_DATA_BUFF 0x3C
#define SCSIOP_CHANGE_DEFINITION 0x40
#define SCSIOP_READ_SUB_CHANNEL 0x42
#define SCSIOP_READ_TOC 0x43
#define SCSIOP_READ_HEADER 0x44
#define SCSIOP_PLAY_AUDIO 0x45
#define SCSIOP_PLAY_AUDIO_MSF 0x47
#define SCSIOP_PLAY_TRACK_INDEX 0x48
#define SCSIOP_PLAY_TRACK_RELATIVE 0x49
#define SCSIOP_PAUSE_RESUME 0x4B
#define SCSIOP_LOG_SELECT 0x4C
#define SCSIOP_LOG_SENSE 0x4D
#define SCSIOP_STOP_PLAY_SCAN 0x4E
#define SCSIOP_READ_DISK_INFORMATION 0x51
#define SCSIOP_READ_TRACK_INFORMATION 0x52
#define SCSIOP_MODE_SELECT10 0x55
#define SCSIOP_MODE_SENSE10 0x5A
#define SCSIOP_REPORT_LUNS 0xA0
#define SCSIOP_SEND_KEY 0xA3
#define SCSIOP_REPORT_KEY 0xA4
#define SCSIOP_MOVE_MEDIUM 0xA5
#define SCSIOP_LOAD_UNLOAD_SLOT 0xA6
#define SCSIOP_EXCHANGE_MEDIUM 0xA6
#define SCSIOP_SET_READ_AHEAD 0xA7
#define SCSIOP_READ_DVD_STRUCTURE 0xAD
#define SCSIOP_REQUEST_VOL_ELEMENT 0xB5
#define SCSIOP_SEND_VOLUME_TAG 0xB6
#define SCSIOP_READ_ELEMENT_STATUS 0xB8
#define SCSIOP_READ_CD_MSF 0xB9
#define SCSIOP_SCAN_CD 0xBA
#define SCSIOP_PLAY_CD 0xBC
#define SCSIOP_MECHANISM_STATUS 0xBD
#define SCSIOP_READ_CD 0xBE
#define SCSIOP_INIT_ELEMENT_RANGE 0xE7
西山小月 2009-01-18
  • 打赏
  • 举报
回复
楼上能详细说一下嘛?
我只是禁用u盘,不可读写,要怎么做?scsi命令的读写为0x28和0x2a,应该怎样控制?
pilixuanke 2009-01-17
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 slek 的回复:]
那里面只是实现了控制只读,完全控制不知有什么好方法
[/Quote]

什么叫完全控制?只读、只写、禁用、可读写?

我知道在文件层可以做,在USB Host中做不知道是否可行。
pilixuanke 2009-01-17
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 slek 的回复:]
引用 15 楼 98132239 的回复:
那如果人家把盘插到别的机器上不一样可以读写U盘吗?这样的做法应该是保护计算机本身,而不是保护U盘内的数据吧?如果要保护U盘内的数据,应该是要在U盘端做加密,而不是在HOST端做。



你说得对,这个也是我们要做的:全盘加密。
[/Quote]

要做全盘加密,是不是在文件系统层做比较好啊!
zswolf2000 2009-01-17
  • 打赏
  • 举报
回复
全盘控制,改造一下书上的例子就可以了。其实U盘都是通过标准的scsi command实现的。
你针对这些拦截就可以了,书上的例子是针对disk类拦截的。你也可以拦截usb类,原理一样的。
西山小月 2009-01-13
  • 打赏
  • 举报
回复
那里面只是实现了控制只读,完全控制不知有什么好方法
yuxin_269 2009-01-13
  • 打赏
  • 举报
回复
Windows驱动开发技术详解 这么书里面有例子 禁用U盘的,他是通过拦截SCSI命令做到的
西山小月 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 98132239 的回复:]
那如果人家把盘插到别的机器上不一样可以读写U盘吗?这样的做法应该是保护计算机本身,而不是保护U盘内的数据吧?如果要保护U盘内的数据,应该是要在U盘端做加密,而不是在HOST端做。
[/Quote]


你说得对,这个也是我们要做的:全盘加密。
findfriend 2009-01-10
  • 打赏
  • 举报
回复
顶,关注中,大虾呢?怎么没大虾出现?
kingsoft55555 2009-01-10
  • 打赏
  • 举报
回复
帮顶
success000 2009-01-10
  • 打赏
  • 举报
回复
帮顶
98132239 2009-01-08
  • 打赏
  • 举报
回复
那如果人家把盘插到别的机器上不一样可以读写U盘吗?这样的做法应该是保护计算机本身,而不是保护U盘内的数据吧?如果要保护U盘内的数据,应该是要在U盘端做加密,而不是在HOST端做。
西山小月 2008-12-31
  • 打赏
  • 举报
回复
哦,能把内容说一下嘛?具体怎么实现的,有没有代码哈,谢谢啊
pilixuanke 2008-12-31
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 ilovedrv 的回复:]
文件过滤驱动程序,好像新出的一本书,张帆

里面有这样一个例子
[/Quote]
正好手头有这么一本书,看了一下,例子是有,但不知道改造之后,能否实现楼主的需求。
pilixuanke 2008-12-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 slek 的回复:]
变为不能读写的U盘,用户认证后,才可以读写。
信息写在U盘里
[/Quote]

文件系统过滤驱动应该能达到你的要求,当你自己的程序去读取信息时,放行,当其它程序尝试访问时拒绝,用户验证后再决定采取什么样的控制方式。
outlook209 2008-12-30
  • 打赏
  • 举报
回复
帮顶
success000 2008-12-30
  • 打赏
  • 举报
回复
帮顶
加载更多回复(9)

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧