TrueCrypt简介、在VS2008下的编译过程

2023-11-16

 

转载请标明是引用于 http://blog.csdn.net/chenyujing1234 

欢迎大家拍砖!

 

编译过程中用到的工具下载地址: http://download.csdn.net/detail/chenyujing1234/4448383(资源内容:PKCS11.7 + gzip.exe + asm.zip  + MsVSVC++1.52.7z)

一、TrueCrypt简介

TrueCrypt,是一款免费开源的加密软件,同时支持Windows Vista,7/XP, Mac OS X, Linux 等操作系统。TrueCrypt不需要生成任何文件即可在硬盘上建立虚拟磁盘

用户可以按照盘符进行访问,所有虚拟磁盘上的文件都被自动加密,需要通过密码来进行访问。

TrueCrypt 提供多种加密算法,包括:AES-256, Blowfish (448-bit key), CAST5, Serpent, Triple DES, and Twofish,其他特性还有支持FAT32和NTFS分区、隐藏卷标热键启动等。

主要特性:

(1)所有加密都是以分区为基础的。

(2) 真加密,所有加密数据都是经过AES等加密算法的运算后的结果,无法破解(穷举法除外)。

(3)能创建加密的“虚拟磁盘文件”(类似虚拟光驱,大小可以自定义)

(4)加密单个分区整个硬盘

(5)加密Windows系统所在的分区(启动Windows前需要密码)

(6)加密过程自动、实时、透明(使用加密文件或分区前输入密码,载入后就可以像使用一个普通分区一样使用加密分区。)

