www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Support for zip decryption -- File attached

reply "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
I wrote a ziplib for use with another language (Blitz3D).  I made sure to
add decryption support so that I could encrypt my game data files with
winrar and still be able to extract them in the game.  I noticed that
std.zip didn't have any decryption support, so I added it.

It doesn't have any support for encryption (adding files to the archive and
encrypting them), but that might come later.

The attached file contains myzip.d, which is exactly the same as std.zip,
except that the ZipArchive.expand() function no longer throws an exception
if it finds an encrypted file, and it has an extra optional parameter - a
char[] for the password.  So to decrypt a file, you'd do something like..

ubyte[] data=zip.expand(zip.directory["test.txt"],"qwe");

Where "qwe" is the password.  Note that because of the way zip encryption
works, there is not necessarily a "right" or "wrong" password - use the
wrong password, and it'll decrypt the file into nonsensical garbage.

There is another file in the attached zip called message.txt.  Try
extracting it using the new expand() function with the password "walter".


begin 666 myzip.zip

M+ /^#QT
MBD7V"Z=[)-NY#X
MFE]D:[/F[GZ]:;-M:\[?+1MU,3MCX/?YF6;5;IK5MM$H].5+8]7NYA((5VT8
M>9[]^7:S?IVUM\TV6Z\RN]FL-]OSIT^RYR\] 5[*[3;[S^;^VS?:WK<-D'R9

MTR?OA]6^WNC;YA?[1WNG[*9?8K>]]5;=26/_W6ZV7I/+C)*+9-:^:3=2MX<)
MW%+>;-,AO;Z[W]BM9_BC;6_7)DYWR)Y_L]Y^URSMGYL[F[7P7\<.(&9ZHPN:

M?.<)2+=V;FO;?B[NTDH.AJBWK84A!.\BH0)K[BSZRIAPL/$;V<J)E&!FG J3
MZ'<+]+N1;_B?OZP;D^'$XB0.H=L<X9A;''M%82.??7[^?/OLQ]7Q&:KN/6=$


M)8A^9^8DQ)PS33V0I6+V&?).]&OC_?GHY<ML8[U)X%;-Z 82G\W\QXWUO& O
MJ+QJM^,P79F-U7]* Q!GIF'?C?[0RDW[39.,KW9WW_ILGB:!=MW*93H^&[I)

