1

我想通过在 C++ 中执行“ecryptfs-mount-private”终端命令并从同一个 C++ 脚本提供密码短语/密码来解密和挂载默认的 eCryptfs 私有目录。

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

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

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

我怎样才能实现这种类型的解密和挂载机制?执行此操作的可能方法或任何解决方法都会有所帮助。

PS。在我的场景中,将密码存储在 C++ 代码中的安全问题不是问题。

谢谢!

4

2 回答 2

0

ecryptfs-mount-private是一个/bin/shshell 脚本(相对较短,只有大约 65 行没有注释),因此您可以尝试将其中的一些“转换”为 C++ 和/或使用system().

于 2019-02-07T03:25:00.247 回答
-1

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

于 2019-02-05T11:01:41.537 回答