(7)提供两级方案,以应对被强迫说出密码的情况(如抢劫)。

  7、1   隐藏分区(覆盖式密码术,steganography)、隐藏操作系统

  7、2  无法探测到TrueCrypt 加密分区(加密数据会被认为是随机数据

(8)加密算法:AES-256、Serpent、Twofish。为取得更好加密效果,可以同时使用两种或三种加密算法。操作模式:XTS。

 

二、TrueCrypt的编译

从trucCrypt官网中获得源码:   http://www.truecrypt.org/  , 现在最新版本是

我们以这个版本为例来介绍在VS2008下的编译方法。

用VS2008打开后,得到如下:

1、首先编译Boot工程

1、1 提示报错:
1>------ 已启动生成: 项目: Boot, 配置: Release Win32 ------
1>正在执行生成文件项目操作
1>makefile(13) : fatal error U1050: Environment variable MSVC16_ROOT must point to the installation directory of MS Visual C++ 1.5
1>Stop.
1>makefile(13) : fatal error U1050: Environment variable MSVC16_ROOT must point to the installation directory of MS Visual C++ 1.5
1>Stop.


查看makefile文件,是因为没有安装Visual C++ 1.5的原因。

 

解决方法:下载安装Ms-VC++ 1.52c,如果我安装在C:\MSVC下,那么就在系统环境变量中新建如下的变量。

1、2  再次编译还是出错:
1>------ 已启动生成: 项目: Boot, 配置: Release Win32 ------
1>正在执行生成文件项目操作
1>Aes_hw_cpu.asm
1>'nasm.exe' 不是内部或外部命令,也不是可运行的程序
1>或批处理文件。
1>NMAKE : fatal error U1077: “nasm.exe”: 返回代码“0x1”
1>Stop.


解决方法:

从网上下载nasm.exe,并放到VS2008的安装路径下。

 

 1、3 再次编译又是出错:
1>------ 已启动生成: 项目: Boot, 配置: Release Win32 ------
1>正在执行生成文件项目操作
1>Aes_hw_cpu.asm
1>AesSmall_x86.asm
1>..\..\..\crypto\aestab.c
1>Linking...
1>'gzip.exe' 不是内部或外部命令,也不是可运行的程序
1>或批处理文件。
1>NMAKE : fatal error U1077: “gzip.exe”: 返回代码“0x1”
1>Stop.


解决方法:从网上下载gzip.exe,并放到VS2008 的安装路径下。

 

 1、4 再次编译,成功了。

 我们得到了

2、编译Crypto工程

由于在编译Boot工程时,我们解决了那么多路径,这里编译Crypto相当顺利,成功后得到了Crypto.lib。

3、编译Driver工程

3、1 下载WDK7600.16385.1 并安装 

(可参考我的文章:  Window XP驱动开发(二) 环境搭建(VS2008+WDK+DDKWzard)及示例

3、2  提示下面的错误:
1>------ 已启动生成: 项目: Driver, 配置: Debug Win32 ------
1>正在执行生成文件项目操作
1>------ Building truecrypt.sys: Debug x86 ------
1>BuildDriver.cmd: error: MS Build does not support building of projects stored in a path containing spaces. 
1>------ Building truecrypt.sys: Debug x64 ------
1>BuildDriver.cmd: error: MS Build does not support building of projects stored in a path containing spaces. 

解决方法,把工程在没有空格的路径中。

3、3 再次编译成功了。

我们得到了truecrypt.sys


4、编译Format工程

4、1 提示如下错误:
2>------ 已启动生成: 项目: Format, 配置: Debug Win32 ------
2>正在编译...
2>Dlgcode.c
2>d:\truecrypt7.1asource\common\securitytoken.h(34) : fatal error C1083: 无法打开包括文件:“pkcs11.h”: No such file or directory


解决方法:

下载PKCS 11头文件,并把它的路径添加到Format工程下的C++包含路径下。(默认在原有的C++包含路径下有 $(PKCS11_INC),

                                                                                                                                             所以我们也可以在系统环境变量中定义PKCS11_INC的值为PKCS 11的路径)

 

 

4、2  再次编译成功了

我们得到了  TrueCryptFormat.exe

5、编译Mount工程

出现的提示与4、1是一样的,解决方法也与4、1一样。

再次编译成功了。

6、编译Setup 工程

6、1 提示下面的错误
2>Setup.c
2>d:\truecrypt7.1asource\setup\setup.c(135) : error C2065: “PKEY_AppUserModel_ID”: 未声明的标识符


解决方法:

修改TrueCrypt 7.1a Source其中的Setup项目中的Setup.h文件,添加

/*---region add by gc---*/
#include "wtypes.h"
    const PROPERTYKEY PKEY_AppUserModel_ID = {
        {
            (unsigned long)2009,/*unsigned long  Data1;*/
            (unsigned short)12,/*unsigned short Data2;*/
            (unsigned short)23,/*unsigned short Data3;*/
            0x44,0x55,0x55,0x55,0x55,0x55,0x55,0x55
        },/*GUID fmtid;*/
        (DWORD)PID_FIRST_USABLE /*DWORD pid;*/
    };
/*---endregion---*/

 

添加在文件的开始处,即

#ifdef __cplusplus

extern "C" {

#endif

后面一行即可。

6、2 再次编译,成功了

^-^ 花了两个小时,至此我们把整个解决方案中的工程都编译通过了,庆祝一下吧。

在Debug目录下我们可以看到目标文件:

 

 

三、查看运行效果

运行目标目录下的Truecrypt.exe,在让防火墙允许的情况下运行,看到主界面了:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TrueCrypt简介、在VS2008下的编译过程 的相关文章

随机推荐

  • 钉钉F1 RK3399 咸鱼80元板子使用记录

    1 简单介绍 12V电源 建议2A 默认插电不开机 有大佬找到金属罩下的焊盘 短接可上电开机 在usb旁边的旁边有个端子接口 短接就可以开机 建议找个一样大的接口接个开关 到目前为止还未测试需要哪种接口 其它接口暂时不知 谁舍得拆一个钉钉F
  • 谷粒商城高级篇(36)——商品上架之上传数据到Elasticsearch

    商品上架之上传数据到Elasticsearch 功能需求分析 分析 怎么设计存储结构来保存数据 空间换时间 时间换空间 最终方案 存储结构 关于 nested 类型 商品上架功能实现 guimall common pom xml com x
  • resnet50网络结构_轻量(高效)目标检测网络结构设计

    目标检测网络可以分成如图的5个部分 input image 输入图像的大小对整个网络推断耗时有最直接的影响 小的图像 自然整个网络推断时间就会大大减少 一般来说 输入图像大小与网络深度正相关 即 大图像需要更深的网络提取更好的特征 back
  • JS下setTimeout与setInterval二者的差异

    JS下setTimeout与setInterval二者的差异 很多人都觉得这两个方法差不多 但是 实际上 他们差的很远呢 因为setTimeout 表达式 延时时间 在执行时 是在载入后延迟指定时间后 去执行一次表达式 记住 次数是一次 而
  • Linux I2C 驱动实验

    一 I2C 驱动 本章同样以 I MX6U ALPHA 开发板上的 AP3216C 这个三合一环境光传感器为例 通过 AP3216C 讲解一下如何编写 Linux 下的 I2C 设备驱动程序 Linux 的驱动分离与分层的思想 因此 Lin
  • 数据库DML数据操作语言

    文章目录 DML 数据操作语言 1 插入数据 INSERT 1 1 语法 1 2 插入默认值 注意事项 1 3 全列插入 2 修改数据 UPDATE 2 1 语法 注意 2 2 修改指定记录 添加WHERE子句 1 WHERE子句中常用的条
  • 前端面试之开发中遇到的问题【建议收藏】

    N1 精度问题 0 1 0 2 0 3 使用math js或者big js解决问题致命 重视 N2 频繁请求问题 点击按钮发送请求 但是不能疯狂发请求 等到结果返回后可再次发送请求 可以定义一个flag待请求结束打开flag 1 代码习惯
  • 年底了,清空自己,让心归零!

    眨眼一年 荏苒半生 时光总是别样匆匆 其实这一生 不就是一年一年这样过着 转眼到中年 而后到老年 时间总是悄无声息 让你我措手不及 转眼就年底了 我们都该学会沉淀自己 把过往一键清零 让未来一切重头 年底了 做个总结吧 这一年以来 让你觉得
  • 为何出现Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes ...

    当在IDEA中连接Redis时出现 Java HotSpot 64 Bit Server VM warning Sharing is only supported for boot loader classes because bootst
  • 大数据技术之Zookeeper

    第1章 Zookeeper入门 1 1 概述 Zookeeper是一个开源的分布式的 为分布式框架提供协调服务的Apache项目 Zookeeper从设计模式角度来理解 是一个基于观察者模式设计的分布式服务管理框架 它负责存储和管理大家都关
  • 前端html通栏做法实践

    在前端通栏中也有很多种 今天给大家分享我做的一种 大家可以借鉴一下 虽然可能就一般 但是一般的通栏也就够用了 大家可以根据自己的需求来自行设计即可 这只是一个参考模板而已 下面的代码复制即可用 html代码
  • web worker API开启浏览器js多进程

    面试使人进步 在大厂佬们的碾压下接触到了目前工作中没有遇到的新api和新思路以及解决方案 今天就来说说这个新的api web Worker 以下是MDN原话 指的是一种可由脚本创建的后台任务 任务执行中可以向其创建者收发信息 要创建一个 W
  • 关于微信小程序海报画布绘制

    小程序需要关于用户点击分享时弹起画布海报分享朋友或者朋友圈 1 我们需要先要创建一个画布 然后需要在js里去初始化画布并且制作出想要的画布海报样式 到目前为止咱们的画布海报图已经可以出现了 接下来咱们可以将已生成的海报图片 保存到手机或者分
  • vue 计算属性 vs 方法, 过滤器

    vue 计算属性 vs 方法 过滤器 最近换项目了 终于重新开始 使用 vue 了 继续学习中 computed 计算属性将被混入到 Vue 实例中 所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例 变量
  • vue项目部署到nginx服务器

    相信很多刚学习vue的朋友都可以进行到将vue项目进行npm run build这部 对于将build后的结果部署到nginx服务器上却一知半解 作者刚开始的时候也是很迷惑 看到网上很多朋友在问 今天作者就将自己的部署过程记录下来 供大家参
  • Keil MDK5生成bin文件时生成了*.bin文件夹

    在Keil魔术棒中通过以下方式生成bin文件时 看提示命令执行成功 却生成了一个 bin文件夹 文件夹内部是两个bin文件 当时感觉很奇怪 第一次遇到这种情况 使用的命令 fromelf exe bin o firmware L bin o
  • Object的方法(对象的遍历,合并等)。

    1 构造函数 Object 创建一个新的 Object 对象 该对象将会包裹 wrapper 传入的参数 2 静态方法 Object assign 通过复制一个或多个对象来创建一个新的对象 Object create 使用指定的原型对象和属
  • 5个高清视频素材网站,免费下载~

    免费高清视频素材网站 这几个你一定要知道 建议收藏 1 菜鸟图库 https www sucai999 com video html v NTYxMjky 菜鸟图库网素材非常丰富 网站主要还是以设计类素材为主 高清视频素材也很多 像风景 植
  • Prometheus和Grafana

    1 首先简单介绍Prometheus和Grafana Prometheus是由SoundCloud开发的开源监控报警系统和时间序列数据库 TSDB 它是一个监控采集与数据存储框架 监控服务器端 具体采集什么数据依赖于Exporter 监控客
  • TrueCrypt简介、在VS2008下的编译过程

    转载请标明是引用于 http blog csdn net chenyujing1234 欢迎大家拍砖 编译过程中用到的工具下载地址 http download csdn net detail chenyujing1234 4448383 资