今天本来想把Format部分抠出来的,但是XX实在太多了...只好装虚拟机,重新配置调试环境.把昨天的笔记放一下...然后说一下应用层的,Mount部分.其实关于Mount,可以参考阅读下filedisk的源代码...

分析Truecrypt的源代码的初衷,是为了仿写一个类似QQ文件保险柜的功能.
而似乎QQ的文件保险柜,也是从Truecrypt中抠出来的代码.

具体来看,QQ的文件保险柜实现的是Truecrypt的file_container的功能,
并没有实现给磁盘加密,或者给系统盘加密.

而在file_container这一部分,又是选择了Standard_Volume功能,
并没有实现Hidden_Volume功能.
QQ保险柜在实现隐藏的时候,是Unmount这个卷了,所以在磁盘分区中看不到.
当打开这个卷的时候,先验证密码,然后又重新mount这个file了...

目前打算从TrueCrypt中将file_container抠出来...
先实现Format部分..StandardVolume...

+--->Standa vol --> vol_path-->Ea_Ha -> vol_size -> Password -> Format
                         +
file_container --+
                         +                          +--> Normal-->vol_path-->OuterVolume-->Ea_Ha->vol_size->Pwd -> Format
                         +--->Hidden vol --+
                                                     +--> Direct-->vol_path-->...

QQ文件保险柜流程如下:(其中的加密算法,cluster,选择默认了...)
1.新建保险柜  file_container->Standard vol
2.确认密码   Password(绑定QQ的不会..nnd)
3.保存位置   VolPath
4.容量大小   vol_size
6.初始化   Format
7.打开保险柜  Mount
8.关闭保险柜  UnMount

本来想放一个demo的...但是今天是不可能了...只想弄file_container部分...其他的关于给Windows系统盘加密和分区加密,还是放到以后再说.

放一个console程序的main函数流程.

void main(int argc,char** argv).

{

// step1,Init Volume Password
 strcpy(volumePassword.Text,"123456");
 volumePassword.Length = (unsigned int)(strlen(volumePassword.Text));

// step2,Init VolumePath,or szDiskFile
 strcpy(szDiskFile,"C:\\volumeTest.txt");
 szDiskFile[strlen("C:\\volumeTest.txt")] = 0 ;

// step3,Init VolumeSize
 nVolumeSize = 10*1024*1024; // 10 MB

// step4,Format Volume
  Format();

// step5,Mount Volume

Mount();

// step6,DisMount Volume

UnMount();// 关闭文件保险柜,即调用DisMount()函数.

}

关于Truecrpyt的Mount/DisMount部分的两个核心函数,都很简单,都是向驱动发送IOCTL,来完成的.

打开TrueCrypt.exe这个程序."Select file"选择前面使用Format程序,创建的一个file_cotainer的文件.

然后选择一个驱动盘符,然后点击"Mount".这个时候会调用函数Mount(),而该函数内部调用的核心函数为MountVolume().

int MountVolume (HWND hwndDlg,//  传入的窗口句柄

int driveNo, // 加载的磁盘分区序号
     char *volumePath,// 用户选择的加密卷文件
     Password *password,// 用户输入的密码
     BOOL cachePassword,// 是否使用缓存密码
     BOOL sharedAccess,
     MountOptions *mountOptions,// mount选项
     BOOL quiet,
     BOOL bReportWrongPassword // 是否报告错误的密码

)

其函数的Mount的核心是,这部分可以看看FileDisk的src

bResult = DeviceIoControl (hDriver, TC_IOCTL_MOUNT_VOLUME, &mount,
  sizeof (mount), &mount, sizeof (mount), &dwResult, NULL);

当你点击"UnMount"时,会调用UnMountVolume()函数,其核心函数是.DriverUnmountVolume();

其实也是向驱动返送IOCTL.

bResult = DeviceIoControl (hDriver, TC_IOCTL_DISMOUNT_VOLUME, &unmount,
  sizeof (unmount), &unmount, sizeof (unmount), &dwResult, NULL);

