2013-12-13 2 views
0

최근에 내 친구에게서 PDF 파일을 받았는데 Adobe Reader X로 열었습니다. 제목 표시 줄에 SECURED 메모가 나타납니다. 이 파일의 보안 방법은 "암호 보안"이며 PDF 버전은 1.7 레벨 8입니다.이 파일의 암호를 모르면 편집 할 수 없습니다.어도비 리더가 비밀번호를 모르는 채로 콘텐츠를 얻는 방법

독자 X가 암호를 묻지 않고 파일을 열었으므로 내용을 암호화하면 안됩니다. 독자 X는 사람들이 파일을 편집 할 수 없도록하는 프로토콜을 따르고 있습니다. 따라서 프로토콜을 따르지 않는 프로그램을 작성하면 암호가 쓸모 없게됩니다. 그런 다음이 문제에 대해 혼란 스러웠습니다. 해당 프로그램을 작성할 수 있습니까? 그렇지 않다면 필자는 잘못되어 있어야하며 pdf의 내용은 암호화되어야합니다.

또 다른 문제는 Adobe Reader가 암호를 모르는 상태에서 콘텐츠를 어떻게 얻습니까?

고마워요.

추신 : 일부 PDF 암호 제거 프로그램을 발견하여이 PDF 파일에서 시도해보십시오. 그 중 아무 것도 작동하지 않으며 그 이유는 파일 형식의 버전을 질문에 넣었 기 때문입니다. 또한이 파일은 Adobe Reader X 이상에서만 열 수 있습니다. 그래서 Adobe는 암호화 알고리즘을 변경했다고 생각합니다.

+1

당신이 갖고 있지만 제공하지 않은 특정 문서에 대해 이야기하는 것은 어렵습니다. 즉, 기본 암호를 사용자 암호로 사용하는 일반적인 PDF 보안처럼 들립니다. 어도비 확장 기능이있는 PDF에 최근에 도입 된 암호화 알고리즘 만 사용하기 때문에, 사용자가 찾은 암호 제거 프로그램에 아직 알려지지 않은 것일 수 있습니다. – mkl

+0

암호는 파일의 모든 객체를 암호화하는 데 사용되므로 Adobe는 암호없이 파일을 열 수 없습니다. 따라서 기본값이어야합니다. 2 개의 암호 (사용자 및 소유자)가 있음을 기억하십시오. –

답변

0

정확히 지적했듯이 문서는 효과적으로 암호화되지 않습니다. 이는 DRM과 유사합니다. 즉, 알려진 키로 난독 화/암호화되어 있으므로 읽을 수있는 모든 소프트웨어가 제한을 적용하기를 바랍니다. 값을 변경하기로 결정한 경우 (가능성이되지 않는 소프트웨어에 변호사의 군대를 적용.)

가 iTextPDF 라이브러리 ( download here가) the documentation 진술과 unethicalreading라는 public static boolean가, 말했다는 "이 iText 개발자는 책임을지지 않습니다 이 정적 매개 변수의. "

iTextPDF가 PDF 1.7을 지원하는지 잘 모르겠지만 암호 제거 프로그램이 작동하지 않는 이유는 이전 형식 만 지원하기 때문입니다. 그렇다면 다음 소프트웨어는 보호되지 않은 PDF 파일 또는 하나의 PDF 파일을 구문 분석합니다 암호를 제공하고 새 암호를 작성하십시오. 당신이 main() 방법의 첫 번째 줄의 특정 매개 변수의 특정 할당을 변경하기로 결정하면 나는 ... 책임을지지 않습니다 오전

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.nio.charset.Charset; 

import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.pdf.PdfReader; 
import com.itextpdf.text.pdf.PdfStamper; 


public class PDFOpener { 

    /** 
    * @param args 
    * @throws IOException 
    * @throws DocumentException 
    */ 
    public static void main(String[] args) throws IOException, DocumentException { 
     PdfReader.unethicalreading = false; 

     if (args.length == 0 || args.length > 3 || !args[0].endsWith(".pdf")) { 
      usage(); 
     } 

     String infile = args[0]; 
     String outfile = args.length >= 2 ? 
       args[1] : infile.substring(0, infile.length()-4) + ".open.pdf"; 

     System.err.println("Reading: " +infile); 
     System.err.println("Writing: " +outfile); 
     PdfReader reader = null; 
     if (args.length == 3) { 
      reader = new PdfReader(args[0], args[2].getBytes(Charset.forName("UTF-8"))); 
     } else { 
      reader = new PdfReader(args[0]); 
     } 

     PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outfile)); 
     stamper.close(); 
    } 

    private static void usage() { 
     System.err.println("Usage: pdfopener infile.pdf [outfile.pdf] [password]"); 
     System.exit(1); 
    } 

} 

당신은 모두 iText를하고 "추가 항아리"를 다운로드하여 넣어해야합니다 너의 classpath 어딘가에.

+0

이 ISO 32000-2 표준을 찾았습니다. 그 이유 일 수 있습니다. http://www.iso.org/iso/catalogue_detail.htm?csnumber=63534 –

관련 문제