【问题标题】:how to bypass pinentry (passphrase screen) while decrypting a file using gpgme如何在使用 gpgme 解密文件时绕过 pinentry(密码短语屏幕)
【发布时间】:2011-12-29 17:27:43
【问题描述】:

我正在尝试从具有该服务器所需公钥的服务器解密文件。密钥环有密码保护,所以当我尝试解密文件时,它会要求我输入密码。

当我们尝试解密文件时,有没有办法通过传递密码来绕过该密码。

我正在使用 gpg-agent,其中密码被缓存 600 秒默认时间,由于某种原因,我无法设置 max-cache-ttl(它对我不起作用,我不知道 y)并且可用仅适用于该会话。

现在我想缓存我使用gpg-preset-passphrase 的密码。我在 .gnupg/gpg-agent.conf 中将其设置为gpg-preset-passphrase --preset hex。我不知道我缺少什么。

有人可以告诉我我在这方面缺少什么吗?

【问题讨论】:

  • 看看这个,它可能会有所帮助:stackoverflow.com/questions/1867757/…
  • 谢谢谢尔盖,我已经完成了,但这对我没有帮助。我做的和他做的一样,喜欢将密码作为哈希传递,但它没有用。仍然弹出密码屏幕!
  • 您是否阅读了接受的答案?它提到了目录和环境。你也试过了吗?
  • 是的!默认情况下,密钥环保存在 ~/.gnupg 目录中。如果它们是在其他目录中生成的,为了使用它们,我们应该指定环境变量。由于我的密钥环位于 ~/.gnupg 目录中,因此我不需要指定它们。在我能够进入密码短语屏幕的同时,解密命令能够选择该密码短语。
  • 好吧,那我不知道。祝你好运。哦,你自己找到了答案,别忘了在这里发布并标记为“已接受”。这将有助于未来的访问者。

标签: ruby gnupg gpgme


【解决方案1】:

我无法绕过密码短语或密码输入屏幕,但我使用了gpg-agent 选项,如default-cache-ttl 来设置缓存时间。因此,从第二次尝试开始,pinentry 将检索缓存的密码并重置defaul-cache-ttl 上的计时器。

还有一个称为max-cache-ttl 的选项,即使在成功检索到缓存的密码并重置 default-cache-ttl 后,此选项也不会更改其计时器并在设置的超时后使缓存的密码过期。

例如:如果我将它们都设置为 10 小时(即 36000 秒),如果我在 5 小时后调用解密,默认将重置其计时器,现在我们还有 10 小时。但最大值将在最初的 10 小时后过期,因此会在 10 小时后删除缓存的密码。

我发现的另一个问题是 gpg-agent 的会话问题。即,如果我打开一个新会话并尝试解密,它不会发生并且错误出 gpg-agent 不适用于此会话。我编写了一些 shell 脚本并将其放在 bashrc 上,以便在新会话开始时立即启动

【讨论】:

  • 撞!!! default-cache-ttl 选项应与 max-cache-ttl 选项一起使用。否则密码会在 2 小时后过期,即使 default-cache-ttl 设置的时间超过 2 小时,因为 max-cache-ttl 的默认值为 2 小时。有没有一种方法可以定义 default-cache-ttl,即,即使设置了 max-cache-ttl,我也不想让缓存过期。
猜你喜欢
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多