QQ文件保险柜与Truecrypt之对比.相关推荐

  1. 【转帖】360密盘的惊人内幕 — 当然包括QQ文件保险箱

    这几天,看到大家都在热议一个话题,就是360密盘被破,我在想,所谓的QQ文件保险箱,又会在什么时候被破呢? 好多人可能认为360密盘是360自己原创的,然后QQ文件保险箱抄了360密盘,因此QQ文件保 ...

  2. win7打不开qq文件怎么办

    1.这种情况是因为QQ为了用户安全,防止传过来的文件是病毒,在电脑上自动运行而做的修改,针对的是.EXE等WINDOWS系统可执行的文件,会自动在文件名称后面加上.重命名三个字.如果确认不是病毒,在该 ...

  3. 因更改注册表而导致无法打开QQ文件所在文件夹

    因更改注册表而导致无法打开QQ文件所在文件夹 解决办法 -用火绒的系统修复扫描即可:

  4. 局域网限制网速软件_大文件传输工具,比微信、QQ文件传输还好用的传输软件,关键还不限速!...

    白剽一个专注分享各种软件资源的平台 软件名称:文件传输助手 如果你觉得本篇文章对你有帮助,麻烦你给我本篇文章的文末点一个[在看]就是对我最大的帮助,白嫖党和伸手党真的不好,正所谓赠人玫瑰手留余香,我帮 ...

  5. qq服务器上的文件删除后如何恢复,qq文件过期怎么恢复(过期的QQ文件如何申请恢复)...

    日常工作上,常常会应用QQ来推送文档,很有可能有一些情况下忘掉或太忙而沒有去接受文档,进而造成 QQ文档到期,那麼针对到期的QQ文档应当如何恢复呢?一切正常状况下文档到期了就没有办法修复了,由于是临时 ...

  6. C盘瘦身:QQ文件的清理及Group2文件夹

    目录 问题 解决方法 Windows 10 20H2 TIM 问题 最近C盘被撑爆了 使用SpaceSniffer一扫发现QQ的文件中有个Group2文件夹占了我17G 但使用QQ自带的个人文件夹清理 ...

  7. 解决电脑C盘空间不足,发现微信和qq文件占用了大量内存

    项目场景: 电脑C盘空间不足,需要隔一段时间清理垃圾,分析占用空间的文件,将C盘文件迁移到E盘. 问题描述 C盘提示空间不足 原因分析: 通过扫描磁盘发现微信和qq文件占用了几十G的内存,由于微信和q ...

  8. VB.NET + QQ文件助手实现远程控制

    这前看到一篇文件介绍用Python+itchat微信接口实现"远程控制"电脑,最近无聊试了下利用"QQ文件传输助手"可以接收手机端发送的消息原理来写了一个VB. ...

  9. QQ文件传输攻击工具

    QQ文件传输攻击工具 生成大量垃圾文件,全选之后拖到QQ好友的头像上,QQ会将这些文件全部发送,被攻击者的系统资源会被大大浪费掉! 程序及动画下载:http://www.nohack.cn/bbs/v ...

  10. java qq 传送文件_如何利用Java实现QQ文件传输功能.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 如何利用Java实现QQ文件传输功能.pdf2页 本文 ...

最新文章

  1. mui后端开发php,PHP解决mui中ajax的跨域问题
  2. 内核-程序员的顶级梦寐
  3. 015 已接任务链表和任务库二叉树遍历
  4. java原子引用怎么理解_Java 原子性引用 AtomicReference
  5. adonis.js mysql_Adonis.js——数据库基本操作
  6. 【Clickhouse】CLICKHOUSE SQL文件等常用语句
  7. 数据科学即将迎来“无代码”时代
  8. (七)对Jmeter进行参数化的俩种方式
  9. python 解决transform.rescale操作,本应得到彩色图像,然而所得图像为灰色图像问题
  10. 欣赏深圳东部最迷人的东冲海岸线与最纯净的沙滩
  11. 欢迎清风艾艾在ITPUB博客安家!
  12. 自行车小组问卷调查报告
  13. 廊坊金盾说手脚冰冷先暖胃
  14. 2021 年年度最佳开源软件
  15. 如何利用MES系统实现防错和预警?(详细整理,值得收藏)
  16. 利用MATLAB模糊控制器实现对水位高度调节SIMULINK仿真(隶属度7分级)
  17. php用打印出实心菱形,php打印实心菱形
  18. 自如2020新产品发布:全面打造智能租住生活
  19. 职高计算机动漫设计专业就业困难,动漫设计专业就业怎么样?可以找哪些工作?...
  20. SOLID原则:单一职责原则(SRP)

热门文章

  1. mysql认证 成都考点_CKA概述、考试形式、考试地址、考纲占比等
  2. 学习weka(1):weka软件安装使用教程
  3. 排序算法---堆排序
  4. VS2010旗舰版安装步骤
  5. 网银汇款提示服务器无响应,为什么我的网上银行支付页面总是未响应
  6. FAT文件系统与文件恢复
  7. Linux 系统启动与服务管理
  8. oracle12c 查看库,12c 检查pdb数据库状态
  9. 面试智力题:赛马问题求前几名
  10. 将Table转换成HTML