如何以编程方式在受密码保护的PDF文件中输入密码?

时间:2015-12-27 12:48:11

标签: swift macos pdf

我正在swift中创建一个os x应用程序,它可以通过编程方式“破解”'通过尝试1-99999999中的每个数字来设置密码。我知道PDF文件的位置是字符串格式。我怎么能,

  1. 测试PDF文件是否受密码保护?
  2. 如果是,请尝试密码是否正确?
  3. 谢谢你的帮助! (它仅用于学习目的而不是真正的黑客攻击;))

3 个答案:

答案 0 :(得分:4)

我在this apple site找到了我想要的答案。 以下是我设法让它发挥作用的方式:

  1. 首先将文件路径字符串转换为NSURL(并使其成为CFURL),如下所示:

    let path : NSString = filepath as NSString        
    let thePath = path.stringByExpandingTildeInPath   
    let url = NSURL.fileURLWithPath(thePath)   
    let CFUrl = url as CFURL
    
  2. 您导入CoreGraphics和CoreFoundation,然后制作如下文档:

    var document : CGPDFDocumentRef = CGPDFDocumentCreateWithURL(CFUrl)
    
  3. 现在您可以使用CoreGraphics方法检查它是否已解锁并输入如下密码:

    if CGPDFDocumentIsUnlocked(document) {
        //true if there is NO password   
    }    
    if CGPDFDocumentUnlockWithPassword(document, "password here") {      
        //returns true if the password is correct   
    }
    

答案 1 :(得分:0)

PDF文件格式记录在Adobe/ISO specification中。使用该信息,您应该能够读取PDF文件,确定它是否受密码保护,并尝试输入密码。不会是一项小任务,玩得开心!

答案 2 :(得分:0)

您可以使用Docotic.Pdf dll检查pdf是否受密码保护。

bool isPasswordProtected = PdfDocument.IsPasswordProtected(filePath);

打开pdf

PdfDocument doc = new PdfDocument(filePath, password))
PdfDocument doc = new PdfDocument(filePath))