ineptpdf 5 by anon
This commit is contained in:
parent
58833e7dc5
commit
f8154c4615
19
ineptpdf.pyw
19
ineptpdf.pyw
|
@ -1,6 +1,6 @@
|
||||||
#! /usr/bin/python
|
#! /usr/bin/python
|
||||||
|
|
||||||
# ineptpdf.pyw, version 3
|
# ineptpdf5.pyw, version 5
|
||||||
|
|
||||||
# To run this program install Python 2.6 from http://www.python.org/download/
|
# To run this program install Python 2.6 from http://www.python.org/download/
|
||||||
# and PyCrypto from http://www.voidspace.org.uk/python/modules.shtml#pycrypto
|
# and PyCrypto from http://www.voidspace.org.uk/python/modules.shtml#pycrypto
|
||||||
|
@ -11,6 +11,8 @@
|
||||||
# 1 - Initial release
|
# 1 - Initial release
|
||||||
# 2 - Improved determination of key-generation algorithm
|
# 2 - Improved determination of key-generation algorithm
|
||||||
# 3 - Correctly handle PDF >=1.5 cross-reference streams
|
# 3 - Correctly handle PDF >=1.5 cross-reference streams
|
||||||
|
# 4 - Removal of ciando's personal ID (anon)
|
||||||
|
# 5 - removing small bug with V3 ebooks (anon)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Decrypt Adobe ADEPT-encrypted PDF files.
|
Decrypt Adobe ADEPT-encrypted PDF files.
|
||||||
|
@ -173,7 +175,7 @@ def nunpack(s, default=0):
|
||||||
return TypeError('invalid length: %d' % l)
|
return TypeError('invalid length: %d' % l)
|
||||||
|
|
||||||
|
|
||||||
STRICT = 0
|
STRICT = 1
|
||||||
|
|
||||||
|
|
||||||
## PS Exceptions
|
## PS Exceptions
|
||||||
|
@ -1186,7 +1188,10 @@ class PDFDocument(object):
|
||||||
bookkey = bookkey[index:]
|
bookkey = bookkey[index:]
|
||||||
ebx_V = int_value(param.get('V', 4))
|
ebx_V = int_value(param.get('V', 4))
|
||||||
ebx_type = int_value(param.get('EBX_ENCRYPTIONTYPE', 6))
|
ebx_type = int_value(param.get('EBX_ENCRYPTIONTYPE', 6))
|
||||||
if ebx_V < 4 or ebx_type < 6:
|
# added because of the booktype / decryption book session key error
|
||||||
|
if ebx_V == 3:
|
||||||
|
V = 3
|
||||||
|
elif ebx_V < 4 or ebx_type < 6:
|
||||||
V = ord(bookkey[0])
|
V = ord(bookkey[0])
|
||||||
bookkey = bookkey[1:]
|
bookkey = bookkey[1:]
|
||||||
else:
|
else:
|
||||||
|
@ -1291,8 +1296,9 @@ class PDFDocument(object):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if STRICT:
|
return
|
||||||
raise PDFSyntaxError('Cannot locate objid=%r' % objid)
|
#if STRICT:
|
||||||
|
# raise PDFSyntaxError('Cannot locate objid=%r' % objid)
|
||||||
return None
|
return None
|
||||||
if stmid:
|
if stmid:
|
||||||
return PDFObjStmRef(objid, stmid, index)
|
return PDFObjStmRef(objid, stmid, index)
|
||||||
|
@ -1571,6 +1577,9 @@ class PDFSerializer(object):
|
||||||
string = string.replace('\n', r'\n')
|
string = string.replace('\n', r'\n')
|
||||||
string = string.replace('(', r'\(')
|
string = string.replace('(', r'\(')
|
||||||
string = string.replace(')', r'\)')
|
string = string.replace(')', r'\)')
|
||||||
|
# get rid of ciando id
|
||||||
|
regularexp = re.compile(r'http://www.ciando.com/index.cfm/intRefererID/\d{5}')
|
||||||
|
if regularexp.match(string): return ('http://www.ciando.com')
|
||||||
return string
|
return string
|
||||||
|
|
||||||
def serialize_object(self, obj):
|
def serialize_object(self, obj):
|
||||||
|
|
Loading…
Reference in New Issue