USB透明加解密驱动
- 格式:pdf
- 大小:326.99 KB
- 文档页数:4
u盘加密解密最简单方法U盘加密解密是一种保护个人隐私和数据安全的重要手段。
在日常生活和工作中,我们经常需要在多个设备之间传输数据,而U盘作为一种便携式存储设备,被广泛应用于各个领域。
但是,由于其易丢失、易遭受病毒感染等特点,U盘中的数据往往会面临安全风险。
为了保护U盘中的数据安全,加密解密成为了必不可少的步骤之一。
在这篇文章中,我将介绍几种简单易行的U盘加密解密方法,帮助大家有效地保护个人隐私和数据安全。
一、BitLocker加密(适用于Windows系统)BitLocker是微软公司推出的一种全盘加密解决方案,适用于Windows Vista及以上版本。
它能够通过加密整个U盘上的数据来保护用户的隐私。
使用BitLocker加密U盘的步骤如下:1.连接U盘到计算机并打开资源管理器。
2.右键点击U盘并选择“加密”选项。
3.设置加密密码并按照向导完成加密过程。
二、VeraCrypt加密(适用于Mac、Linux和Windows系统)VeraCrypt是一个免费且开源的加密软件,支持多种操作系统。
它可以在U盘上创建一个加密的虚拟磁盘,并将文件和文件夹加密存储在其中。
使用VeraCrypt加密U盘的步骤如下:1.下载并安装VeraCrypt软件。
2.打开VeraCrypt,并选择“创建容器”选项。
3.选择一个位置和文件名,设置容器的大小。
4.设置容器的密码和加密算法。
5.完成虚拟磁盘的创建后,将其挂载到U盘上。
三、加密软件(适用于Windows系统)除了BitLocker和VeraCrypt,还有许多其他的加密软件可供选择,比如TrueCrypt、AxCrypt等。
这些软件通常都提供了用户友好的界面和易于使用的功能,可以方便地加密和解密U盘中的数据。
四、硬件加密U盘硬件加密U盘是一种具有内置加密芯片的U盘,它能够在不暴露用户密码的情况下自动加密和解密数据。
使用硬件加密U盘的步骤如下:1.连接硬件加密U盘到计算机。
什么是Windows驱动层透明加密技术?驱动层透明加密技术是通过Windows提供的可安装文件系统(Installable File System)开发接口写设计一个文件过滤驱动,通过此驱动实现透明加解密功能。
由于驱动开发要与windows更核心层打交道,此方面的开发人才比较少,相对开发难度也高。
驱动层的透明加密技术由于与操作系统的文件系统结合紧密,加解密效率更高,控制更加密灵活,运行更加稳定。
驱动层加密技术是基于windows的文件系统(过滤)驱动(IFS)技术,工作在windows的内核层。
我们在安装计算机硬件时,经常要安装其驱动,如打印机、U盘的驱动。
文件系统驱动就是把文件作为一种设备来处理的一种虚拟驱动。
当应用程序对某种后缀文件进行操作时,文件驱动会监控到程序的操作,并改变其操作方式,从而达到透明加密的效果。
驱动加密技术与应用程序无关,他工作于windows API函数的下层。
当API函数对指定类型文件进行读操作时,系统自动将文件解密;当进入写操作时,自动将明文进行加密。
由于工作在受windows保护的内核层,运行速度更快,加解密操作更稳定。
但是,驱动加密要达到文件保密的目的,还必须与用户层的应用程序打交道。
通知系统哪些程序是合法的程序,哪些程序是非法的程序金甲加密之Windows驱动层透明加密技术解析:金甲企业数据保密系统是针对广大企业数据文件加密需求推出的一款网络版加密软件,可对Windows平台下任意格式的文件加密,特别适合对企业图纸,以及各类方案、合同等电子文件加密,并支持移动客户端。
保护数据的安全,同时兼顾数据使用时的效率。
企业敏感数据,对内部人员是透明加密,如二战后期,美军招募印第安人担任各部队的通讯兵(时称“风语者”,“WindTalkers”)其所起的作用,对内之间的沟通是畅通的,对外是保密的完整的内网行为审计,有效监督、管理保密文件的使用可有效防范保密文件二次扩散,可对文件的打开机器、打开时间、次数进行限制、控制文件的编辑、复制、保存、打印、截屏等扩散性操作。
u盘加密解密最简单方法:
方法一:使用U盘加密工具
1.下载并安装U盘加密工具,如bitlocker或加密大师。
2.打开加密工具并选择需要加密的U盘。
3.根据工具提示输入密码并加密U盘。
4.使用加密的U盘时需要输入密码才能访问。
方法二:使用电脑自带加密功能
1.将U盘插入电脑并打开“我的电脑”或“计算机”。
2.右键点击需要加密的U盘并选择“启用BitLocker”。
3.在BitLocker驱动器加密窗口中,勾选“使用密码解锁驱动器”选项。
4.输入密码并点击“下一步”。
5.在恢复密钥保存窗口中,选择保存路径并点击“保存”。
6.点击“下一步”并在弹出的窗口中勾选“将更改应用于此驱动器”选项。
7.点击“启动加密”并等待加密完成。
方法三:使用命令提示符(CMD)加密U盘
1.将U盘插入电脑并在桌面点击“开始”按钮打开运行窗口。
2.在运行窗口中输入CMD并回车进入命令提示符界面。
3.在CMD界面输入命令“diskpart”并回车。
4.输入命令“list disk”并回车查看电脑中所有磁盘。
5.根据磁盘容量等标识找到需要加密的U盘所对应的磁盘,输入命令“select disk X”(X为U盘
所对应的磁盘编号)。
6.输入命令“attributes disk clear readonly”并回车,此时U盘已成功加密。
USB解码方案引言USB(Universal Serial Bus,通用串行总线)是连接计算机与外部设备的一种标准接口技术。
它被广泛应用于计算机周边设备、移动设备和消费电子产品中。
一种常见的应用场景是使用USB接口连接音频设备,如DAC(数字模拟转换器)、音频接口等。
在音频领域,USB解码方案用于将数字音频信号转换为模拟音频信号,并用于提供更高质量的音频输出。
本文将介绍USB解码方案的基本原理、硬件实现和软件驱动等方面的内容。
1. USB解码方案的工作原理USB解码方案的工作原理可以简单划分为两个阶段:USB接口通信和数字音频转换。
1.1 USB接口通信USB接口通信是指通过USB总线传输数据,包括音频数据、控制指令等。
一般采用的是USB2.0或USB3.0标准,其中USB2.0的最高传输速率为480Mbps,而USB3.0的最高传输速率可达到5Gbps。
在USB接口通信中,需要使用USB控制器实现对USB总线的控制和数据传输。
USB控制器包括主控制器(Host Controller)和从设备控制器(DeviceController)。
主控制器负责管理USB总线上的设备,从设备控制器负责控制单个设备与主控制器之间的通信。
1.2 数字音频转换数字音频转换是指将USB接收到的音频数据转换为模拟音频信号。
这一过程需要使用DAC芯片(Digital-to-Analog Converter)来完成。
DAC芯片将数字音频信号转换为模拟音频信号,然后通过放大电路输出到音频输出接口。
2. USB解码方案的硬件实现USB解码方案的硬件实现主要包括USB接口芯片和DAC芯片。
2.1 USB接口芯片USB接口芯片是用于实现USB接口通信的关键部件。
常用的USB接口芯片有CY7C68300、USB2514等。
这些芯片具有良好的兼容性和稳定性,能够满足高速数据传输的要求。
2.2 DAC芯片DAC芯片是用于数字音频转换的关键部件。
防止USB资料外泄:在Win8中使用BitLocker加密USB驱动器
防止USB设备丢失后资料外泄,在Win8中使用BitLocker加密USB驱动器。
BitLocker是从Windows vista开始被加入Windows中的一项加密功能,通过BitLocker你能轻松加密你的驱动器。
在Win8中你可以使用BitLocker来加密USB驱动器,防止USB设备丢失后资料外泄。
在Win8中使用BitLocker加密USB驱动器:选择你要加密的USB驱动器右键单击,选择启用BitLocker,
启动时会提示请勿移除驱动器,
选择用去驱动器加密后的解密方式,包括密码和智能卡两种方式,这里选择使用密码解锁驱动器的方法,
填写好密码后,可选择备份恢复密钥,以便在忘记密码时解锁驱动器,
你可以选择是加密现有USB驱动器文件还是加密整个USB驱动器,
加密过程中如果要移除USB驱动器,需要先暂停再进行移除,不然会造成USB
驱动器上文件被损坏,
加密完成后当你再次连接USB设备时需要输入密码解密来查看驱动器中的文件,
输入密码成功解锁后便可自由该USB驱动器中的文件。
/tutorial/51594.html。
C/C++ 实现文件透明加解密请见代码详细注释// 修复涉及后视列表的Win2K兼容性// Fixes Win2K compatibility regarding lookaside lists.//#ifndef _WIN2K_COMPAT_SLIST_USAGE // Add content(增加内容)#define _WIN2K_COMPAT_SLIST_USAGE#endif#include "ntifs.h"#include "ntdddisk.h"//// 在代码中开启这些警告// Enable these warnings in the code.//#pragma warning(error:4100) // Unreferenced formal parameter 未被引用的正式参数#pragma warning(error:4101) // Unreferenced local variable 未被引用的局部参数// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // ///// Macro and Structure Definitions//// // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // ///// VERSION NOTE://// 下面的宏在Windows XP及以后OS中的NTIFS.H中被定义,如果我们在Windows 2000环境下编译加上这些定义// The following useful macros are defined in NTIFS.H in Windows XP and later.// We will define them locally if we are building for the Windows 2000// environment.//#if WINVER == 0x0500//// 用于测试、设置、清除标志// These macros are used to test, set and clear flags respectively//// 打开标志#ifndef FlagOn#define FlagOn(_F, _SF) ((_F) & (_SF))#endif// 测试标志是否打开#ifndef BooleanFlagOn#define BooleanFlagOn(F, SF) ((BOOLEAN) (((F) & (SF)) != 0))#endif// 设置标志#ifndef SetFlag#define SetFlag(_F, _SF) ((_F) |= (_SF))#endif// 清除标志#ifndef ClearFlag#define ClearFlag(_F, _SF) ((_F) &= ~(_SF))#endif#define RtlInitEmptyUnicodeString(_ucStr, _buf, _bufSize) /((_ucStr)->Buffer = (_buf), /(_ucStr)->Length = 0, /(_ucStr)->MaximumLength = (USHORT)(_bufSize))#ifndef min#define min(a, b) (((a) < (b)) ? (a) : (b))#endif#ifndef max#define max(a, b) (((a) > (b)) ? (a) : (b))#endif//// We want ASSERT defined as an expression, which was fixed after Windows 2000 //#ifdef ASSERT#undef ASSERT#if DBG#define ASSERT(exp) /((!(exp)) ? /(RtlAssert(#exp, __FILE__, __LINE__, NULL),FALSE) : /TRUE)#else#define ASSERT(exp) ((void) 0)#endif#endif#define ExFreePoolWithT ag(a, b) ExFreePool((a))#endif /* WINVER == 0x0500 */#ifndef Add2Ptr#define Add2Ptr(P,I) ((PVOID)((PUCHAR)(P) + (I)))#endif//// 在堆栈上的局部名字的缓冲尺寸// Buffer size for local names on the stack//#define MAX_DEVNAME_LENGTH 64// Add content(增加内容)******// 限制的最大路径长度+ 系统加密信息目录#define MAX_PATH 512// 加密位尺寸,设置加密位共128*8个位,即128字节#define ENCRYPT_BIT_SIZE (128 * 8)#define SF_ENCRYPT_POSTFIX L".$encrypt$"#define SF_ENCRYPT_POSTFIX_LENGTH 10// 规则文件的文件名#define RULE_FILE_NAME L"//SystemRoot//xefs.dat" #if DBG#define DEBUG_VOLUME L'H' // L'G'#endif/*typedef struct _FILE_OBJECT {CSHORT Type;CSHORT Size;PDEVICE_OBJECT DeviceObject;PVPB Vpb;PVOID FsContext;PVOID FsContext2;PSECTION_OBJECT_POINTERS SectionObjectPointer;PVOID PrivateCacheMap;NTSTATUS FinalStatus;struct _FILE_OBJECT *RelatedFileObject;BOOLEAN LockOperation;BOOLEAN DeletePending;BOOLEAN ReadAccess;BOOLEAN WriteAccess;BOOLEAN DeleteAccess;BOOLEAN SharedRead;BOOLEAN SharedWrite;BOOLEAN SharedDelete;ULONG Flags;UNICODE_STRING FileName;LARGE_INTEGER CurrentByteOffset;ULONG Waiters;ULONG Busy;PVOID LastLock;KEVENT Lock;KEVENT Event;PIO_COMPLETION_CONTEXT CompletionContext;} FILE_OBJECT;typedef struct _FILE_OBJECT *PFILE_OBJECT; // ntndis*/typedef struct _FILE_CONTEXT_HDR{PVOID FsContext;} FILE_CONTEXT_HDR, *PFILE_CONTEXT_HDR;typedef struct _FILE_CONTEXT{FILE_CONTEXT_HDR;ULONG RefCount;BOOLEAN DecryptOnRead; // 是否读时解密BOOLEAN EncryptOnWrite; // 是否写时加密BOOLEAN EncryptFlagExist; // 如果加密标志存在,那么文件被加密,if encrypt flag file exists, then the file is encryptedBOOLEAN NeedEncrypt; // 需要加密BOOLEAN DeleteOnClose;KEVENT Event;WCHAR Name[MAX_PATH]; // 转换成字节数,// 表明从最终形成'/??/i:/System Encrypt Information/System Volume Information'的文件中读入的加密位的字节长度UCHAR EncryptExtData[ENCRYPT_BIT_SIZE / sizeof(UCHAR)];} FILE_CONTEXT, *PFILE_CONTEXT;// Add content(增加内容)******//// Device extension definition for our driver. Note that the same extension// is used for the following types of device objects:// - File system device object we attach to// - Mounted volume device objects we attach to//// 我们驱动的设备扩展。
USB密码锁驱动安装指南
USB驱动安装指南
1.将USB密码锁插入电脑USB端口。
若如下图所示,找到新硬件
2.勾选“是,仅这一次(Y)”,如上图所示,然后单击下一步继续。
出现下一个对话框,如下:
3.将安装光盘放入光驱,勾选“自动安装软件(推荐)(I)”,如上图
所示,然后单击下一步。
4.系统会自动搜索并完成安装,安装完成以后重启电脑。
如果插入USB密码锁后并没有提示找到新硬件,而且软件提示找不到加密锁,则需要手动安装驱动,步骤如下:
1.插入安装光盘,打开“USB_Driver”文件夹。
2.双击“setup.exe”文件完成安装。
3.安装完成以后重启电脑。
驱动层透明加密技术解析,风奥科技论驱动层透明加密技术的重要性及使用!透明加密技术,是现在这个时代应用比较广的且比较受欢迎的一种新型的加密模式。
透明加密技术在驱动层和应用层加密这块都有其使用。
今天我们就主要将一下,驱动层透明加密技术。
什么是驱动层透明加密技术?驱动层透明加密主要从两个方面来解释,驱动层加密和透明加密!驱动层加密:驱动层加密通常所指的驱动层加密又称基于文件过滤驱动技术的加密;一般用于开发透明强制加解密引擎。
目前驱动层加密根据其加密文件或者磁盘可以有两个解释:一个是缓存管理器页入,此种是文件系统过滤驱动的范畴;另一个理解是磁盘上的扇区操作,这是磁盘过滤驱动;这种技术相对于应用层加密技术有不产生临时文件,效率更高的特点。
驱动层加密基于windows的文件系统(过滤)驱动(IFS)技术,工作在windows的内核层。
我们在安装计算机硬件时,经常要安装其驱动,如打印机、U盘的驱动。
文件系统驱动就是把文件作为一种设备来处理的一种虚拟驱动。
当应用程序对某种后缀文件进行操作时,文件驱动会监控到程序的操作,并改变其操作方式,从而达到透明加密的效果。
驱动层加密与应用程序无关,属于底层加密技术,他工作于windows API函数的下层,开发难度较大。
由于工作在受windows保护的内核层,运行速度更快,加解密操作更稳定。
透明加密:透明加密技术是近年来针对企业文件保密需求应运而生的一种文件加密技术。
它是指对使用者来说是无感知的。
当使用者在打开或编辑指定文件时,系统将自动对未加密的文件进行加密,对已加密的文件自动解密。
文件在硬盘上是密文,在内存中是明文。
一旦离开使用环境,由于应用程序无法得到自动解密的服务而无法打开,从而起来保护文件内容的效果。
透明加密技术是与 Windows 紧密结合的一种技术,它工作于Windows 的底层。
通过监控应用程序对文件的操作,在打开文件时自动对密文进行解密,在写文件时自动将内存中的明文加密写入存储介质。
USB 透明加解密驱动
By boywhp@
一、使用说明
该驱动基于hook 技术实现了USB 指定目录透明加解密功能,在windows2000、XP、以及windows2003下测试通过,由于使用了fsd hook 技术,可能会与一些安全软件冲突。
测试步骤如下: 1、启动bin\usbmon.sys
2、插入U 盘【FAT32格式】,建立一个测试文件夹@test [@为加解密
标识符],从硬盘拷贝一个文档到该目录,拔出U 盘。
3、在另一台未安装驱动的机器上插入U 盘,文件已加密。
4、插回原机器,文件被解密,卸载驱动。
源代码位于codes 目录,v920是完整的版本,但是由于一些问题我没有很好的解决,所以你可以帮忙完善下,你可以使用2000DDK 直接编译,也可以使用VC6直接编译。
你可以自由修改代码,我有空也可以一起帮忙改进,如果你打算在商业代码中使用它,请开放代码,因为我痛恨它。
二、基本思路
插入U 盘我们用DevView 看一下设备情况
Root Driver :System32\DRIVERS\usbhub20.sys
\Driver\usbhub20 - \Device\USBPDO-6
FILE_DEVICE_UNKNOWN usbhub20
USB 通用驱动 System32\DRIVERS\USBSTOR.SYS \Driver\USBSTOR \Device\0000036 ->Pdo =\Device\USBPDO-6
b o
y w
h p
@
12
6.
c o
m
\Device\0000037 ->Pdo =\Device\USBPDO-6
因此初步的设想是Hook USBSTOR 的数据读写处理函数,但是USBSTOR 并不常驻内存,因此我们要先顺便把它下层USBHUB 的PNP 事件也HOOK 掉,代码如下:
Usbmon.c DriverEntry Line34:
Globals.PnpHookHandle = SetupInlineHook(usbRoot->MajorFunction[IRP_MJ_PNP], HookPnpDevice, NULL);
Usbmon.c HookPnpDevice Line83: case IRP_MN_START_DEVICE:
if (KeGetCurrentIrql() == PASSIVE_LEVEL) {
//HOOK USBSTOR IRP_MJ_SCSI
RtlInitUnicodeString(&usbStorName, USB_STOR_DRIVER_NAME);
if (NT_SUCCESS(ObReferenceObjectByName(&usbStorName, OBJ_CASE_INSENSITIVE, NULL, 0, *IoDriverObjectType, 0, 0, &usbStor))) {
ObDereferenceObject(usbStor);
KdPrint(("Usb device %08x %08x %08x started...\n", DeviceObject, usbStor, irpStack->FileObject));
if (bStorDriver && bStorDriver != usbStor) {
ASSERT(Globals.ScsiHookHandle);
KdPrint(("RE_HOOK USBSTOR SCSI!!!!")); ClearInlineHook(Globals.ScsiHookHandle); Globals.ScsiHookHandle = NULL;
Globals.ScsiReadCompletionHandle = NULL; bStorDriver = usbStor; }
if (!Globals.ScsiHookHandle) {
KdPrint(("Hook UsbStor ...\n"));
Globals.ScsiHookHandle = SetupInlineHook(usbStor->MajorFunction[IRP_MJ_SCSI], HookUsbScsi, NULL); } } }
这样我们就可以得到所有的USB 读写消息了,由于我们处理的相当底层了,因此这一层实际上已经是SCSI 接口标准了,当然如果
b o
y w
h p
@
12
6.
c o
m
你要做全盘透明加密的话,还是可以考虑在这里处理加解密,但是会有一些很麻烦的小问题,比方说文件缓存的问题,我在驱动开发网上发了相关的问题,但是至今没有人回答。
也许是这个比较难搞吧,如果你了解scsi 以及windows 内核,你可以看看v920,里面有更多好玩的东西。
这里我们的目标是加解密指定的文件夹,但是在usbstor 这一层已经没有任何的文件对象了,这点你可以用windbg 验证。
所以我们需要一个更上层的hook,也就是hook windows 文件系统,因为Mj
告诉我Irp 到那一层还是有文件对象的。
fsd——hook 网上流传的
多是hook ntfs,但是一般的U 盘都是Fat 格式的,hoho。
不过原
理是一样的,只是hook fastfat 而已。
Usbmon.c DriverEntry Line213:
Globals.fsdReadHookHandle = SetupInlineHook(Globals.FastFatDriver->MajorFunction[IRP_MJ_READ], HookFsdReadWrite, NULL);
Globals.fsdWriteHookHandle = SetupInlineHook(Globals.FastFatDriver->MajorFunction[IRP_MJ_WRITE], HookFsdReadWrite, NULL);
这样所有的文件数据都会在HookFsdReadWrite 中流过,而且你
也有一个文件对象。
相关代码太简单了,注意的一点就是加密的时候记得最后要恢复原始数据到Mdl。
至于SetupInlineHook,也很简单,稍微了解一点汇编,在图上画几下应该可以明白。
b o
y w
h p
@
12
6.
c o
m
三、后记
220行代码的USB透明加密复杂吗?为什么google不到任何资料?很是郁闷。
也许一些关键技术是要保密吧,但是我痛恨没有资料。
痛恨那些个从互联网上找来东西,还自己捂着。
其实只要E文稍微好点,可以找到很多东西的,学好英语吧!一点点忠告,因为你在中文网上别想找到什么。
我也许唯一能做的就是大声的反抗几句,呐喊几下,但是我还是要反抗。
因为我就是传说中的VB SUPER MAN!拯救这个世界是我的责任...
m
o
c
.
6
2
1
@
p
h
w
y
o
b。