From a4997d6f10170b3bf71887e422c918d2683eebeb Mon Sep 17 00:00:00 2001 From: numion Date: Mon, 19 May 2014 16:27:43 +0200 Subject: [PATCH] Implement revision 4 and 5 encryption handler. --- pdfminer/arcfour.py | 4 + pdfminer/pdfdocument.py | 295 +++++++++++++++++++++++++------ pdfminer/pdfparser.py | 6 +- pdfminer/pdftypes.py | 2 +- samples/Makefile | 2 + samples/README | 11 ++ samples/encryption/Makefile | 32 ++++ samples/encryption/aes-128-m.pdf | Bin 0 -> 13035 bytes samples/encryption/aes-128.pdf | Bin 0 -> 13065 bytes samples/encryption/aes-256-m.pdf | Bin 0 -> 13170 bytes samples/encryption/aes-256.pdf | Bin 0 -> 13200 bytes samples/encryption/base.pdf | Bin 0 -> 12609 bytes samples/encryption/base.xml | 23 +++ samples/encryption/rc4-128.pdf | Bin 0 -> 12738 bytes samples/encryption/rc4-40.pdf | Bin 0 -> 12726 bytes 15 files changed, 316 insertions(+), 59 deletions(-) create mode 100644 samples/encryption/Makefile create mode 100644 samples/encryption/aes-128-m.pdf create mode 100644 samples/encryption/aes-128.pdf create mode 100644 samples/encryption/aes-256-m.pdf create mode 100644 samples/encryption/aes-256.pdf create mode 100644 samples/encryption/base.pdf create mode 100644 samples/encryption/base.xml create mode 100644 samples/encryption/rc4-128.pdf create mode 100644 samples/encryption/rc4-40.pdf diff --git a/pdfminer/arcfour.py b/pdfminer/arcfour.py index 7adcf60..d16cf89 100644 --- a/pdfminer/arcfour.py +++ b/pdfminer/arcfour.py @@ -43,6 +43,10 @@ class Arcfour(object): r += chr(ord(c) ^ k) (self.i, self.j) = (i, j) return r + + encrypt = decrypt = process + +new = Arcfour # test if __name__ == '__main__': diff --git a/pdfminer/pdfdocument.py b/pdfminer/pdfdocument.py index 58b2e9c..73c4002 100644 --- a/pdfminer/pdfdocument.py +++ b/pdfminer/pdfdocument.py @@ -6,6 +6,14 @@ try: import hashlib as md5 except ImportError: import md5 +try: + from Crypto.Cipher import ARC4 + from Crypto.Cipher import AES + from Crypto.Hash import SHA256 +except ImportError: + AES = SHA256 = None + import arcfour as ARC4 + from psparser import PSEOF from psparser import literal_name from psparser import LIT, KWD, STRICT @@ -16,7 +24,6 @@ from pdftypes import int_value from pdftypes import str_value, list_value, dict_value, stream_value from pdfparser import PDFSyntaxError from pdfparser import PDFStreamParser -from arcfour import Arcfour from utils import choplist, nunpack from utils import decode_text @@ -269,6 +276,217 @@ class PDFXRefStream(PDFBaseXRef): raise KeyError(objid) +## PDFSecurityHandler +## +class PDFStandardSecurityHandler(object): + + PASSWORD_PADDING = '(\xbfN^Nu\x8aAd\x00NV\xff\xfa\x01\x08..\x00\xb6\xd0h>\x80/\x0c\xa9\xfedSiz' + supported_revisions = (2, 3) + + def __init__(self, docid, param, password=''): + self.docid = docid + self.param = param + self.password = password + self.init() + + def init(self): + self.init_params() + if self.r not in self.supported_revisions: + raise PDFEncryptionError('Unsupported revision: param=%r' % self.param) + self.init_key() + + def init_params(self): + self.v = int_value(self.param.get('V', 0)) + self.r = int_value(self.param['R']) + self.p = int_value(self.param['P']) + self.o = str_value(self.param['O']) + self.u = str_value(self.param['U']) + self.length = int_value(self.param.get('Length', 40)) + + def init_key(self): + self.key = self.authenticate(self.password) + if self.key is None: + raise PDFPasswordIncorrect + + def is_printable(self): + return bool(self.p & 4) + + def is_modifiable(self): + return bool(self.p & 8) + + def is_extractable(self): + return bool(self.p & 16) + + def compute_u(self, key): + if self.r == 2: + # Algorithm 3.4 + return ARC4.new(key).encrypt(self.PASSWORD_PADDING) # 2 + else: + # Algorithm 3.5 + hash = md5.md5(self.PASSWORD_PADDING) # 2 + hash.update(self.docid[0]) # 3 + result = ARC4.new(key).encrypt(hash.digest()) # 4 + for i in range(1, 20): # 5 + k = ''.join(chr(ord(c) ^ i) for c in key) + result = ARC4.new(k).encrypt(result) + result += result # 6 + return result + + def compute_encryption_key(self, password): + # Algorithm 3.2 + password = (password + self.PASSWORD_PADDING)[:32] # 1 + hash = md5.md5(password) # 2 + hash.update(self.o) # 3 + hash.update(struct.pack('= 4: + if not self.encrypt_metadata: + hash.update('\xff\xff\xff\xff') + result = hash.digest() + n = 5 + if self.r >= 3: + n = self.length // 8 + for _ in range(50): + result = md5.md5(result[:n]).digest() + return result[:n] + + def authenticate(self, password): + key = self.authenticate_user_password(password) + if key is None: + key = self.authenticate_owner_password(password) + return key + + def authenticate_user_password(self, password): + key = self.compute_encryption_key(password) + if self.verify_encryption_key(key): + return key + + def verify_encryption_key(self, key): + # Algorithm 3.6 + u = self.compute_u(key) + if self.r == 2: + return u == self.u + return u[:16] == self.u[:16] + + def authenticate_owner_password(self, password): + # Algorithm 3.7 + password = (password + self.PASSWORD_PADDING)[:32] + hash = md5.md5(password) + if self.r >= 3: + for _ in range(50): + hash = md5.md5(hash.digest()) + n = 5 + if self.r >= 3: + n = self.length // 8 + key = hash.digest()[:n] + if self.r == 2: + user_password = ARC4.new(key).decrypt(self.o) + else: + user_password = self.o + for i in range(19, -1, -1): + k = ''.join(chr(ord(c) ^ i) for c in key) + user_password = ARC4.new(k).decrypt(user_password) + return self.authenticate_user_password(user_password) + + def decrypt(self, objid, genno, data, attrs=None): + return self.decrypt_rc4(objid, genno, data) + + def decrypt_rc4(self, objid, genno, data): + key = self.key + struct.pack('>sys.stderr, 'register: objid=%r: %r' % (objid, obj) if self.caching: self._cached_objs[objid] = (obj, genno) - if self.decipher: - obj = decipher_all(self.decipher, objid, genno, obj) return obj def get_outlines(self): diff --git a/pdfminer/pdfparser.py b/pdfminer/pdfparser.py index f1b6c7f..32d1220 100644 --- a/pdfminer/pdfparser.py +++ b/pdfminer/pdfparser.py @@ -112,10 +112,12 @@ class PDFParser(PSStackParser): if 'endstream' in line: i = line.index('endstream') objlen += i - data += line[:i] + if self.fallback: + data += line[:i] break objlen += len(line) - data += line + if self.fallback: + data += line self.seek(pos+objlen) # XXX limit objlen not to exceed object boundary if 2 <= self.debug: diff --git a/pdfminer/pdftypes.py b/pdfminer/pdftypes.py index 6851fbf..03c4a5b 100644 --- a/pdfminer/pdftypes.py +++ b/pdfminer/pdftypes.py @@ -224,7 +224,7 @@ class PDFStream(PDFObject): data = self.rawdata if self.decipher: # Handle encryption - data = self.decipher(self.objid, self.genno, data) + data = self.decipher(self.objid, self.genno, data, self.attrs) filters = self.get_filters() if not filters: self.data = data diff --git a/samples/Makefile b/samples/Makefile index 8a1befa..7aa3aa0 100644 --- a/samples/Makefile +++ b/samples/Makefile @@ -52,11 +52,13 @@ all: htmls texts xmls test: $(MAKE) all CMP=cmp + cd encryption && $(MAKE) test clean: -$(RM) $(HTMLS) -$(RM) $(TEXTS) -$(RM) $(XMLS) + cd encryption && $(MAKE) clean htmls: $(HTMLS) texts: $(TEXTS) diff --git a/samples/README b/samples/README index bece0db..e0fa424 100644 --- a/samples/README +++ b/samples/README @@ -47,3 +47,14 @@ nonfree/nlp2004slides.pdf: nonfree/naacl06-shinyama.pdf: Yusuke Shinyama and Satoshi Sekine "Preemptive Information Extraction using Unrestircted Relation Discovery" + +-- +Files in the encryption folder have been generated with cpdf 1.7 [http://www.coherentpdf.com/] +from the base.pdf file generated with LibreOffice 4.1.1.2 as follows: + +cpdf -encrypt 40bit foo baz base.pdf -o rc4-40.pdf +cpdf -encrypt 128bit foo baz base.pdf -o rc4-128.pdf +cpdf -encrypt AES foo baz base.pdf -o aes-128.pdf +cpdf -encrypt AES foo baz base.pdf -no-encrypt-metadata -o aes-128-m.pdf +cpdf -encrypt AES256 foo baz base.pdf -o aes-256.pdf +cpdf -encrypt AES256 foo baz base.pdf -no-encrypt-metadata -o aes-256-m.pdf diff --git a/samples/encryption/Makefile b/samples/encryption/Makefile new file mode 100644 index 0000000..c877f4e --- /dev/null +++ b/samples/encryption/Makefile @@ -0,0 +1,32 @@ +# GNUMakefile for test + +RM=rm -f +CMP=: +PYTHON=python2 +PDF2TXT=PYTHONPATH=../.. $(PYTHON) ../../tools/pdf2txt.py + +XMLS= \ + rc4-40.xml \ + rc4-128.xml \ + aes-128.xml \ + aes-128-m.xml \ + aes-256.xml \ + aes-256-m.xml \ + +all: xmls + +test: + $(MAKE) all CMP=cmp + +clean: + -$(RM) $(XMLS) + +xmls: $(XMLS) + +.SUFFIXES: .pdf .xml + +.pdf.xml: + $(PDF2TXT) -p1 -V -t xml -P foo -o $@ $< + $(CMP) $@ base.xml + $(PDF2TXT) -p1 -V -t xml -P baz -o $@ $< + $(CMP) $@ base.xml diff --git a/samples/encryption/aes-128-m.pdf b/samples/encryption/aes-128-m.pdf new file mode 100644 index 0000000000000000000000000000000000000000..30537a11a4fb2a38529511c681738b2a93e673d6 GIT binary patch literal 13035 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 bTKsiDS$lf@Dozj|zknzfGqa+$64w6!2An9{ literal 0 HcmV?d00001 diff --git a/samples/encryption/aes-128.pdf b/samples/encryption/aes-128.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2e3d2aa8507a6e9746649f0a3cf81b0217c3b31a GIT binary patch literal 13065 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 R%q*;&+{hFZVhZBO{}0Kdzd!&0 literal 0 HcmV?d00001 diff --git a/samples/encryption/aes-256-m.pdf b/samples/encryption/aes-256-m.pdf new file mode 100644 index 0000000000000000000000000000000000000000..81d0d8a58efa3e51d59c7a54b51e13270e332f70 GIT binary patch literal 13170 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 TZV`44PHqqe9i6nQ495Qhtf#ig literal 0 HcmV?d00001 diff --git a/samples/encryption/aes-256.pdf b/samples/encryption/aes-256.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3a52dd445b7b53a279dde18c0b9fde9ebcca8e37 GIT binary patch literal 13200 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 MnVMQsSql080iEX@tpET3 literal 0 HcmV?d00001 diff --git a/samples/encryption/base.pdf b/samples/encryption/base.pdf new file mode 100644 index 0000000000000000000000000000000000000000..27a7cac42c8f5dbac093b6c8ef864963c567e0cb GIT binary patch literal 12609 zcma)j1z40@*EZ79DGdWk$1p<-NJ)p%ol=AJzzm&&AkxweA|Qw$At@-`B_Q41(p}%+ zIq!SUci#8E{_h!Pp8c%7*4k^Yb*~NAH8;#^GIHD?9)29=mjQvVa6kZF0LKz~m>LyFCjlTZ{@6f5M*2E_t72B7ex z@SuR$|8QXgbCfZ2fwIXw2J?dWc?EcdLBf0xFocsA%*xBl$}TRB19h~#TNM1);?JOt zFI=nv{KA4jEl(#XP#NlCW@+YP2Gn#lcexYjDL+FRB3zI`I^c*(csSSt+@Np-axpO` z5DzaC0P1J~v$S!1A;zSwCC4qqBq5HEBMP^)daNNMhmQk5UPv29#ABpLjLF)?#py8+ z=$-DdMYtd{_}kClP5zg&-%&qCt_yWUKz|1bhazCEa0}?aH)(N)BpWxV z1Uxa!OX@H=mmwtkh$UoG68?@UKDt@*}rZ6u6Dm=$l@W#cYyh` z^nXH!?=R^53o3v+IB5W%nK`~-vxIWX$g%@fouH1A7I*nE1o8f!)zdcsIJ(-~|M9_V z3{*3F0Yw0Weoy{Jo-`75_OKU!p_KoxrKBYRygULx3$wf1Um5~`Y5a*}FuyQR&c+^@ zE1;Y`vKeHMxv+%(1z?YKH*?; zE>4;^3PN!^-Fa?n%buQ&3#X0S9eoXvk>7e2)K;R7MrT?cr4>m1X}GWX`2Yt|V&!$! zqht}tMHTZlcSj-_#LI)%@1;ny$@>8785u%`B=MSl`Gd6E?wC0o;8*Gw%B9X?(y zI+3^*L5B{m^QRtjsA>UjmC^6N1u(PWtJmIF=&8-!Ip(-8bO;>X4m10i#j)DU@d9p= zWoZ>K{WDlqB?WRRUV&-g6Z4qndtvCg!l0U9jhi z_SM(p_&+Nt_*e4eKmf>HA^ytj-Q%Cf)9>QQ!5m%weI#hXU7^3FQf3I~?-?n{yNgrH z#sP{@fx2rT(dMY8sjP*p1svfbZEXez@FD^7=TH!+Yh&qRjWC2jAOHaYK>$BL-|sgc zA0GgWlp*iNz&pqPLMF0RK!2c23#RR8b5~QqUGe`G@g0)>9`SE{0X6j1p_$P>k{yz{#LqT5m{~yZdwJAOJ{^kDvGN?YiUb?GxWNvX_#w=II9U?sEK` zwk4j{w^~&jgZq}K>$MR&DjfH1UaO@d>V0&<3Hx_P2_$yp_YDdvXALkuv5|A9Ver4> z9xU{&)Yz-6+|&0)Ri0ZN z***R&eLnsLe@F13Im3xN{Uw@dVBc~+AOMZpltCyI zpN(G<9J65JL8=qTF#BrwEmq$iL1>FJbv8rnJC3V+iG5CXXV^+@PsFZJqGH9%(Upj@ zlyO6G1$ObGrNPU=(IInSqsK2Psl8cbuANtwW|3B#+v+oG`_i zy)+bmv0m zg&wSu3H4qX>Y8+t5&~V-IZ@)gBj=vRA9x>y$R&fSq4k*GW7ov#gi<)RQn@v`FFdLb zbE|*lcT0Bj3}??X$uGeXA4s^1+YnM^-Gn)8MqGr#U>~HsCuTIVHt%_cc1|;ry?lQI zn+u#y|Jmr`+>hn7pW9<%0i?%|O@)uO-gc# zupaX#3+~<)N2q)Gt))cV)sWu?w`bIL!l_+-91Y8Jd`L(Gf#_2eZPCK7Wo>~C)?HtpzZT$b$7mVO!3p$j;=4u z7zZStNj~iisllrB8A^6GVh-=^*89$;6;+4EHZHj`T+55?DYLM~DJK@wE z?^oLzD58~hLAH0MfvoB#Mvcj$)i4w-C!0vOIML|o>O5Z-SMv*Y@t!UmpL$F3jiwiz zR4mUQLSjndrn;)z5QO~>z;kg=lC1nrbss-Tm6*9$!Y&4OOc0c^PbKx~Q)}}6icFKI z6hGR|in7IhECwvv0r)91>sZ*gS`>k}WA-*W?A-t&&SPQR9YuaT|AG@{UxD=?%y zbbmv81AhZnuIw1^y^OWI7SEq2rC(U2{Y#yIZI^RRAj~S;Dq$6~Z$QATnDonts?%&p ziGn9{_kA!MtHSdS`A*OE^c(6Uxn!f+D}s;9V5PUQx^Z8gF~eerM|(zt8O)WB272Wa z2Q40jPb}M3Q9Hikolu?2TU+1Fl^K$f0C)~Tx-@@wY_@oY?e{C_(djcU zPIgm?B>I=9$**og)0y4PMuk*Xl_rk73}jC%+P^&kn+4)MkvJEu=^9>k0AmJiTSUit z{(Sj~JXa2kAN_r)SH-X2ys^dMkuZM@SMG}qjgts?tTsuY{$j&CXHbkrL`Ha);`mFE zd6m>~;bP)1U3R&6MNW{_OGMnjUIcdo<8Gsn_gnI2bGBf?3(bP|Z~OG(#ZI{KP3jR% zhS~A6Xpo=~MT*ty^JEG3h?q(>siS1>xWTGo50giOT)n|N1;+!)x6j*)=AMbaR+eeY z5Fqd*S(|1NFt^%lysAUX;<0WSbzdM@DZQfR0(7CoK0Zg0J1?2{5=HpEy3owV+%ddI zs1$5n8J6OS;_c%O7p&Q@#qd*NvzJVJu_*qWt*^b;Ti1iTzm#I2z|(`}JNmbUx@`I} zN9VH-dj!^m5|k$Q?MxLt7*^*Z7l@t(JCuj;#2IT~td1vj9(vGU1Iy74PwYK#4`br= z7NmXrUY-oZXT2ugNJ>9ksHqSGyq4YGAUAh~Pd4n6X@rWo=pQ*(W>9|VKQ)}Lr1jjvm8s=X4XlVtAzdAkwAMCujxOyt(F3l(g?YOoZzVS|p96d_8VZvt~gm^QvY zQtY+G|4Bw(7)c=DQQwpu6+<3wK-}=HX+ixJDQXsQ&lnZLtwWRlW; za-45yeDGyUM_wyhk9T5FLMiqINx+Zg_DyvhgNM}Q&s_QWF*RxN zrvm{9L9e<%T#8CT!Q6?R%=gWJkGn2KIDr;AyraxA?@S8ra~w-Xs^y#Ryg@A zSAqD7Hl3)x(i+bu6icoiJJCI$*mS^V@n4BJK4c-F*PZ*i19zmRv8gyItQQ8CE93vt z|LG+>*8embs{>o(g=U8WDaUtwq!sRlB#-5jfi7gyQ*~+h6G-(}&7*@Hc6{ z(26~@6LB)rkPj^N_#zgcx+zW~j{h-oQ{m~S7WyJ(ghxI8M$UcSa*x9%vg%YgbAEx- zPy5gs*PmoGvUu%1F~6RQ2Hba!5&(W*)@|m7_cl3U7iMr63~e?FE3e6(x=?PUN131P z6K#`kHy^L#Z*Gdn^^Pb&4sRqUY}^VSW}$v=uvpCDWS?b|bxxJQh&o`aCA02qc!Op9 z*;Mi#A(67!XSPWp%?i$N97xpQyPUZq^Wa~vg4Yd8^1q^Iz^V^dW-I0~ z2G7tO&%rRAO6S~%n^UWaoCd@Fh!$QBI6F;sXdo*1p^Q^x>i0r+{c?VRGVIV+(3-%+hy6mF(8PlIhsRKyH`* zUxxM0xOSNf2kK9^&CA!mSZKVKFhuoF2-_MRIbfw6?v7uAZNRo`YOX96azus#m8(6SNW^lfrPG>=)Uj$^2Mf}szgo&}5%YZy zo1Gk@ejhaI-g^*X^|0jlP1w1<8hbvR306=a@PhtV7|{sMdBsD=mu5`~=#mv89oX2Z zCrpt~)+i%?^itT6*=PieC>N$n&y9dsP zo?IW|C%N6iNpWL&nmiLCv)p_3AoUoLIr}XO?#xtkg89QMzv63P6tQ|FPml4;^F%w7 zjBz_r3%_VZ$FQ7seH_mJP|p8xW-@aqb29Tor`!ZO#?pw!69!()XEYXFfF`RVQ^FqxceOI3p6MR;b9S5}0#?9w^#=u`78!ix&*T5{ zQ^&U9!(wXpMEe8=_XV_lWfgkfV?-rro@298)m`zCdo(dVQA>5A`yhdwlT%m47}VE# zbaCb3Yw%sVL}#EASbWlPzEu5UE~hqsd3MN`dC7C&LH#;)iMU~gQ-+%t^_lhLJveH~ zoZ)>&d9w(Cy2yl6WkuDVy@??(U$m8zl5Dr{eGDGm$fkHx-ejZKsB!T*qzQ`v3Y7SI z_THGJcRA6d?p8V&j8(L;d~&poh|rbf;LK(UP|v*{cHA!!gAS?_^aCy_t}-1M_I2T1 zWs9m|Ep0{Pz7BbHXXt{IWS`pd+Lqch_W5$}7b=jN=oj%AwN(j@z4X5cx}9zfuDW-N z;jbNPhic1;eD#th)+}>0hdX>QPqGO=_vB2Lcnp#3C0%1dAC>Dxd!x!;Jhz>hYFrpP z&@)J}+07^+n4fOhVUf+=X7wy4oA&6nlLE2e|3ZQScv$Y%AzSJc!6z77Zeb z+i8!7Hfa8azMl-oK0bFaviRkq=#VK0o_Aju`HX)UGWD*yT}LsmOnU`eD5yu8E6RMc zQ-g#wHZGRW#yoJbv%9ZLGOXQLJ_R)z{VE^|2_~z$7s}DBi}tf$#Iqeu7x_ zS1Z509J;?lU_Bj9!S3Snu_>Uv1fkP`jn`c@Cg0Gk~9~GDa7@t zEMHGrb&-kx+WSkDjpfN+l7mgUx$U!yu=0`M6bXXqQFw=40(%w7G>jMM^P1aCQsE_D z6*T_f+eZH|3-hBu#?fah&Dnpski#a(8hcBAEbL3~-)9ScGi6=|z`Wqk zmqnxg^4eA??R2%%j3}5q~2M&NQbpnBFm$3uyZDD+eABud6iyDtWcL_In*FX3|42fgeu~9AT&97 zB8mx3DJAC?i#jpux2~?rb9o})y!A{)efU!>aqRSlwxFZ-v+HS`;^NtH!2}55>WVh@ zL2Te+7(cV@7`4BzhW7!^R+5H5&<0tgirrh%HMXe@hi<`^H|MJnA?toy3ujrw5Q{l* zR*t{WhKlTseaL(&TouSq8!7D;an=_d#cX)KRE-)h{92d%mj+#0CyEX;7t zrKQ5fNz!VTUn-&rY|JblzOfJ+HN|BIaTLuGwjFNbpKjN1{8~z|2`YKBO75UxVxVnL zvd`?GJekrO+t2(6&rb29TT)`8t-GzNO^W{3=;E^q$sL>G_rAUHY)x+Txe9(m{;1GO3qlSSp;Yfx!;f9q6Q7!BXpeW#JZ{pj(&+*xk0Cm>8_qY zEEzs2?WvurkhjOdJ){)A_r5q;fsn^*nuGFOnS3$USms$KW8*2EX(P+0KIfU=8g5(SPQQ7W(M+(WX+F;9sSWM- zU?y6>f;XSI-}gK`l{p;lC^Y<%Uk7WAE53hvYUGBpy*x}Lr|1&$iC-I(>}m-{hw|@e`>Gr=w9#n&fM5mY@)M5R;U(EFx%u^NOU*Y|1u^;_|2KmFIWGC0d`t zR~WM7^Ycxa_C`FzM`sUgLhEI01}i>Pey|(uq**betYT2|mK6J#`TEpyh9AzYZ)Kc1 z`)j?_Ef-dCF)Y9Mow%W=yypVjGnw9r_R&CWmbG8(LBPqgi;zuWbM5u%niXdedy$`J z9r_{d?_*!^Zfc_&p1ELyd3{o+^Q=TRN(raf$NStyzW?Z7tL*vSL0=I)r8=oPH82@@ zGD4NV_wH6PRx`h8<6FQ&FX!n|4M%$J>`hqTlLwS;)CJkCTwoQfqZXcLPnOPXKQE!< zMB{&$jaQ=h5Ighnk!u9ywDSvc)G&SZ1dX=hP9D=%-K8S(eDadoZtQudn8bpw6~&NrE6i2FWHQNf&i7kPFshpgq0D7jeM z#^b&(_`8x|+9zy6K}15>NP&L35TzMCAr)ZI8kJsoP@0tjP3aXY@#`smQH#~bb2S@v zyQFaIDZ&qA{hbx-bWthBV_aTNmxWs&wBII#_&)j7SfSGg{j`WZ)?ul5={qgR~$v3h+OFc}J586x{N%-b#rRyU*UxWzJ z#6-_LppUOYr+*|R{(%2dK#wuxdeXt*?N-lBY7hL7Uk7dY$XOe&olCCKMN531{q;pTc*B`eQ%@*fdR!pB~Iev=TbVB(Qm>4$P$h40L znmQZ1TQMZ$tgA65UueLJvoo5OV9|wFf{?kgBf5IzyKnl|s(heoo~=C~n0mGaQ zD<;S%qE!+x7Wajg|G;LFI!nwmp%Iq1%lEemc*SMJhpzw-;T)hw$O@FJIz% z33{Z4YS&Va#<%@$`rM?>2rJ~g9t?E`Th|NmO*_~0QaOI#^Lmv~QqKs=?A%9v<% zcyRLtJJEw)Kva)Nc*UIWO){-%ahXtad&Vw^vAJnhNqBckm73>C7U#i|d%D@^5y zA#b>t6y(q(9!NVqmE8s$jO7af#l;_9AC5bRipcH+$2mAGtuC#uO*uI;br2c&phs9g z$;d9usL(V>b1qq#jkgHxh;7%HRUO>!2TW;#B)NI3XeJ}G44`eP)_s-8Q_N0@<6*sm z!j!b0xy?@l9VK>kyoBlXTvCsC|JY8FI?^GNd)JiboyG;`^W;gE=zP|gL`;fsx8`OK zFs&+JmX;xcAzFgU|FKEvuEJbHMuXM9b&KAT>Xh)bJ1OPMvv$`7JVKE}^zwcpJh3Nl zTDY53r|wD2rhA%{$Fn}>y1!V@xkiNp`}RP7MJuA##`4!zNz&TH3j;V^3w~QM#$39f zUVJ)GOyt~PIGDl1YIUu6lMA++D|V7QJ0U!CMc~ci^Sb^G42Jm(PfT^V1AyUjRmkh= zg;6u(O1_A#(pjO~ntL-*VZ~8{%fU$>oWJLQi0Jd|E-;gGuczNvf~l#{oc<*6-+R&qoc#3#U)^cXrAIvTQXg7N73!Ub8IK4%}K2`BBWh z8Do4OesisNG(65qV|LEWh^p(yuSEWRouHYwj&7BaKie>(0*8d{mXo{@FMU^hBk6!O zRjZF>&=5`gO0aLPdEdkswP%lefc=`@QnI-H)c!`NU&2ndD`@oDp!xfx`;L)|cvnuk zWJ!QH>zo=qomkQ~@=hkcoEl8Q*eJHo!5Rl%WMfU-i$H2x$k64wL(-}~`^BgH9_ELS!XJ|gBZ5YFJ=80!|Y67Um-06waa9j>3(vat4}Mea{3B^ zV<cE2o z7*73@`36!C;%J$reA+R&?dW-_B*n8~z&cA#W1G=4_B~&tZ?7X z(UeBElt>w5I8@y;y-I_;UQ14fq;*_|B zCmhT6bQUq45mjBte#EhZn1oGt3K_-T`YmUD9y}c>A7an5eX3ghc&@sMVtjh8c=Yn> zTD$@BV{1ySX!Q8_W4QO&5jy5b+svz(o5&gCHtug*byy=?Um+jEeYd{RJa8|e+C01f zo|N368b%&`N^-r#a(-4>UgMIQ3TdcDeyMX*Ot9=Pc>@PENky4*8G##C!Yxh-3QYv& zPu*NgPA|qjejmB@;JAI`96H(@j@jU@x%*mRGjQaSw@BRxldEE5U3Q5#pWE>%!G$1M zVUL#xns~$Gfvw%mSt7N3t%M{`AL&i6T`O1XQbYWscgml9JNF3+uV-$KzXd#TPx@-h z2md)Uh255&`Z4*COu~*Py%_rW6}_Idf`)qPmxz*8%wmih&XX4#Jmy`ap{I`mR;tR zSz+TIc&R^q=Ph>nu7RS`?Of1d{m>Jr8z$%d@Ppf>c6te+wwW;5Is;CD@eEBZLj6O2 zUCAvjUvo<zjqI5717~V!D9`JS=OU6^5XvW$Gu=Zg>mWBHi@2rx^2d z6fgasqulu3J3~GoOSm#|f=I9SD(Ut<#S#7v5;-V^dZHMOuv@y4^$Eh~`rJcr5)J&aE^Igvi$ z@uh_~y$;gM&gF0NWaYQhAxn8I7D&s*#v!6j(J~vLO2pD0R?8lBecE%*GJGXsT6%UCBC*w*$W zK=NlZfY?XRRt+$90U>-pO!YMedsev3iTn+CJSJ6V>Newzx8XG zIDpv5RFj;1zpYQ&TmzC_pk8j9u?P5)Yq1@ zoPpG2oz<0NZ*Azl`puL^rMMP;)><3o{@Ep7m9S&k+peU?ZP+-O(tDek_mO99ZrbFN zR?_a!?jY9j(nXw?a6tqoYr=51zHHQ0q(k;l_7P`GHxD%W{Z!ue&<_IN20y)lUN7zE zh3;Dvo6xk^+aK#viWldW%xvV=<;Q~o+0j!mpUbz1C!GZ*2g%1C(v_myrx2?!`BB?Z z8J4k8gu}}eB4us4_87R@aQdZ!2!d|dbZc8{$3uFuR%nBamQ&w$H`s_ouINWG_O>Mw z8_L;Jsc$|Ki++$=rbYaKiC0o2@}>H#6BE-h|4?!klY1Y5ew{>l2uZyKRF zt@^RL<+|m<_9}*%4kZ961uxJwvYu>`mZD_SNw(9g?i~f@ad$5r%>;IU z`tx=7s8p`@)m+a5zt$$hr-)l`bAIuyo|Cvo5HjSRtuF zlF8@%pt!dG89pVNT)Are=^J<*o1JXRj$ogFpWxV8PHns4Dm8*Q+tcHgFIGg>#(irm zB4jfHcQfMLRgRXMYTGn7^u3mcq93q(OGbZPrIhB@9CFj;c=c+=qhUtK6k=krc0J_0 zOKlU#c3l6+Jrw?#4KeMNwlACJT-ztqXH~=(i-m0)qW`{^3`z~`Vjyf2Yz_Qnb0A-D zO~ZbFWO=Hc?M+yaw1BIg@@w1AZJSaBtM`g-s0+^%cc>01n4)& zKdEiGO9iK?Z~3aRRm{?Hh`#y>3&yFoaFs78CH$1Z$O>_CDEQE*^McV1kOrSnanf+? zsxN4t5P~y|j>$cSyvFe?!Tf9*@iT;0v$T6fM_ih=RIT7kFs*qk)jW}O?kj1^3``aE zG=(DGS#16HqpxWpi)`JDYgALWpFLAmX~mh#va#$NJTcd*@zNSt5K@;8CG-owa3)m9 zqKMbxsMzlS>S?UkbJ`Kz1%|&T^>(Sq80)zEWld9h;GbcQa#+H(h62-mI~v zVkGo-<7P1@d^Kf|-14{hVR*^O^~syJ`e{gnEAi;~$O%$t>RAl2qD zR{s&@7+xRum%w48K8w`7#d#N9gj(I+)8d>UpO#m}fN!o5Po8pOva!yjxBJuhqhqtz zo}ciW%sCzI&=cAaM7c{HatNGFkfh7^z9*NQ0QKM~(%2POI`eUBE92|3KYqUgl|U&s zxv>Kz2|V=BJ&YZlx1h>2rIK%^%3PhVywW|EUq?9>5Twn%u0N=tXMCQG78x#_;gi>d zP{b>@mI#x?FR2-q>|8W|D@%Y=<|&2O!vCqvjGvQ}>4-L^C79PIlT^x%$pV^#LuB9efBlB2-hz09g!{+AlZFP3b;CSQ@;_0%o z4r*GHyuuvghOnFbkn||+46*tXH!S~^bw_MBVd|giur=-RjPxB>{s^fT7EiaV^Xuvu zmtDPS=w>kon&hiSA+*4Tjtc%4tG68@GX?M~K^JWx`hD#m|*RIPTFKdL^-1JN4pF6AOJR z_*@Y6#mOC>7<#*#z}9myLUmG+WBEKDDp%eH!Zk8=*mkHnf;lrb5#z_MM=W+aSVih^cz zzTeURUR10v^2O~1U8jbS1#~O!SL%#@mSq`Z1Pe){s>Q1x!a)KzOMQ($0JkU{lrnD$ z5csv5hFj(DNMUv8uvJ;2==mpX@_K=Qmgq7c`~?WMztr1#7OsZiJ)&kw6*JkQg2BnD zMgcD)(G5NQiKe0M@(l|;Z(aFKW=6^Em{xb@zj4|#@&$z|IUp2-{ivITtgKz2Pp9WO=Pq; zdw~E5{?`11>L(y51mNc56$F5Jd3gaKUS5bXP!UOCwXu+Ne1RnT@&Y9hNUkoDc_$1) zlKuV|bAv&GKxs241*pvnYb42#msb#|=>m1o0SNK__KhU3LcxIF%(=fa>HbE$y$c<1 zN8Z!`{z*hc(hIfV{D3=}BGLvZ>)|4=>4GG`BIUC3ngW17X?b^qatlqUiy;t6MF(m@ zJzRi_4oDWR^dC3HKWNk|k;4Z(52LglmAvny;vZ``8{{zm6<(vQj literal 0 HcmV?d00001 diff --git a/samples/encryption/base.xml b/samples/encryption/base.xml new file mode 100644 index 0000000..4b6954e --- /dev/null +++ b/samples/encryption/base.xml @@ -0,0 +1,23 @@ + + + + + +S +e +c +r +e +t +! + + + + +

+
+ + + + + diff --git a/samples/encryption/rc4-128.pdf b/samples/encryption/rc4-128.pdf new file mode 100644 index 0000000000000000000000000000000000000000..99beb75caf1ce5791d5580551db86fd5625be92f GIT binary patch literal 12738 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 literal 0 HcmV?d00001 diff --git a/samples/encryption/rc4-40.pdf b/samples/encryption/rc4-40.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2934a0450d7b760d67be8bac9444cfbdf92f49d3 GIT binary patch literal 12726 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