
Αν και η [προδιαγραφή PDF](http://www.adobe.com/devnet/pdf/pdf_reference.html) είναι διαθέσιμη από την Adobe, δεν είναι ακριβώς το πιο απλό έγγραφο για να διαβάσετε. PDF επιτρέπει τα έγγραφα να είναι κρυπτογραφημένα έτσι ώστε είτε τον κωδικό χρήστη και / ή ο κωδικός πρόσβασης ιδιοκτήτης υποχρεούται να κάνει διάφορα πράγματα με το έγγραφο (απεικόνιση, εκτύπωση, κ.λπ.). Μια κοινή χρήση είναι να κλειδώσει ένα αρχείο PDF, έτσι ώστε οι τελικοί χρήστες μπορούν να διαβάσουν χωρίς να εισέλθουν κωδικό πρόσβασης, αλλά απαιτείται κωδικός πρόσβασης για να κάνετε τίποτα άλλο.


Προσπαθώ να αναλύσει αρχεία PDF που είναι κλειδωμένα με τον τρόπο αυτό (για να πάρετε τα ίδια προνόμια όπως θα τους πάρει το άνοιγμα σε κάθε αναγνώστη). Χρησιμοποιώντας μια κενή συμβολοσειρά, όπως ο κωδικός χρήστη δεν λειτουργεί, αλλά φαίνεται (ενότητα 3.5.2 του spec) ότι πρέπει να υπάρχει ένας κωδικός πρόσβασης χρήστη για να δημιουργήσει το hash για τον κωδικό πρόσβασης διαχειριστή εκεί.


Αυτό που θα ήθελα είναι είτε μια εξήγηση για το πώς να το κάνετε αυτό, ή οποιοδήποτε κωδικό που μπορώ να διαβάσω (ιδανικά Python, C, ή C ++, αλλά τίποτα αναγνώσιμη θα κάνει) που το κάνει αυτό, ώστε να μπορώ να καταλάβω τι έχω σκοπό να να κάνει. Αυτόνομο κώδικα, παρά μέσα από την ανάγνωση (π.χ.) την πηγή GSview, θα ήταν το καλύτερο.

 
Πως μπορεί κάποιος να αποκρυπτογραφήσει ένα PDF με κωδικό πρόσβασης ιδιοκτήτη, αλλά δεν υπάρχει κωδικός πρόσβασης χρήστη;
=========================================================================================================================



Ένα plugin για το GSview για την προβολή κρυπτογραφημένων αρχείων PDF είναι [εδώ](http://www.cs.cmu.edu/~dst/Adobe/Gallery/Keating/) .


Αν αυτό λειτουργεί για σας, μπορείτε να είστε σε θέση να δείτε στην πηγή.

 

Αν θυμάμαι καλά, υπάρχει μια σταθερή συμβολοσειρά παραγέμισμα των 32 (;) bytes να ισχύουν για κάθε κωδικό. Όλοι οι κωδικοί πρόσβασης πρέπει να είναι 32 bytes κατά την έναρξη του υπολογισμού το κλειδί κρυπτογράφησης, είτε με την περικοπή ή την προσθήκη μερικά από αυτά τα bytes γεμίσει.


Αν ήταν που δεν υπάρχει κωδικός πρόσβασης χρήστη που απλά πρέπει να pad με όλα τα 32 bytes της σειράς, δηλαδή χρησιμοποιούν τα 32 bytes γεμίσει ως το σημείο εκκίνησης για τον υπολογισμό του κλειδιού κρυπτογράφησης.


Οφείλω να ομολογήσω ότι είναι μια στιγμή δεδομένου ότι έχω κάνει αυτό, θυμάμαι ότι το τμήμα κρυπτογράφησης του PDF είναι ένα απόλυτο χάος, όπως έχεις αλλάξει σημαντικά σχεδόν σε κάθε αναθεώρηση, θα σας ζητηθεί να αντιμετωπίσουν πολλές περιπτώσεις να χειριστεί όλα PDF του.


Καλή τύχη.

 

xpdf είναι ίσως μια καλή εφαρμογή αναφορά για αυτό το είδος του προβλήματος. Τους έχω χρησιμοποιήσει με επιτυχία να ανοίξουν τα κρυπτογραφημένα αρχεία PDF πριν.

 