在 Linux 中使用外部 C++ 脚本解密并挂载 eCryptFS 加密目录
Decrypt and mount an eCryptFS encrypted directory using an external C++ script in Linux
我想通过在 C++ 中执行 "ecryptfs-mount-private" 终端命令并从同一 C++ 脚本提供 passphrase/password 来解密和安装默认的 eCryptfs 私有目录。
我已经尝试分叉然后执行 shell (/bin/sh) 并使用 sh 打开 I/O 的管道但是当我尝试通过管道写入时出现以下错误:
stty: standard input: Inappropriate ioctl for device
我猜这是因为 ecryptfs-mount-private 只接受来自键盘的密码输入。
如何实现这种解密和挂载机制?这样做的可能方法或任何变通方法都会有所帮助。
PS。在我的场景中,将密码短语存储在 C++ 代码中的安全问题不是问题。
谢谢!
ecrypt-mountfs-private
期望连接到终端。
一种解决方案是使用 forkpty
(2) 而不是 fork
,这将确保子进程可以访问 pty(伪 tty)。然后,您可以写入和读取主文件描述符以提供输入响应。读取子进程的输出。
ecryptfs-mount-private
是一个 /bin/sh
shell 脚本(相对较短,只有大约 65 行没有注释)所以你可以尝试 运行 "converting" 一些将其转换为 C++ and/or 运行 剩余的 shell 命令行一次一个 system()
.
我想通过在 C++ 中执行 "ecryptfs-mount-private" 终端命令并从同一 C++ 脚本提供 passphrase/password 来解密和安装默认的 eCryptfs 私有目录。
我已经尝试分叉然后执行 shell (/bin/sh) 并使用 sh 打开 I/O 的管道但是当我尝试通过管道写入时出现以下错误:
stty: standard input: Inappropriate ioctl for device
我猜这是因为 ecryptfs-mount-private 只接受来自键盘的密码输入。
如何实现这种解密和挂载机制?这样做的可能方法或任何变通方法都会有所帮助。
PS。在我的场景中,将密码短语存储在 C++ 代码中的安全问题不是问题。
谢谢!
ecrypt-mountfs-private
期望连接到终端。
一种解决方案是使用 forkpty
(2) 而不是 fork
,这将确保子进程可以访问 pty(伪 tty)。然后,您可以写入和读取主文件描述符以提供输入响应。读取子进程的输出。
ecryptfs-mount-private
是一个 /bin/sh
shell 脚本(相对较短,只有大约 65 行没有注释)所以你可以尝试 运行 "converting" 一些将其转换为 C++ and/or 运行 剩余的 shell 命令行一次一个 system()
.