M5(S &1C&HQ^?2%+G\3\B[NO5MNU/A;^V4BWM%2WY]668OR)O2/QSEI$W546J
M M3<?[:66)Y3[3_7-:G+7$G_F53<:);79[ L<! N'1,..6I>R+(HD<-R5I>R
M0 YKE! %Q15JHY60+'!;8DI;YQ8Y*D--+01RU(HS315R6)576AE<H5*"&E(%


M0VQX03C7)J+F)'&%X8B.,$00XQ"U0G%+B49MF>9U3DK$QI2<L-Q&U"3E5957
M:%^A26&906V9(J [0VT-)4:4#JV3

M!FXM3%7F`N4J9PC/<UR/YHHY0!TYN"HTHXB-=DK691U14T(9L 77HX)0)6I$
MIW2D%(( :IH30%DA-BHGRM8THD8==Y46B$XIN& Z1]1T#EH8B7NO..?4%(A:
M=',2N$ET,/1482 E"NVSSI0YH8AFE:M<E (Q(%QQ5>8N>JI3SC*)]EFAA&$%
MVE<)4NE:HK;$$>+J`CVXYJ260D1/M3FQM<C1OLIQ26"KD$-PT)6BMG4.'JEK

M"4J$`]B0`_9!LQ+7XZ4BIM:(34Y59>LRHB:4LDI81,=I!=%=(6H`LLF-P9W,
M2R.I88B:T*:HM(N^YA1XL^:(&C.*\KQ$;0OIXU.CMK)0FI *K8.X506Q-'JJ


MEH"SYA$U71,-4.-Z9<6%*BEB0 EWHE2XGJHY-XR 5 UYVK(Z^AILG74U071H

M#ND

M^PK.CAK.$_3'$&XQ.XB*" G!A!YI20X1 :CQFG!-':[G*D[+JD2I O"2P[$4
MHZ3FNN 5RN66*\(MKN>L8;FJ<"=%;0H*&XTK$",KT#U

MKUS,#I
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
MY"1[]>H5Y+G(=M(!ZG_ 0[?=O7]9_J]>>J+%6;CKSO1(G: #N
M6$YWR_A?AHF 0??&)H[FUY?=A].!<*SC0+CH/H%A><&JJA1Y<>+S9B#T&'F*
MV\:UO51<E+*Q*#JG-_6J=MPSZM-4_3%RS:II`VYC7S#X_O/<9O;H%:1D>2UJ

MAY/^)'!=-=<G0XP-SOD.O'-M[*,>H2\U8)6X<C [J#JCP4GBLGJ,ZJ3*F50X
M?8WI4\V0V,,SMW67#PY6-
M0I<-Y62S!3_ 9SQW$CY "=YW[ND=](.%3&)6+,;GBIDQ'>_I'BYHQCRBYWFL
MIAES=>703%V3D+&)1I.*):$?M#E0WXRI:3S'YVJ<A"[B,EOG)(1B:(Z2[[^,
M6H?AO?-#W
M&3*$.[C]BQ?9MRL,=^C. H5=6SDB^=J W?[BY9_/L]\URV6SNMDN[=L0YZ.;

M(]]^OXE^FTKLW 'QL.%W^>#OMMTYYV_LP#TQ ?C$F7EX=O<=?#XI^^'N!.Q.
MHJX<.>N2<']B>,Q_\ ?&3U_E%/[O3XDNU6-ZGCYF^^EZHB,:E+V&;<6['1GS
M7#P
M,4B_^ND%G+*/V7N:4R [&2T'=J_ BU[#T2=7WLS( 9./OOT20P>[I_';+^/T
MUCE7`,'L[N-U5G=,SKT1DTKM7H+!^,M+[T<23IZ;1H<CRE__&N]4 _IX)CG(
M[_Y[HQWO/[79K=R&[T<Y!['A[T7\U='&_FW7;+KO3M$,2X%;"]WZ9N#VR8"%
M*8A;$+TY/VCL_&LY4"?/OIB#R$RRZIFW]>1CP$K?L3G8EGW0"S9'_?WBD5UN




MRB,921_=GD2.?C[?FX=E,KP.>-BN?A_.PM[LYC?D=\W-G$$[?R $4(%Q,&$6
M86^F/TNB(JA+VK;\.GYI>\C%716&0V/UNIXAE'F?WY]U7PKO\L?S$YPZ"ZS)
MX_'^&4QX5S'SCS?'5,/UQ*25^IS0-]EQ%-J[3G<5NP WY?Z&!M*2?\ 9GL$.

M<V%G92YT>'3073DF7*9]FP/YO:''XOB ;G0`CZ!)2 WU% XG8B<CX1IMZE!+
M!PCCS RB(P```!<```!02P$"% `4````" `N9I\Q[SJ/J!X4``"T0P``!P``
M```````!`" ` ($`````;7EZ:7 N9%!+`0(4``H`"0```$QGGS'CS RB(P``
M`!<````+``````````$`( "  4,4``!M97-S86=E+G1X=%!+!08`````` `"
+`&X```"?% ``````
`
end
Dec 31 2004
parent reply "Simon Buchan" <not a.valid.address.com> writes:
On Fri, 31 Dec 2004 13:01:29 -0500, Jarrett Billingsley <kb3ctd2 yahoo.com>
wrote:

 I wrote a ziplib for use with another language (Blitz3D).  I made sure to
 add decryption support so that I could encrypt my game data files with
 winrar and still be able to extract them in the game.  I noticed that
<snip> Heh... I hope your game isn't OSS :D
Jan 03 2005
parent reply "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
 Heh... I hope your game isn't OSS :D
Not to sound condescending, but opensource isn't really big in the Blitz3D community. In fact it's quite the opposite - just about everything has a price. Usually a small price, but a price nonetheless. Can't say as I'm too happy about it, but that's just because most of the people who use B3D were raised on shareware. I suppose I could break the mold and release my game as opensource, but then that'd defeat the purpose of my beautiful zip decryption ;) I didn't expect this addition to phobos to be that big, so I'm not that surprised that no one else has replied. Just curious, do you have any use for this?
Jan 03 2005
parent "Simon Buchan" <not a.valid.address.com> writes:
On Mon, 3 Jan 2005 17:26:27 -0500, Jarrett Billingsley <kb3ctd2 yahoo.com>
wrote:

 Heh... I hope your game isn't OSS :D
Not to sound condescending, but opensource isn't really big in the Blitz3D community. In fact it's quite the opposite - just about everything has a price. Usually a small price, but a price nonetheless. Can't say as I'm too happy about it, but that's just because most of the people who use B3D were raised on shareware.
Hmmm.....
 I suppose I could break the mold and release my game as opensource, but then
 that'd defeat the purpose of my beautiful zip decryption ;)
:D
 I didn't expect this addition to phobos to be that big, so I'm not that
 surprised that no one else has replied.  Just curious, do you have any use
 for this?
Probably not, but for a completionist point of veiw (or for a proof-of-concept extraction program or something) it's not as if it's pointless. In a predominantly OSS comunity like this (as most programming communities are) it is kind of pointless though, which may be part of the reason why it wasn't included in the first place. -- "Yes, the american troops have advanced further. This will only make it easier for us to defeat them" - Iraqi Information Minister Muhammed Saeed al-Sahaf
Jan 03 2005