博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cryptsetup加密存储设备之二(Android篇)
阅读量:5360 次
发布时间:2019-06-15

本文共 2321 字,大约阅读时间需要 7 分钟。

众所周知,Android系统基于Linux内核,虽然Google Android已经对Linux Kernel作了很多修改,但是底层的基本架构与Linux基本一致。

  在Linux系统中,对设备管控基于Device Mapper机制实现,在Android系统中,也是基于此种机制实现系统对设备的操作。通过查看官方文档中的描述”This is because the encryption is done by the dm-crypt layer in the kernel, which works at the block device layer“,可以知道Android系统与2.6以后的Linux Kernel一样也是在block层工作,通过Device Mapper机制中的dm-crypt实现。

在了解了Android系统与Linux系统类似之后,接下来就可以正式进入今天的主题Andorid系统上使用Cryptsetup加密存储设备,主要是对Android系统中挂载的SdCard进行加密。由于Google对Linux Kernel的阉割修改,Linux系统中的很多功能Android系统不能直接支持,所以我们可以通过adb调试,将所需要的功能编译之后push进入Android Kernel,并添加可执行权限,那么我们所需要的功能就可以在Android系统中使用了。本次所介绍的方法就是基于此种思路。

1 PC通过adb连接Android系统,我这里使用的Win7+Android AVD,emulator 一个Android系统之后,就可以直接通过adb shell连接,至于其他连接方式这里不作介绍,有疑问的读者可以通过查阅其他资料解决,网上此类资料很多。

2 使用如下命令挂载Android系统/system,并添加可读写权限。

adb shell mount -o remount,rw /system
无报错说明命令/system挂载成功。我第一次挂载时,命令无效,通过重启Android AVD成功解决。

3 将已经编译好的cryptsetup通过adb shell push到Android系统中。我的cryptsetup放在当前DOS所在路径下,所以可以直接输入文件名push,其他路径下可以在cryptsetup前加入系统绝对路径,如 adb push C:/users/moonsea/desktop/android/cryptsetup /system/bin。

adb push cryptsetup /system/bin
4 接下来可以通过adb连接Android系统。

adb shell
5 adb连接Android系统后,运行cryptsetup命令可以发现系统提示没有可执行权限,所以需要需要进入/system/bin文件夹下给cryptsetup添加可执行权限。

cd /system/binchmod 755 cryptsetup
成功添加可执行权限之后,运行如下命令可以看到Linux环境中相同的运行提示,说明cryptsetup已经push成功。

cryptsetup --help

6 与Linux系统一样,接下来就是要查看挂载的SdCard的设备号了。Android系统中已经没有fdisk -l命令了,所以只能通过其他方式查看,我是通过通过查看文件来确定设备号的,而且在Android系统中设备号一般为“179:0”这种形式,与Linux系统下“/dev/sdb4”不同,两者的具体区别可以参见这篇BLOG。

cd /dev/block/vold
ls
如果初次启动的话,这里可能只能查看到一个设备号,即只有一个“179:0”这种形式,我是通过在Android系统中先将SdCard卸载掉,然后重新挂载,再ls查看当前目录下的文件,可以看到这里新增了一个设备号,我的是“179:1”,如下图所示。如果仍然在该目录下查看不到多个设备号,可以尝试将SdCard通过Android系统重新格式化再挂载一下。

7 现在已经得到了要进行加密的设备号,接下来就可以对设备进行加密了。具体的加密过程与Linux系统下类似,这里只进行简单介绍,具体说明可以参见我的另一篇BLOG——

cryptsetup -y create myEncryptedFilesystem /dev/block/vold/179:1 //建立myEncryptFilesystem逻辑设备
输入加密密码进行设备加密,然后切换到mapper目录下查看新建的逻辑设备

cd /dev/mapper
ls
在这里可以查看到刚才新建的myEncryptedFilesystem,接下来可以对
myEncryptedFilesystem格式化建立文件系统

mkfs.ext3 /dev/mapper/myEncryptedFilesystem  //文件系统创建为ext3文件系统
文件系统创建后,创建相应的挂载点进行挂载就可以使用了,因为我们一开始只挂载了/system文件夹的可读写权限,所以这里在该目录下创建挂载目录

cd /systemmkdir myfilesystemmount /dev/mapper/myEncryptedFilesystem /system/myfilesystem
现在加密的文件系统已经创建成功了,接下来就可以进行使用了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/moonseazj/p/4931051.html

你可能感兴趣的文章
201521123044 《Java程序设计》第9周学习总结
查看>>
winfrom 图片等比例压缩
查看>>
人工智能实验报告一
查看>>
用LR12录制app,用LR11跑场景,无并发数限制,已试验过,可行!
查看>>
python 多线程就这么简单(转)
查看>>
oracle 简述
查看>>
ajax如何向后台传递数组,在后台该如何接收的问题(项目积累)
查看>>
Solr之java实现增删查操作
查看>>
httpClient连接工具类实测可用
查看>>
CDOJ 1965 连通域统计【DFS】
查看>>
飞机大战3-我的飞机
查看>>
c#接口
查看>>
MyEclipse部署Jboss出现java.lang.OutOfMemoryError: PermGen space
查看>>
ZOJ 1133
查看>>
HIVE和HADOOP的一些东西
查看>>
alibaba / zeus 安装 图解
查看>>
Planned Delivery Time as Work Days (SCN discussion)
查看>>
Ubuntu:让桌面显示回收站
查看>>
Android上传头像代码,相机,相册,裁剪
查看>>
git 安装体验
查看>>