PDFTron 使用硬编码密码解密 PDF

Posted

技术标签:

【中文标题】PDFTron 使用硬编码密码解密 PDF【英文标题】:PDFTron Decrypt PDF using password hard coded 【发布时间】:2017-01-16 10:04:21 【问题描述】:

我正在使用 PDFTron 创建 PDF 阅读器,并尝试打开已使用密码“test”加密的 PDF 文件。我正在努力做到这一点,这样用户就不必在密码对话框中自己输入密码,如下所示。相反,我想在代码本身中通过“测试”,然后让它打开文档。我正在以不同的方式处理查看器的安全性,因此在代码本身中传递密码不是问题。我已经在网上查看并尝试过如下所示,但它不起作用,它只是正常显示对话框。

Attempt

PDF Tron Password Dialog screen

谢谢

【问题讨论】:

【参考方案1】:

要解决此问题,请遵循 Ryan 的回答。但是,如果您仍然遇到我这样做的问题,则如下:

buttons: 
          'OK': click: function() 
             if (!finishedPassword) 
                  tryingPassword = true;
                  passwordCallback("PUT YOUR PASSWORD HERE");
                
                  $(this).dialog('close');
                ,
                  id: 'pass_ok_button',
                  text: 'OK'
                ,
          'Cancel': function() 
                  $(this).dialog('close');
                
         

转到 PDFReaderControl.js 并找到上面的代码(搜索 passwordCallback 或按钮,你会看到这段代码)。将passwordCallback的值改为你的密码,然后:

++(me.passwordTries);
document.getElementById("pass_ok_button").click();

查找行 ++(me.passwordTries);并在下一行粘贴与上面相同的 pass_ok_button 的单击功能。

现在对话框应该不会出现,密码将由程序自动提供。

【讨论】:

【参考方案2】:

您可以将以下代码添加到 config.js 以立即加载带有密码的 pdf 文档。

$(document).on('viewerLoaded', function() 
  readerControl.getPassword = function(callback) 
    callback('enter password here');
  ;
);

【讨论】:

我最终在代码中传递了 PDFReaderControl.js 中的密码以处理来自 DocumentViewer 的密码请求,然后使用 document.getElementById("pass_ok_button").click();效果很好。这样做我认为对话框仍有可能出现,然后再次自动关闭,但该框没有出现,这正是我想要的:) 我将把它标记为答案,尽管我的解决方法略有不同,原因是这是正确的,并且会按照我的要求去做。

以上是关于PDFTron 使用硬编码密码解密 PDF的主要内容,如果未能解决你的问题,请参考以下文章

漏洞简析——CWE-259:使用硬编码的密码漏洞

sql 评估PDF分数使用数据库表而不是硬编码生成

为啥在php中硬编码用户名密码安全威胁?

无需硬编码用户名/密码即可更新 Active Directory

MediaCodec 硬编码

在 web.config 中硬编码密码是不是安全?