在Linux中使用外部C ++脚本解密并安装eCryptFS加密目录

时间:2019-02-05 10:44:53

标签: c++ linux mount ecryptfs

我想通过在C ++中执行“ ecryptfs-mount-private”终端命令并从同一C ++脚本中提供密码/密码来解密和安装默认的eCryptfs专用目录。

我尝试分叉然后执行shell(/ bin / sh),并使用sh打开I / O的管道,但是当我尝试通过管道写入时,出现以下错误:

  

stty:标准输入:设备不适当的ioctl

我猜这是因为ecryptfs-mount-private仅接受来自键盘的密码输入。

如何实现这种解密和挂载机制?可能的方法或任何变通方法将很有帮助。

PS。在我的方案中,将密码短语存储在C ++代码中的安全性问题不是问题。

谢谢!

2 个答案:

答案 0 :(得分:0)

ecryptfs-mount-private/bin/sh的Shell脚本(相对较短,只有65行,没有注释),因此您可以尝试运行将其中一些“转换”为C ++和/或运行其余的shell命令与system()一次一行。

答案 1 :(得分:-1)

ecrypt-mountfs-private应该附加到终端。 一种解决方案是使用forkpty(2)而不是fork,这将确保子进程可以访问pty(伪tty)。然后,您可以写入和读取主文件描述符以提供输入响应。读取子进程的输出。